Hallo, ich hab gerade ein problem.. Laut Datenblatt hat der ATiny2313 4 PWM "Kanäle": OC0A, OC0B, OC1A, OC1B Hat einer vllt mal ein kleines Codebeispiel in C? Weil da komm ich im Moment irgendwie nicht so recht weiter... OC1A/OC1B funktionieren, aber irgendwie häng ich nun. Wär echt nett wenn mal jemand Zeit hätte um sich das anzuschauen. Das ganze ist für eine RGB-LED Matrix... ;) Viele Grüße, Johannes
"Hat einer vllt mal ein kleines Codebeispiel in C?" Sorry, hab ich etwas komisch formuliert...
Da kannst du doch einfach in der codesammlung oder im avr gcc tutorial gucken!? alternativ beschreiben, was du nicht verstehst / wo das problem ist ggf. zusätzlich dein programm hier reinstellen
Hallo, okay, hier erstmal der Code:
1 | #include <avr/io.h> |
2 | |
3 | int main(void) |
4 | {
|
5 | pwm_init(); |
6 | |
7 | OCR1AL = 10; |
8 | OCR1BL = 50; |
9 | |
10 | while (1) |
11 | ;
|
12 | }
|
13 | |
14 | void pwm_init(void) |
15 | {
|
16 | DDRB = 0xff; |
17 | |
18 | TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM10); |
19 | |
20 | TCCR1B = (1<<CS10); |
21 | }
|
Soweit geht ja auch alles... Nur wie spreche ich die PWM Kanäle OC0A und 0C0B an? Das schaffe ich eben nicht...
Gehören die nicht zum 8 bit Timer 0 ? Als ich vor einiger Zeit was mit dem t2313 gemacht habe, waren im Datenblatt ziemliche viele Bezeichnungen durcheinandergebracht, also gut aufpassen, dass da kein Quatsch steht.
Ich hab gerade mal im Datenblatt nachgeschaut, das ist ein 8bit Timer... hm.. Kann man mit dem überhaupt ein 10bit PWM Signal erzeugen?
Tja, Timer1 ist eben Timer1 und Timer0 und Timer0 ist eben Timer0. Du musst Timer1 und Timer0 halt separat programmieren / initialisieren. Register von Timer 1 (16Bit): TCCR1A TCCR1B TCCR1C TCNT1H und TCNT1L OCR1AH und OCR1AL (zusammengefasst: OCR1A) OCR1BH und OCR1BL (zusammengefasst: OCR1B) ICR1H und ICR1L (zusammengefasst: ICR1) Register von Timer 0 (8Bit): TCCR0A TCCR0B TCNT0 OCR0A OCR0B Gruß, Magnetus [Edit] Nein, man kann mit Timer0 keine 10Bit-PWM realisieren. [/Edit]
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.