Hallo Loosi,
sieh dir mal das Wiki zu dem Timer an, das ist eigentlich ganz simpel.
https://www.roboternetz.de/wissen/in...scom_und_Timer
ganz unten ist auch ein link zu einem Berechnungstool mit dem du ganz bequem, nach Angabe deines Taktes und der gewünschten Frequenz, die restlichen Einstellungen berechnen lassen kannst. Außerdem gibt er dir auch den benötigten Code mit aus, den du einfach in dein Programm einfügen kannst.
Bsp.:
Code:
'wenn mega 32, dann ändern in $regfile = "m32def.dat"
$regfile = "m16def.dat"
'Quarzfrequenz, entsprechend ihren Angaben
'der passende Quarz muss in die Fassung gesteckt werden
$crystal = 16000000
'Hier wird der Timer und der Teiler festgelegt
Config Timer0 = Timer, Prescale = 64
'Der Port mit der dritten LED auf RN-Control wird als Ausgang programmiert
Config Pinc.2 = Output
'Hier geben wir der Definition einen schöneren Namen
Led3 Alias Portc.2
'Hier wird das Unterprogramm festgelegt, das
'in dem von ihnen eingestellten Intervall aufgerufen wird
On Timer0 Timer_irq
'Diese Vorgabe wurde berechnet um die genaue Intervallfrequenz zu erreichen
Const Timervorgabe = 131
'Hier werden die Timer aktiviert
Enable Timer0
Enable Interrupts
'Hier ist die Programmhauptschleife
Do
'Hier könnte Ihr Hauptprogramm stehen
Loop
'Dies ist der Programmteil, der in dem von ihnen gewählten
'Intervall aufgerufen wird
Timer_irq:
Timer0 = Timervorgabe
'Hier könnte nun ihre beliebige IRQ-Routine stehen
'Dabei sollte man darauf achten das diese nicht mehr Zeit
'benötigt, als das Intervall zuläßt
'Der Zustand der LED wir umgekehrt, wodurch sich blinken in der halben Frequenz ergibt
'Hohe Frequenzen sind natürlich nicht mehr sichtbar
Toggle Led3
Return
Wenn du jetzt die LED mit einem Speaker ersetzt solltest du einen 1kHz Ton hören. So kannst du dann in gewissem Rahmen jede Frequenz erzeugen, die du magst.
mfg milkbubi
Lesezeichen