www.mikrocontroller.net

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


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
#include <stdio.h>
#include <avr/io.h>

int main(void)
{
  PORTC = 0xFF;  // Alle LEDs aus
  DDRC = 0xFF;  // C als Ausgang

  DDRA = 0x00;  // A als Eingang
  PORTA = 0xFF;  // Pullups aktiv

  while(1)
  {
    PORTC = ~PINA;
  }
}

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?????

Autor: test_it (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jtag fuse ?

Autor: Ben Richards (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Must noch ein Delayelement reinmachen

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher Prozessor?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: sam (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: PJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht mal mit einem Durchgangsprüfer am Stecker des Joysticks 
messen?

Autor: Gast (Gast)
Datum:

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

Autor: sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, hat funktioniert! Danke euch allen =)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.