Alexj96
01.04.2013, 17:55
Hallo zusammen,
ich möchte mit einem Microcontroller (Atmega 32) eine IR-Led mit 36kHz anzusteuern. Dazu wollte ich einen Timer verwenden. Der Atmega 32 läuft mit dem internen 8Mhz Quarz.
Timer0 ist ein 8 Bit Timer, zählt also von 0-255, und verzweigt beim Überlauf in das Unterprogramm. Bei einem Prescaler von 1 wird das Unterprogramm also 31 250 mal pro Sekunde aufgerufen. Damit das Unterprogramm mit 72 000 Hz aufgerufen wird, muss der Timer also schon bei 145 starten. (8 000 000/ 111 = 72 072 256-111= 145) Im Unterprogramm wird dann der Zustand des Ausgangs zwischen low und high geändert und die Led sollte mit 36khz blinken.
Stimmt das soweit oder habe ich schon hier ein Verständnisproblem?
In Bascom habe ich das angefügte Programm geschrieben, allerdings messe ich jetzt mit einem Multimeter zwischen dem Pin D.5 und Masse des Atmega eine Frequenz von 23,4 khz. Wo liegt hierbei das Problem ? Oder hat mein Multimeter einfach eine "Macke" ?
An einem Atmega 8 habe ich das gleiche Problem, dieser läuft mit einem externen 8Mhz Quarz.
$regfile = "m32def.dat"
$crystal = 8000000
$framesize = 32
$swstack = 32
$hwstack = 32
Config Portd.5 = Output
Config Timer0 = Timer , Prescale = 1
Enable Timer0
On Timer0 Isr_von_timer0 '
Enable Interrupts
Timer0 = 145
Do
'....Hauptprogramm
Loop
End
Isr_von_timer0:
Timer0 = 145
Toggle Portd.5
Return
Ich hoffe ihr könnt mir weiterhelfen.
Im Voraus schon mal danke für eure Mühe:)
Alexj96
ich möchte mit einem Microcontroller (Atmega 32) eine IR-Led mit 36kHz anzusteuern. Dazu wollte ich einen Timer verwenden. Der Atmega 32 läuft mit dem internen 8Mhz Quarz.
Timer0 ist ein 8 Bit Timer, zählt also von 0-255, und verzweigt beim Überlauf in das Unterprogramm. Bei einem Prescaler von 1 wird das Unterprogramm also 31 250 mal pro Sekunde aufgerufen. Damit das Unterprogramm mit 72 000 Hz aufgerufen wird, muss der Timer also schon bei 145 starten. (8 000 000/ 111 = 72 072 256-111= 145) Im Unterprogramm wird dann der Zustand des Ausgangs zwischen low und high geändert und die Led sollte mit 36khz blinken.
Stimmt das soweit oder habe ich schon hier ein Verständnisproblem?
In Bascom habe ich das angefügte Programm geschrieben, allerdings messe ich jetzt mit einem Multimeter zwischen dem Pin D.5 und Masse des Atmega eine Frequenz von 23,4 khz. Wo liegt hierbei das Problem ? Oder hat mein Multimeter einfach eine "Macke" ?
An einem Atmega 8 habe ich das gleiche Problem, dieser läuft mit einem externen 8Mhz Quarz.
$regfile = "m32def.dat"
$crystal = 8000000
$framesize = 32
$swstack = 32
$hwstack = 32
Config Portd.5 = Output
Config Timer0 = Timer , Prescale = 1
Enable Timer0
On Timer0 Isr_von_timer0 '
Enable Interrupts
Timer0 = 145
Do
'....Hauptprogramm
Loop
End
Isr_von_timer0:
Timer0 = 145
Toggle Portd.5
Return
Ich hoffe ihr könnt mir weiterhelfen.
Im Voraus schon mal danke für eure Mühe:)
Alexj96