Elektronická škrtiaca klapka: Rozdiel medzi revíziami
Z SensorWiki
(→Overenie) |
(→Algoritmus a program) |
||
Riadok 37: | Riadok 37: | ||
<tab name="AVR C-code"><source lang="c++" style="background: LightYellow;"> | <tab name="AVR C-code"><source lang="c++" style="background: LightYellow;"> | ||
#include <avr/io.h> | #include <avr/io.h> | ||
− | + | #include "uart.h" | |
+ | #define F_CPU 16000000UL | ||
+ | #define BAUDRATE 9600 | ||
+ | #include <stdio.h> | ||
+ | FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE); | ||
+ | |||
int main(void) | int main(void) | ||
{ | { | ||
+ | adc_init(); | ||
+ | hw_init(); | ||
+ | uart_init(); | ||
+ | stdout = &mystdout; // printf() works from now | ||
unsigned int measuredValue; | unsigned int measuredValue; | ||
− | while (1) | + | DDRD|=(1<<PD6); // Init PD5 and PD6 pins as output |
+ | |||
+ | |||
+ | //Initialize Timer0 | ||
+ | |||
+ | TCNT0=0; // Set Initial Timer value | ||
+ | |||
+ | OCR0A=0; // Set Initial Pulse width | ||
+ | |||
+ | |||
+ | //Set fast PWM mode + clear OC0A and set OC0B on compare match | ||
+ | |||
+ | TCCR0A|=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM01)|(1<<WGM00); | ||
+ | |||
+ | TCCR0B|=(1<<CS02)|(1<<CS00); // Set prescaller 1024 and start timer | ||
+ | |||
+ | while(1) | ||
{ | { | ||
− | + | measuredValue = adc_read(4); | |
+ | printf("hodnota: %04d \r",measuredValue); | ||
+ | |||
+ | OCR0A=measuredValue/4; | ||
} | } | ||
− | + | ||
return(0); | return(0); | ||
} | } | ||
+ | |||
</source></tab> | </source></tab> | ||
Riadok 63: | Riadok 92: | ||
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]] | Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]] | ||
− | |||
=== Overenie === | === Overenie === |
Verzia zo dňa a času 12:56, 15. máj 2024
Záverečný projekt predmetu MIPS / LS2024 - Meno Priezvisko
Zadanie
Zostrojte a naprogramujte ovladanie škrtiacej klapky pomocou plynového pedálu.
Literatúra:
Analýza a opis riešenia
Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami...
Nezabudnite doplniť schému zapojenia!
Algoritmus a program
Algoritmus programu je....
#include <avr/io.h>
#include "uart.h"
#define F_CPU 16000000UL
#define BAUDRATE 9600
#include <stdio.h>
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);
int main(void)
{
adc_init();
hw_init();
uart_init();
stdout = &mystdout; // printf() works from now
unsigned int measuredValue;
DDRD|=(1<<PD6); // Init PD5 and PD6 pins as output
//Initialize Timer0
TCNT0=0; // Set Initial Timer value
OCR0A=0; // Set Initial Pulse width
//Set fast PWM mode + clear OC0A and set OC0B on compare match
TCCR0A|=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM01)|(1<<WGM00);
TCCR0B|=(1<<CS02)|(1<<CS00); // Set prescaller 1024 and start timer
while(1)
{
measuredValue = adc_read(4);
printf("hodnota: %04d \r",measuredValue);
OCR0A=measuredValue/4;
}
return(0);
}
#include <avr/io.h>
void adc_init(void); // A/D converter initialization
unsigned int adc_read(char a_pin);
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:
Zdrojový kód: zdrojaky.zip
Overenie
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas.
Video:
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.