Eingang einlesen

Gast #770770
Lesenswert?
• ▲
▼
Hallo,

der macht mich noch verrückt: ich versuche bei einem MEGA32 die Eingänge 
an Port C zu lesen. Aufgrund der aktivierten Pullups kann ich mit einem 
Taster den Eingang auf Masse ziehen. Nachmessen mit dem Multimeter 
ergibt 5 Volt am Eingang, wenn ich den Taster drücke 0 Volt. Allerdings 
interpretiert der  AVR die ganze Zeit, das die Taste gedrückt ist, auch 
wenn mir das Multimeter 5 Volt am Eingang zeigt. Was ist hier los?

---
schnipp

  DDRC  = 0x00;      // Register C: Input
  PORTC = 0xff;      // Pullups aktivieren

  while(1) {

// Tastenabfrage

// Rückwärts
    if (bit_is_clear(PINC,PINC5))
    {
      for (i=0; i<PRELL_ZEIT;i++)
      {
      }
      if (bit_is_clear(PINC,PINC5))
      {
        aktuelles_bild += 1;
      }
    }
schnapp

Gruß Marian
#777521
Lesenswert?
• ▲
▼
Hallo miteinander,

kann mir jemand sagen, warum diese Pin-Abfrage bei meinem Mega16
mit deaktivierten JTAG nicht funktioniert? Den Effekt habe ich nur
bei den JTAG-Pins, weil andere Port-C-Pins mit dieser Abfrage
funktionieren.

1
#define    taster_plus    (!(PINC & (1<<PINC5)))   
2

3
if(taster_plus)
4
{
5
   anzeige_loeschen();
6
   text_klein(12,3,"plus",1);
7
}

Diese Routine wird ständig aufgerufen, egal ob der Eingangspin C5 auf
H oder L liegt.

Hab selber leider keine Pins mehr frei, sonst wäre ich schon längst
ausgewichen.

Kann es sein, dass das Portpin evtl. defekt ist?
#777543
Lesenswert?
• ▲
▼
Oh, ganz vergessen, intere Pull-ups sind aktiviert mit:

PORTC |=  (1<<PC5);

Hab JTAG auch mal probehalber aktiviert, da das eh der TDI ist.

Dann funzt die Sache auch, allerdings wird die Funktion bis zu drei mal
hintereinander aufgerufen und auch einmal beim betätigen des Pins C6, 
allerdings sporadisch.
#777621
Lesenswert?
• ▲
▼
Fehlersuche beendet, ich kann keines der 4 JTAG-Pins weder mit H noch
mit L ansprechen (als Ausgang), egal, ob JTAG aktiv ist oder nicht.

Verdammt! Mein erster unschuldiger MegaXX, das arme Ding kann nichts
dafür, zum Glück funktionieren alle anderen Pins und Ports.

Danke aber trotzdem allen für die Hilfe.
#780076
Lesenswert?
• ▲
▼
Manchmal sieht man den Wald vor lauter Bäumen nicht und ich hab schon
fast an mir gezweifelt.

hatte in einem Programmteil noch

PORTC &= ~(1<<PC2); PORTC &= ~(1<<PC3);
PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC5);

stehen. Das Ganze ist wegen Testzwecken noch stehen geblieben und ich
hatte es nur vergessen zu löschen, bzw. auszukommentieren.

Kein Wunder, warum ich diese Pin's nicht als Ausgang verwenden konnte.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.