Hallo,
habe ein Programm zsuammenkopiert und angepasst für meine Uhr mit 4
7-Seg.anzeigen.
Funktioniert auch alles soweit, bis auf die Tasterabfrage. Und zwar wenn
ich den Taster an PD1 drücke, wird meine ausgegeben Uhrzeit um 256
erhöht.
Im Simulator ist das nicht der Fall. Ich finde aber auch einfach keinen
Fehler.
Weiterhin habe ich das Problem, dass wenn die Uhr bei 60 angekommen ist
weiterzählt, obwohl das ja eigentlich in der Mainloop verhindert wird.
Im Simulator funktioniert auch das aber auf dem µc wieder nicht,
seltsamerweise nur bei den Sekunden und bei Stunden un Minuten nicht.
Kann mir da bitte jemand weiterhelfen, bin nämlich am verzweifeln.
P.S.: Hab extra das ganze Programm reinkopiert, weil der Fehler ja
vielleicht an einer Stelle liegt, wo ich ihn überhaupt nicht vermute.
mfg
Nagut, jetzt sind 22 Downloads aber das nütz mir ja nichts.
Also im Programm ist zum Tasten entprellen die Routine von Peter
Danegger enthalten. Außerdem habe ich von ihm auch "die genaue Sekunde
ohne RTC".
Aber warum der Teil des Programms nicht funktioniert ist mir schon echt
ein Rätsel:
Deine Fragestellung ist mir nicht ganz klar.
Wie erhöht sich die Uhrzeit um 256? Das sind doch alles Bytes und die
können doch nur 0..255 sein.
Welche Stelle zählt über 60 hinaus? Stunden, Minuten oder Sekunden.
Wenn es im Simulator geht (das Programm sieht eigentlich so aus, als
könnte es gehen) und im realen Aufbau nicht, dann solltest du dir den
Unterschied zwischen realer Welt und Simulation überlegen.
Wie hoch ist die Interruptrate für das Tasten abfragen? Was passiert,
wenn man länger als einen Interrupt auf die Taste drückt usw.
Also die Sekunden gehen, die werden bei 60 nicht weitergezählt. Die
Minuten jedoch werden weitergezählt und die Stunden werden bei 24 auch
einfach witergezählt, was ja aber eigentlich das hier verhindert:
1
cpi minute, $3C
2
brsh _mai3
3
rjmp loop2
4
_mai3:
5
clr minute
6
inc hour
7
mov temp1, hour
8
cpi hour, $18
9
brsh clear
Wenn die Taste länger als einen Interrupt gedrückt ist, passiert
zumindest im Simulator auch nichts, es wird eben ganz normal erhöht.
Tasten werden über Timer2 abgefragt, der läuft mit Prescaler 1024 bei
8MHz.
> habe ein Programm zsuammenkopiert und angepasst für meine Uhr mit 4> 7-Seg.anzeigen.
Und jetzt sollen Andere die Fehler suchen?
Verwende doch bitte nur die Codeschnipsel, die Du auch genau verstehst.
Du musst zwar nicht jede Routine selbst schreiben, aber Du solltest sie
und das Zusammenspiel mit anderen Routinen verstehen. Wenn Du den
Überblick verlierst, ist das Projekt (momentan) eine Nummer zu groß für
Dich. Specke es ab, teste und debugge die Einzelmodule, und erweitere
das Programm langsam und systematisch.
Na den Überblick habe ich ja nicht verloren. Es ist nur das Problem, das
es im Simulator geht und in der Realität nicht. Und das ist eben mein
Problem, ich kann es nicht weiter nachvollziehen, warum es nicht geht.