Hallo!
Ich selbst bin relativ neu was Assembler angeht, da wir im Studium vor
etwa 4~ Wochen damit angefangen haben. Nun stehe ich vor der Aufgabe,
eine Bedarfsampel zu simulieren.
Dise kann entweder ausgeschaltet werden, sodass sie nur angeht wenn
jemand den Bedarfsknopf drückt und dabei über die Straße gehen möchte,
oder aber, bei ausgeschaltetem Nachtmodus, ständig grün für die Autos
anzeigt.
Dabei sind in PORTA die Bits 7-5 wie folgt definiert:
- Bit 7 ist der Bedarfstaster
- Bit 6 soll den Nachtmodus ausschalten
- Bit 5 soll den Nachtmodus anschalten
Die restlichen Bits 4-0 sind die Ampellichter.
Nun scheitere ich leider daran, den PinChangeInterrupt für diese 3 Bits
zu implementieren. Kann mich jemand auf den richtigen Pfad lenken?
Lass die Interrupts ganz weg, machen in dem Fall nur Probleme.
Programmier dir einen Timer. Z.B. alle 10ms, frage dort die Eingänge ab,
vergleiche mit dem vorigen Zustand und entscheide dann, was zu tun ist.
H.Joachim Seifert schrieb:> Lass die Interrupts ganz weg, machen in dem Fall nur Probleme.> Programmier dir einen Timer. Z.B. alle 10ms, frage dort die Eingänge ab,> vergleiche mit dem vorigen Zustand und entscheide dann, was zu tun ist.
Genau so sehe ich das auch. Für diese Anwendung ist die Verwendung von
Interrupts absolut kontraproduktiv.
Laut Aufgabe sind aber Interrupts vorgegeben. Und da unser lieber Herr
Prof uns kein Beispiel gegeben hat, wie man dies nun anstellt, steh ich
ein wenig auf dem Schlauch.
Und wie ich einen Timer programmiere weiß ich leider auch nicht.
Mal 2 kurze Fragen, sonst kann ich da eh nicht weiter helfen.
- Was ist ein Mega 655PA? Ich kann den nirgends finden, du meinst doch
sicher den 644PA.
- Ist das dein bisher gesamter Code?
Ich bau mal darauf auf, dass das alles ist. Um Interrupte rein zu
bekommen, muss du die auch zu lassen. Ein sehr beliebter Anfänger Fehler
ist, dass man gerne mal das SREG Register vergisst.
Leider kann ich die jetzt so ohne weiteres auch nicht mehr sagen, dann
bräuchte ich schon noch ein paar mehr Infos (Rest vom Code).
Mein Assembler ist leider auch nicht so gut, wobei ich schon lange was
mit einem Z80 plane. In dem Zuge erledige ich das dann. ;)
Gruß Domi
Danke für die Antwort. Nein, das ist nicht mein gesamter Code. Und ja,
ich meine den 644PA, das ist wohl ein Tippfehler.^^
Ich poste meinen gesamten Code mal lieber in
http://pastebin.com/bNGzqu8V.
Hilft das?