Ok hab das programm umgeschrieben, dass die ISR nicht gestartet ist lag daran dass die mit IR von Timer0 verbunden war. und ich wollte ja OC0 nutzen.![]()
Und zum 2. Problem ich wollte ja eine veränderliche Spannung am Ausgang
Und diese ist ja abhängig von der relativen Einschaltdauer, das Problem bei CTC mit Toggle OC0 ist, dass die Einschaltdauer immer bei 50% ist.
Zum Sreg.7 das liegt daran, dass ich heute mit dem Handbuch gearbeitet habe und mit den Befehlen von Bascom noch nicht so vertraut bin. Ich werds aber versuchen hier im Forum zubeachten.
So und als Beweiß mein PWM-Programm:
die Ocisr ist nicht nötig und hat im Fast-PWM-Modus die selbe Periodendauer wie die Timerisr, nur um OCR0 phasenverschoben.
danke für eure HilfeCode:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 'Quarzfrequenz $baud = 9600 Dim I As Integer Dim J As Integer Enable Interrupts 'interrupts global zulassen On Oc0 Ocisr 'Interrupt bei compare match OCR0=TCNT0 'On Timer0 Timerisr Tccr0 = &B01101101 'FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 'WGM=3 Fast PWM 'COM=2 Clear OC0 on compare match 'CS0=5 prescaler 1024 Timsk.ocie0 = 1 'aktiv compare match interrupt Timsk.toie0 = 0 'deaktiv Timer0 Overflow interrupt Ocr0 = 200 Ddrb.3 = 1 Do Loop End Ocisr: J = J + 1 J = J Mod 1000 If J = 0 Then Print "interrupt oc" 'ausgabe aller 2^8*1000*1024/16Mhz End If Return 'Timerisr: 'I = I + 1 'I = I Mod 1000 'If I = 0 Then ' Print "interrupt timer" 'End If 'Return![]()







Zitieren

Lesezeichen