Ich möchte 5 LEDs zählen lassen, dazu verwende ich einen 8 Bit Timer.
Das Ziel ist es eine Funktion mit 3Hz aufzurufen (ca 3 mal pro Sek)
Mein Chip taktet mit geringen 16kHz hinzu kommt ein Vorteiler von 1024
bedeutet mein Timer arbeitet mit 15Hz
Das ist auch richtig bis dahin, die LEDs blinken mit 15Hz nun kam ich
auf den Gedanken diese Funktion im Timer nur alle 5 mal aufzurufen.
Der Code auf Pastebin: http://pastebin.com/DYL4LH8A
Mein Problem ist, die LEDs leuchten dauerhaft als würde die Funktion
Loop nie aufgerufen werden.
Brutzel schrieb:> Mein Chip taktet mit geringen 16kHz
Sieht nach einem ATTiny 2313 aus - und der soll mit 16 kHz takten? Ich
habe da 8 MHz (Megahertz) per Default im Hinterkopf ...
Oh, Assembler - ein Fall für den C-Hater :-)
Brutzel schrieb:> Mein Chip taktet mit geringen 16kHz hinzu kommt ein Vorteiler von 1024> bedeutet mein Timer arbeitet mit 15Hz> Das ist auch richtig bis dahin, die LEDs blinken mit 15Hz nun kam ich> auf den Gedanken diese Funktion im Timer nur alle 5 mal aufzurufen.
Wie sorgst du denn dafür, daß dein Timer bei jedem Takt einen Overflow
bekommt?
> Mein Problem ist, die LEDs leuchten dauerhaft als würde die Funktion> Loop nie aufgerufen werden.
Was hat die Funktion Loop denn mit den LEDs zu tun? Sie beeinflußt diese
doch gar nicht. Nach der Initialiserung in main wird der Status der LEDs
nie wieder verändert.
Brutzel schrieb:> Ich möchte 5 LEDs zählen lassenLEDs können nicht zählen.
> dazu verwende ich einen 8 Bit Timer.
Der zählt. Eigentlich ist das nämlich ein Timer/Counter.
> Das Ziel ist es eine Funktion mit 3Hz aufzurufen (ca 3 mal pro Sek)
OK.
> Mein Chip taktet mit geringen 16kHz
Hoffentlich stimmt das... Aber immerhin: es wäre zumindest möglich.
Könntest du bitte die Hexwerte der Fuses posten, damit das überprüfbar
wird?
> Der Code auf Pastebin: http://pastebin.com/DYL4LH8A
Dieser Code wird sich sicher nicht übersetzen lassen. Da dürfte es
mehrere Fehlermeldungen hageln. Schon beim ersten Überfliegen des Code
würde ich folgende Fehler vorhersagen (sinngemäß in's deutsche
Übersetzt): "konnte Include-Datei nicht finden" und "unbekanntes Makro".
> Mein Problem ist, die LEDs leuchten dauerhaft als würde die Funktion> Loop nie aufgerufen werden.
Oder so schnell, dass du es mit deinen begrenzten Sehfähigkeiten als
Dauerlicht siehst...
Der code Lässt sich problemlos übersetzen, die 16khz stimmen in soweit,
dass ich als Takt 128kHz eingestellt habe, mit CKDIV8 was 16kHz ergibt,
dies lässt sich in soweit auch überprüfen.
Schreibe ich bei einem Timeraufruf nur:
inc leds
und gehe dann wieder raus, so blinken die LEDs mit 15Hz bzw sie Zählen
binär nun kann man argumentieren wie habe ich das kontrolliert, ganz
einfach die 3. LED stehend für das 3. bit Leuchtet ca 3,5mal Pro sek das
kann man Zählen.
Darum denke ich nicht, das die Leds mit einfügen meines Versuches
plötzlich so schnell blinken, dass ich nicht sehe.
Des weiteren denke ich, dass die Funktion Main immer nach Rückkehr des
Interrupt aufgerufen wird, das muss auch geschehen da ich es ja sehen
kann, wie sie mit 15Hz zählen.
Brutzel schrieb:> Des weiteren denke ich, dass die Funktion Main immer nach Rückkehr des> Interrupt aufgerufen wird, das muss auch geschehen da ich es ja sehen> kann, wie sie mit 15Hz zählen.
dein Hauptprogramm wird nur ein Mal gestartet und hängt dann in der
Schleife
END
JMP END
und bloß weil du ein Register mit leds bezeichnest leuchtet noch lange
keine (siehe Rolf)
ohne Worte schrieb:> dein Hauptprogramm wird nur ein Mal gestartet und hängt dann in der> Schleife> END> JMP END
Und genau hier würde jeder Assembler meckern, der was auf sich hält. END
ist keine Sprungmarke (dazu fehlt der Doppelpunkt), also würde es der
Assembler für ein Makro halten. Das ist aber nirgends definiert, also
würde es die Fehlermeldung "unbekanntes Makro" geben.
Und bitte spar dir den Mist mit pastebin.
Du kannst, darfst und sollst Code hier direkt posten.
Kurzen Code kannst du in dein Posting mit einbauen (bitte die
Codeformatiertags benutzen), längeren Code kannst du ganz einfach als
Dateianhang anhängen (so wie die Quellcodedatei ist, kein Umformatieren,
nicht als Word-Dokument, kein PDF, einfach nur die Datei).
1
.include "2313def.inc"
2
3
.def temp = r16
4
.def leds = r17 // Ausgaberegister
5
.def teiler = r18
6
.def counter = r19 // Was ist der Nächste Schritt der Scene