Ich habe hier das Problem, daß bei einem Atmega32, der mit 16MHz-Quarz betrieben wird, der Timer 0-Interrupt mit zu geringer Frequenz "läuft". Das bedeutet, daß die LED an PortD.6 mit weniger als 1 Hz blinkt, wobei ich dort ca 157 Hz erwartete. (16000000/1024/100) d.h. Takt/Vorteiler/100 Ich habe das Programm so weit abgemagert, daß man nur das dafür Nötige hat, um andere Fehlerquellen auszuschließen. CKLPTR hat der Atmega32 m.W. nicht. Ich habe aber weder einen 2. Kontroller noch einen Oszi hier, um zu messen, ob der Quarz schwingt. Fuses sind mit dem AVR-Studio gesetzt und stehen auf: High-Fuse:CF Low-Fuse:DF Sieht jemand den Fehler, den ich offenbar mache? Kopf kratz Paul '*** Testprogramm wegen dem Timer0 $regfile "m32def.dat" $crystal = 16000000 'systemtakt 16MHz = 16000000Hz Declare Sub Taster_1 'Declare Sub Taster_2 'Declare Sub Taster_3 'declariert die Subroutinen Config Portd.6 = Output Config Portd.5 = Output 'ausgänge festlegen Config Portd.2 = Input Config Portd.3 = Input Config Portd.4 = Input 'eingänge festlegen Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 'Pullup am Pind2-4 einschalten Dim Zaehler As Integer 'Timer0 einrichten Tccr0.cs00 = 1 Tccr0.cs02 = 1 'Prescaler=1024 Timsk.toie0 = 1 'Timer0 Überlauf Interrupt erlauben Sreg.7 = 1 'Interrupts global erlauben On Timer0 Tim0_isr 'Hauptprogramm '**************************************************************** Do Debounce Pind.2 , 0 , Taster_1 , Sub 'Test LED an PortD.5 Loop End '***Interrupt_Routine*************************************************** ******** Tim0_isr: Incr Zaehler If Zaehler = 100 Then Toggle Portd.6 Zaehler = 0 End If Return '*** Sub-Menue ***************************************************************** Sub Taster_1 Toggle Portd.5 End Sub
Paul Baumann schrieb: > (16000000/1024/100) DENKFEHLER ! Es muss 16000000/1024/256/100 heissen, da der Timerüberlauf erst nach 256 Counts statt findet.
Paul Baumann schrieb: > Das bedeutet, daß die LED an PortD.6 mit weniger als 1 Hz blinkt, wobei > ich dort ca 157 Hz erwartete. (16000000/1024/100) > d.h. Takt/Vorteiler/100 Weil deine Rechnung schlicht falsch ist. Da fehlt ein /256.
@Magnetus Mensch Danke! Och ich Rindvieh....so Etwas Blödes habe ich lange nicht mehr gemacht. MfG Paul
Paul Baumann schrieb: > @Magnetus > > Mensch Danke! Biddeschöön. > Och ich Rindvieh....so Etwas Blödes habe ich lange nicht mehr gemacht. Manchmal sieht man halt den Wald vor lauter Bäumen nicht...
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.