Forum: Mikrocontroller und Digitale Elektronik Led und taster


von Marc (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
Habe seit kurzen ein AVR STK 500
Nachdem ich mal kurz Probiert habe die LED´s zum Leuchten zu bringen 
wollte ich jetzt das die LED´s über einen Taster geschaltet werden.
Sprich taster drücken led an. Aber egal was ich auch versuche es will 
einfach nicht klappen.

Gruß Marc

von Floh (Gast)


Lesenswert?

Schau ins AVR-Gcc-Tutorial hier auf der Seite.
Übrigends, Code als Dateianhang statt als Bild ist sinnvoller.
:-)

von spess53 (Gast)


Lesenswert?

Hi

Beim STK500 ist ein nicht gedrückter Taster H. ein gedrückter L. Und die 
LEDs leuchten bei L und sind bei H aus.

MfG Spess

von Marc (Gast)


Lesenswert?

Hallo,
in das Tutorial hab ich schon rein geschaut. Leider Verstehe ich da nur 
bahnhof und abfahrt. Hab schon einiges umgestellt aber entweder ist dann 
die LED aus und will auch nicht bei Tasten druck leuchten oder 
umgekehrt.

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Das PORTx-Register ist zum setzen eines Ausganges, oder für die Pullups. 
Du brauchst zum Einlesen eines Wertes von einem Port aber das 
PINx-Register. Also musst Du anstatt "k=PORTA" "k=PINA" schreiben.

PORT-Register: Zustand eines Ausganges setzen
PIN-Register: Zustand eines Einganges einlesen


Gruß
Jonathan

von Marc (Gast)


Lesenswert?

Hallo ja das ist mir klar das ein low an der led diese zum leuchten 
bringt.
und ein gedrückter Taster ein high rausgibt. aber egal wie es klappt 
nicht.

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Dein if-Konstrukt macht meiner Meinung nach nicht so viel Sinn. Versuch' 
doch das hier:
1
while (1)
2
{
3
  k=PINA;
4
  PORTB=k;
5
}

Das liest einfach den Zustand deiner Eingänge (die 8 Pins von Port A) 
ein und gibt sie direkt auf Port B aus.

Gruß
Jonathan

von Marc (Gast)


Lesenswert?

So hab das jetzt mal geändert.
Jetzt sind alle led´s aus, wenn ich einen Taster drücke passiert nichts.
Was ich nicht so ganz verstehe ist ich weise zwar einen port zu aber 
muss ich da nicht genau die pin zuweisen sprich PINDx und PORTx

von spess53 (Gast)


Lesenswert?

Hi

Mit K=PortA liest du den Port. Der Eingang ist aber PinA.

MfG Spess

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Mach doch einfach mal Copy&Paste und ersetze deine Hauptschleife durch 
die, die ich gepostet habe.

von Marc (Gast)


Lesenswert?

Hallo Jonathan,
hab es Probiert funktioniert einwandfrei.
Danke
warum hat das aber mit dem anderen nicht geklappt.

von Marc (Gast)


Lesenswert?

Hallo Spess,
ja das hatte ich geändert mit dem PortA auf pina aber das brauchte 
nichts.
Stimmt das vieleicht was in der schleife nicht

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Bei deiner ersten Version liest Du das Ausgangsregister (PORTx) aus. 
Dieses ist allerdings nur dazu da, den Zustand eines Ausganges zu 
schreiben, und nimmt nicht den wirklichen physikalischen Zustand deines 
Ports an. Wenn der Port als Eingang konfiguriert ist, kann man mit dem 
PORTx-Register die Pullups an- oder abschalten. Das PINx-Register 
repräsentiert dagegen den wirklichen physikalischen Zustand deines Ports 
und wird zum Einlesen vom Zustandes eines Einganges benutzt.

Kurz gesagt: PORTx zum Setzen eines Ausganges, PINx zum auslesen eines 
Einganges.

Gruß
Jonathan

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Marc schrieb:
> ja das hatte ich geändert mit dem PortA auf pina

Ach so. Das liegt dann an deinem komischen if-Konstrukt. Schau dir mal 
im AVR-Tutorial das Kapitel Bitmanipulation an.

von Marc (Gast)


Lesenswert?

Hallo Jonathan,
Ja das hatte ich auf PINA geändert, funktionierte trozdem nicht.
was ich aber jetzt gar nicht mehr verstehe ist das die LED´s brennen 
wenn ich den Taster Drücke. Den eine nicht Leuchtende LED hat 5 V 
anliegen und Leuchtet bei GND. Ein Taster hat erst bei der Betätigung 
5V.Das heißt im mom. wenn der Taster 5V rausgibt schaltet der MC auf GND 
der LED. Das müsste doch Negiert sein.

von Maddin (Gast)


Lesenswert?

..schauch auch mal in zB. diesem DB:

http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf

ab seite: 72 Kapitel 14. Da siehst du die Verschaltung von DDxn PORTxn 
PIN xn der Atmels.

Die Register für "in" und "out" sind bei Atmels anders als z.B. bei Pics 
zwei physikalisch unterschiedliche Adresse/Register.

Gruß,
M.

von spess53 (Gast)


Lesenswert?

Hi

>Ein Taster hat erst bei der Betätigung 5V.

Nein. Er hat L (GND).

MfG Spess

von Marc (Gast)


Lesenswert?

Nee ok es Passt habe gerade nachgemessen
Die LED Leuchtet Gegen GND
Der Taster gibt Betätigt GND raus.
doch keine Negierung
Danke

von Marc (Gast)


Lesenswert?

Hallo,
Also das was Jonathan gepostet hat war super aber wie weise ich jetzt 
die ports den ausgängen zu zum beispiel SW1 soll LED 5 schalten.

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Das wird im AVR-Tutorial (im Kapitel Bitmanipulation) doch erklärt...

Nur mal als Tipp:
1
if (PINA & (1 << 4))


Gruß
Jonathan

von Marc (Gast)


Lesenswert?

Hallo Jonathan,
Du bist der beste Danke.
Ja hab mir das auch schon alles durch gelesen. Allerdings sieht es so 
aus das ich mit MC noch nie was zu tun hatte.
Und somit auch nur bahnhof verstehe :-(

Gruß Marc

von Faisal U. (faisal_u)


Lesenswert?

Hallo

Ich bin neue hier,und würde fragen.Ist jemend hat schon Erfahrung oder 
Idea für Programmierung für AT3 Series Mikrocontroller von Firma 
GRAF-SYTECO.

Ich würde mein Erfahrung  und Program (C-codes)besprechen.Vielen dank 
und VG

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.