Witam Walczę z następujacym problemem. Potrzebuję wygenerować ciąg imulsów o regulowanym czasie trwania (w przykładzie 10ms) i stałej przerwie 0,1ms. Wykombinowałem sobie, że wręcz idealne do tego będzie PWM. Z tego co wyczytałem z pdf-a to TIMER1 w trybie WGM13=15 działa w następujący sposób:
- TCNT1 liczy w górę
- gdy TCNT1 = ORC1B następuje ustawienie wyjścia OC1B
- gdy TCNT1 = OCR1A następuje zerowanie TCNT1 i oczywiście skasowanie wyjscia OC1B
- GOTO 1 :-)
niestety taki fragment kodu odpala TIMER1 w trybie PWM-10bit i licznik liczy se w górę i w dół, w górę i w dół... jak na typowe PWM przystało (przynajmniej tak pokazuje VMLAB3.10 i AVR-Studio4), a wartość OCR1A jest w tym przypadku bez znaczenia.
OCR1A = 10000; // czas impulsu (zmienny) OCR1B = 100; // czas przerwy (stały) TCCR1A = (1<<COM1B1)|(1<<COM1B0)|(1<<WGM11)|(1<<WGM10); TCCR1B = (1<<WGM13)|(1<<WGM12)|(1<<CS11); // CK/8 OSC=8MHz
Czy ktoś z Szanownych Grupowiczów wie jak to ugryźć ? czy źle zintrerpretowałem dokumentację...