Forum: Mikrocontroller und Digitale Elektronik 3 Leds einschalten, mit 1 Taster ausschalten. (ATmega8)


von O. A. (sokrates1989)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche gerade eine Aufgabe zu realisieren mit AVR Studio 4.

Ich möchte 3 Leds zum Leuchten bringen. Das habe ich auch schon 
geschafft.

Aber ich weiß nicht wie ich sie mit einem Taster ausschalten kann. Mit 
dem Programm "Hapsim" habe ich schon verschiedene Programme 
simuliert...Ich schaffe es immer LEds zum leuchten zu bringen, aber eben 
nicht sie auszuschalten.

Unter Hapsim habe ich die Leds, und den Taster richtig konfuguriert.

ist mein Programm falsch?

Ich danke für jede Hilfe. (Anfänger)

von Ashoka (Gast)


Lesenswert?

Probier mal sbis statt sbic bei der Abfrage des Tasters.

von Stefan F. (Gast)


Lesenswert?

Ich habe keine Ahnung, was Hapsim ist. Ich würde den Debugger von AVR 
Studio 4.19 verwenden, der eignet sich tadellos für Assembler.

Dein Programm schaltet die Ausgänge auf Low, wenn der Taster-Eingang auf 
High geht. Passt das zu deiner Schaltung?

Der Taster muss an PB3 angeschlossen werden, ist das der Fall? Ich 
frage, weil eine auskommentierte Zeile auf PD3 verweist.

von Patrick (Gast)


Lesenswert?

Das ganze funktioniert in einer Simulation nur, wenn dein Taster auch 
entsprechend angeschlossen bzw. eine vernünftige Schaltung simuliert 
wird. Dein Programm löscht die zu Beginn eingeschalteten LEDs wieder, 
sobald am Tasterpin eine logische 1 anliegt, das heißt, dein Taster muss 
vom Eingang "nach Plus" geschaltet sein. Notwendig ist hier auch noch 
ein "Pull-Down-Widerstand", damit der Pin auf einem definiertem Pegel 
gehalten wird, wenn der Taster gerade nicht gedrückt ist und aus der 
Umgebung keinen Mumpitz einfängt. Wenn du in deinem Simulationsprogramm 
die Außenbeschaltung verändern kannst, dann versuche es mal mit einem 
solchen Widerstand. Möglicherweise spinnt die Simulation, wenn kein 
definierter Pegel anliegt.

Üblich ist zur Tasterabfrage aber, dass der interne Pullup aktiviert 
wird (man braucht keinen extra einlöten) und der Taster nach Masse 
schaltet. Das ist aber alles erstmal nur gemutmaßt, deine Schaltung hast 
du ja nicht mitgeliefert.

Die auskommentierte Zeile nimm mal wieder rein und ändere sie auf den 
richtigen Port (siehe Post von stefanus), damit schaltest du den Pullup 
ein, den Taster dann logischerweise nach Masse schalten lassen.
Dann mit SBIC und SBIS spielen, wie Ashoka schrieb, damit kannst du die 
Reaktion steuern, also ob bei low- oder highpegel am Eingang 
ausgeschaltet wird.
Kannst du mal einen Screenshot von der Simulation reinstellen? Also von 
der Außenbeschaltung des uC?

von O. A. (sokrates1989)


Lesenswert?

hey ich werde mir die antworten noch durchlesen.. bezüglich meiner 
schaltung, ich habe die hardware nur in der hochschule ..zuhause muss 
ich es mit "hapsim" simulieren.
 :(

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

hapsim -> http://www.helmix.at/hapsim/

https://www.mikrocontroller.net/articles/AVR-Simulation#HAPSIM

Benutze selber den Debugger im Studio (ebenfalls 4.??, da sich eine 
neuere Version nicht (in der VM unter Win7) installieren ließ.
Bisher nur Probleme, die vom Progger kamen ... :/ (Fehler 99: Der Fehler 
sitzt vor dem Gerät)

MfG

von Patrick (Gast)


Lesenswert?

Ostap A. schrieb:
> ich habe die hardware nur in der hochschule ..zuhause muss
> ich es mit "hapsim" simulieren.

Dann versuch es mal lieber an realer Hardware, so einer Simulation würde 
ich auch eher wenig vertrauen. Die Laboringenieure, die ich bisher 
kennenlernen durfte, haben auch wenig Probleme damit gehabt, wenn man 
mal "neben der Spur" vorbeigekommen ist, um bissel zu tüfteln :) 
Vielleicht leihen die dir auch was aus? Frag doch einfach mal nett nach.
Dein Programm sollte unter Berücksichtigung der hier gegebenen 
Vorschläge funktionieren, wenn nicht, dann ist es ein Hardwareproblem.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.