zdravim chcem sa spytat ci sa nejako nebudu bit registre ak chcem pouzit T0 a T1 ako pocitadlo a OC1A a OC1B ako pwm pre motory
Fórum › Mikrokontroléry
Atmega32 casovace
TIMER0 se s OC1A/B bit urcite nebude, je to jinej hardware.
TIMER1 s pocitadlem bude zalezet na tom, jestli ti bude sedet perioda PWM na interval preteceni pocitadla.
este sa mi stala taka nepochopitelna vecicka aspon pre mna ze mam cyklus
while (freq<=400){
dur=TCNT0;
freq =dur + tot_overflowp*255;
//itoa (freq,pozs,10);
//uart_puts(pozs);
//_delay_ms(50);
}
a ten cyklus akokeby ukonci az ked poslem cez uart udaje ak to tam nemam akokeby ani nevedel ze ta freq stupa ked zakomentujem posielanie tak ide do nekonecna
no tot_overflowp bych nasobil 256 - respektive posun o 8 bitu jako: (unsigned int)TCNT0 + (tot_ovflowp<<8)
tot_overflowp je nejspise v ISR, takze musi byt jako volatile unsigned char/int, jinak se to vyoptimalizuje do registru, a uz se na to nepodiva...
pozor na přetečení použitého datového typu. Pokud je tot_overflowp 8-bitový unsigned int, tak bude provádět 8-bitové násobení a výsledek bude 8-bitový, násobení číslem 255 povede k přetečení. Součin 2 osmibitových operandů může mít až 16 bitů. Řešením je zvolit vhodný datový typ pro proměnnou a nebo přetypovat.
hu
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
C# - Vypnutí PC pomocí časovače — založil Hoffik
C++, SDL - nespouští se callback funkce časovače — založil General
ATMega32 displej16x2 — založil Začátečník MEGA32
I2C na Atmega32 — založil Deko
Atmega32 fuses — založil jur3c
Moderátoři diskuze