-
-
Erfahrener Benutzer
Roboter Genie
Hallo nase,
ich halte es für leicht nachvollziehbar, dass du nicht über 4KHz hinauskommst.
Der Aufruf der Timer ISR, die Befehle in der ISR und der Rücksprung ins Programm benötigen 125 Takte. Da du togglest, also 250 Takte für eine volle Periode. Macht bei 1MHz/250 = 4KHz.
Taktwert > 195 führt übrigens dazu, dass die Frequenz wieder kleiner wird.
Ich sehe zwei Möglichkeiten, die Frequenz zu erhöhen:
1. Du rufst die Timer ISR mit der Nosave Option auf. Dann musst du wissen, welche Rehister für deinen Code gebraucht werden. Diese musst du dann von Hand pushen und poppen.
2. Du erzeugst die Ausgabe mittels eines Timers im CTC Mode. Dann kannst du bis auf halbe Taktfrequenz kommen. Dabei sind allerdings nur bestimmte Frequenzen möglich (1/2, 1/4, 1/6, ...). Und du musst den zugehörigen Pin frei haben.
Dafür geht das Ganze rein in Hardware, also ohne den µC zu belasten. Will heißen, dein Programm hat noch 100% der Rechenzeit zur Verfügung.
@Sauerbruch: warst du ein paar Sekunden schneller. Geht übrigens in Bascom so:
Config Timer0 = Timer , Clear Timer = 1 , Compare = Toggle , Prescale = 1
in OCR0 setzt du dann den Wert, bei dem getoggelt werden soll.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen