Witam
Trzeci dzień usiłuje skonfigurować PWM na timer1 a i b i nie wiem jak to zrobić. Konfiguracja na timer 0 i 2 przeszła bez problemu a tutaj jakoś nie chce. Mam skonfigurowany timer, wydaje mi się ze dobrze, więc proszę powstrzymać się od odsyłania mnie do dokumentacji. Chodzi mi po prostu o to w jaki sposób zapisać wartość zadaną. Rejestr OCR1A/B składa się z 16 bitów a ja mam PWMa 8 bitowego. Gdzieś wyczytałem że pozostałe bity są maskowane a u mnie jakby nie były. Poniżej zamieszczam przykładowe wyniki otrzymane dla zadanych wartości napięć i konfigurację timera. PWM powinien działać w trybie fast PWM 8 bitów, tak też ustawiłem rejestr TCCR1A(B). Proszę o odpowiedź w jaki sposób (do jakiego rejestru) wpisać wartość która ma być generowana, ewentualnie co pozmieniać, co mam źle. Zaznaczam że chcę wykorzystać oba kanały zarówno A jak i B.
zadana [V] | na wyjściu [V]
0 | 5
0,5 | 3,2
1 | 1
1,5 | 2
2 | 3
2,5 | 5
3 | 2
3,5 | 3,5
4 | 4
4,5 | 3
5 | 0
Trzeci dzień usiłuje skonfigurować PWM na timer1 a i b i nie wiem jak to zrobić. Konfiguracja na timer 0 i 2 przeszła bez problemu a tutaj jakoś nie chce. Mam skonfigurowany timer, wydaje mi się ze dobrze, więc proszę powstrzymać się od odsyłania mnie do dokumentacji. Chodzi mi po prostu o to w jaki sposób zapisać wartość zadaną. Rejestr OCR1A/B składa się z 16 bitów a ja mam PWMa 8 bitowego. Gdzieś wyczytałem że pozostałe bity są maskowane a u mnie jakby nie były. Poniżej zamieszczam przykładowe wyniki otrzymane dla zadanych wartości napięć i konfigurację timera. PWM powinien działać w trybie fast PWM 8 bitów, tak też ustawiłem rejestr TCCR1A(B). Proszę o odpowiedź w jaki sposób (do jakiego rejestru) wpisać wartość która ma być generowana, ewentualnie co pozmieniać, co mam źle. Zaznaczam że chcę wykorzystać oba kanały zarówno A jak i B.
zadana [V] | na wyjściu [V]
0 | 5
0,5 | 3,2
1 | 1
1,5 | 2
2 | 3
2,5 | 5
3 | 2
3,5 | 3,5
4 | 4
4,5 | 3
5 | 0
; PWM konfiguracja
ldi
r16,((1<<COM1B0)|(1<<COM1B1)|(1<<COM1A0)|(1<<COM1A1)|(1<<WGM10))
out TCCR1A,r16
ldi r16,((1<<CS10)|(1<<WGM12))
out TCCR1B,r16
; w r24 i r25 znajdują się wartości które chcę generować (wypełnienie 8-bitowe)
ldi r16,255
out OCR1AL,r24
out OCR1AH,r16
out OCR1BL,r25
out OCR1BH,r16