frankne
09.08.2007, 16:10
Hallo,
ich hab mir heute ein kleines Programm zusammen geschrieben, welches mit Timer0 laufen soll. Ausgabe soll über OC0 und Terminalprogramm laufen.
Ich sitze jetzt hier schon ne ganze Weile dran, kann aber den Fehler nicht finden, wäre nett wenn sich jemand von euch das mal anschaut.
Hier der Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Sreg.7 = 1
'Interruptsglobal zulassen
On Timer0 Timerisr
Tccr0.foc0 = 0 'force output compare deaktiv
Tccr0.wgm00 = 0 'CTC-Mode
Tccr0.wgm01 = 1 'clear timer on compare
Tccr0.com00 = 1 'OC0 umschalten sobald
Tccr0.com01 = 0 'TCNT0 = OCR0
Tccr0.cs02 = 1 'clk/1024 Prescaler
Tccr0.cs01 = 0
Tccr0.cs00 = 1
Timsk.ocie0 = 1 'aktiv compare match interrupt
Timsk.toie0 = 1 'aktiv Timer0 Overflow interrupt
Ocr0 = 100
Ddrb.3 = 1
Do
Print "lebe noch"
Print Tccr0
Print Timsk
Print Ocr0
Wait 2
Loop
End
Timerisr:
Print Ocr0
Return
1. zwischen OC0 und GND müsste ich doch jetzt etwa 2v messen können?
2. es müsste mir sehr oft der wert von OCR0 übers terminalprogramm ausgegeben werden
Extra-Frage: im handbuch hat der Timer0 2 interrupt, bei bascom hab ich aber immer nur den IR: Timer0 gefunden was ist mit dem 2.?
ich hab mir heute ein kleines Programm zusammen geschrieben, welches mit Timer0 laufen soll. Ausgabe soll über OC0 und Terminalprogramm laufen.
Ich sitze jetzt hier schon ne ganze Weile dran, kann aber den Fehler nicht finden, wäre nett wenn sich jemand von euch das mal anschaut.
Hier der Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Sreg.7 = 1
'Interruptsglobal zulassen
On Timer0 Timerisr
Tccr0.foc0 = 0 'force output compare deaktiv
Tccr0.wgm00 = 0 'CTC-Mode
Tccr0.wgm01 = 1 'clear timer on compare
Tccr0.com00 = 1 'OC0 umschalten sobald
Tccr0.com01 = 0 'TCNT0 = OCR0
Tccr0.cs02 = 1 'clk/1024 Prescaler
Tccr0.cs01 = 0
Tccr0.cs00 = 1
Timsk.ocie0 = 1 'aktiv compare match interrupt
Timsk.toie0 = 1 'aktiv Timer0 Overflow interrupt
Ocr0 = 100
Ddrb.3 = 1
Do
Print "lebe noch"
Print Tccr0
Print Timsk
Print Ocr0
Wait 2
Loop
End
Timerisr:
Print Ocr0
Return
1. zwischen OC0 und GND müsste ich doch jetzt etwa 2v messen können?
2. es müsste mir sehr oft der wert von OCR0 übers terminalprogramm ausgegeben werden
Extra-Frage: im handbuch hat der Timer0 2 interrupt, bei bascom hab ich aber immer nur den IR: Timer0 gefunden was ist mit dem 2.?