Forum: Mikrocontroller und Digitale Elektronik Warum funktionieren Taster plötzlich nicht mehr?


von Gast (Gast)


Lesenswert?

Hi Leute,

ich habe ein total blödes Problem und absolut keine Ahnung was daran 
Schuld ist oO.

Ich möchte einfach nur ein Programm haben, bei dem ich eine Taste drücke 
und dann eine LED leuchtet... (Oder vonmiraus auch andersrum, dass sie 
aufhört zu leichten!)
Ich weiß das ist ein ganz einfaches Problem und ich habe früher auch 
genug Programme geschrieben, mit dennen ich LEDs mit Taster einschalten 
kann. Allerdings funktioniert jetzt keines mehr!
Hier mal der Code...
1
#include <stdio.h>
2
#include <avr/io.h>
3
4
int main(void)
5
{
6
  PORTC = 0xFF;  // Alle LEDs aus
7
  DDRC = 0xFF;  // C als Ausgang
8
9
  DDRA = 0x00;  // A als Eingang
10
  PORTA = 0xFF;  // Pullups aktiv
11
12
  while(1)
13
  {
14
    PORTC = ~PINA;
15
  }
16
}

Jetzt sollten doch die LEDs an Port C leuchten, wenn ich an PIN A 
irgendwo draufdrücke. Aber da tut sich absolut nichts!

Mein eigentliches Ziel ist es, mit einem Joystick in einem Programm auf 
dem Display weiter zu schalten, aber es funktioniert ja nicht einmal so 
ein kleines Programm mit den Tasten... (auch nicht mit dem Joystick...)
Hat jemand Ideen?????

von test_it (Gast)


Lesenswert?

jtag fuse ?

von Ben Richards (Gast)


Lesenswert?

Must noch ein Delayelement reinmachen

von Gast (Gast)


Lesenswert?

jtag fuse ist gesetzt. Muss ich das löschen???

Und warum muss ich da ein delay einbauen? Der nimmt doch automatisch den 
Wert und übergibt ihn gleich wieder...sprich die LED sollte Leuchten 
solange ich auf Taster drücke...

von Karl H. (kbuchegg)


Lesenswert?

Welcher Prozessor?

von Karl H. (kbuchegg)


Lesenswert?

Gast wrote:
> jtag fuse ist gesetzt. Muss ich das löschen???

Solange jtag aktiviert ist, sind einige Pins am Port C mit einer 
Sonderfunktion belegt, sodass der Port nicht mehr normal zu gebrauchen 
ist.

> Und warum muss ich da ein delay einbauen?

Vergiss den delay. Dein Programm ist so als Testprogramm in Ordnung.

von sam (Gast)


Lesenswert?

wenn es sich hier um einen Atmel µC handelt, hat der vielleicht gar 
keinen PINA?
bzw. ist durch den XTAL belegt.

von Gast (Gast)


Lesenswert?

Ok danke, jetzt schaffe ich es zumindest, mit dem Taster vom STK500 die 
LED zu schalten.

Allerdings möchte ich das ganze mit dem Joystick auch schaffen!
Beim STK500 Taster ist es so:
ungedrückt: 5 V
gedrückt: 0 V


bei meinem Joystick:
ungedrückt: 0 V
gedrückt: 5 V


Jetzt sollte doch das gleiche Programm nur durch den Austausch der 
Taster gleich funktionieren, nur mit dem Unterschied, dass die LED 
verkehrt herum funktioniert... Tut sie aber nicht! Warum?

Sprich wenn ich jetzt den STK500 Taster drücke, geht die LED aus.
Dann sollte doch die LED auch ausgehen, wenn die den PIN auf Joystick 
umstecke... tut sie aber nicht. Und beim drücken tut sich auch nix.

Kann mir das jemand erklären?

von PJ (Gast)


Lesenswert?

Vielleicht mal mit einem Durchgangsprüfer am Stecker des Joysticks 
messen?

von Gast (Gast)


Lesenswert?

Habe ich schon gemacht. Wie gesagt, ungedrückt liegen 0V an, gedrückt 
5V.

von sam (Gast)


Lesenswert?

ich vermute, dass bei dem joystick nicht 0V, d.h. GND anliegt sondern 
der kontakt offen ist ... durch den aktivierten PULL-UP wird das dann zu 
5V

PULL-UP deaktivieren würde ich mal versuchen

von Gast (Gast)


Lesenswert?

Danke, hat funktioniert! Danke euch allen =)

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.