mikrocontroller.net

Forum: Compiler & IDEs Eingang einlesen


Autor: Ole (Gast)
Datum:

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

Autor: Ole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es sein, dass die alternative Portfunktion von PortC aktiv ist? 
Eingangspin 5 funktioniert, die anderen aber gar nicht...

Autor: Ole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es sein, dass die alternative Portfunktion von PortC aktiv ist? 
Wie kriege ich die wieder aus? Eingangspin 5 funktioniert, die anderen 
aber gar nicht...

Autor: Der Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht ist die Prellzeit zu klein?

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

Bewertung
0 lesenswert
nicht lesenswert
Ole wrote:
> Könnte es sein, dass die alternative Portfunktion von PortC aktiv ist?
> Wie kriege ich die wieder aus? Eingangspin 5 funktioniert, die anderen
> aber gar nicht...

Schalte das JTAG Interface aus. Das ist standardmässig auf ein.

Autor: Ole (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RICHTIG! Oh mann, ich habe gerade selber schon wie blöde rumgesucht, bis 
das ich die Fusebits gefunden habe. Jetzt ist es ganz easy.

TKX!

Autor: Sven L. (friemler)
Datum:

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

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

if(taster_plus)
{
   anzeige_loeschen();
   text_klein(12,3,"plus",1);
}

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?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Türlich kann der kaputt sein. Schau aba lieber nochmal genau nach deinem 
JTAG.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sven L. (friemler)

>Kann es sein, dass das Portpin evtl. defekt ist?

Ist das Pin als Eingang geschaltet? Ist der interne Pull-Up aktiviert 
oder ein externer Pull-Up vorhanden?

MfG
Falk

Autor: Sven L. (friemler)
Datum:

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

Autor: Sven L. (friemler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ist das Pin als Eingang geschaltet?

ganz vergessen: JA

Autor: Sven L. (friemler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ALs Brenner benutze ich Yaap, nur noch so als Hinweis.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sven L. (friemler)

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

>Dann funzt die Sache auch,

Was meinst du damit? Dass es MIT aktivierten JTAG funktioniert, OHNE 
aber nicht? Kann es sein, dass du die Polatität des Fusebits verdreht 
hast?

AVR-Fuses

MFG
Falk

Autor: Sven L. (friemler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Häckchen bei Yaap bedeuted nicht gesetzt. Seltsam, ist aber so.

Wenn ich dieses entferne, also JTAG setze, dann funktioniert es auch,
allerdings mit den oben genannten Erscheinungen.

Autor: Sven L. (friemler)
Datum:

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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute mal du hast vergessen die Fuses wieder zu programmieren. 
Klingt irgendwie unwahrscheinlich, dass der AVR kaputt ist. Soo 
schnell/einfach geht das jetzt auch wieder nicht.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven L. wrote:
> 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.

Schau mal ins Datenblatt.
Du kannst JTAG auch per SW deaktivieren (2 OUT-Befehle), dann ists 
wurscht, wie die Fuses sind.


Peter

Autor: Sven L. (friemler)
Datum:

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

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.