www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit dem einlesen bei AtMega128


Autor: Oliver Kra (Firma: TGM) (oliver1990)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich habe folgendes Problem:
Ich besitze ein ATMega128 testboard von Ribu und dieses hat ja am PortD 
4 Taster ausgeführt. Diese möchte ich jetzt zum testen einlesen, bzw. 
wenn sie gedrückt sind 4,5, etc ausgeben. Eigentlich ist ja das Programm 
relativ simpel, aber dennoch funktioniert es nicht.

Hier mal die Funktion zum einlesen:
void einlesen()
{  
  DDRD=0x00;
  int s=0;
  lcd_clrscr();
    lcd_puts("Bitte folgende  \n");
     lcd_puts("Waerte eingeben:");
  delayms(7000);
  lcd_clrscr();    
    lcd_command(0x0F);  //Cursor blinkend ein
    lcd_puts("Laenge von X:");
  lcd_gotoxy(7,1);
  delayms(1000);
  while(s!=0)
  {
  switch(PIND)
  {
    case 0x01:
      laengex[0]=0; lcd_putc('0'); s=1;
      break;
    case 0x02:
      laengex[0]=1; lcd_putc('1'); s=1;
      break;
    case 0x04:
      laengex[0]=2; lcd_putc('2'); s=1;
      break;
    case 0x08:
      laengex[0]=3; lcd_putc('3'); s=1;
      break;
    case 0x10:
      laengex[0]=4; lcd_putc('4'); s=1;
      break;
    case 0x20:
      laengex[0]=5; lcd_putc('5'); s=1;
      break;
    case 0x40:
      laengex[0]=6; lcd_putc('6'); s=1;
      break;
    case 0x80:
      laengex[0]=7; lcd_putc('7'); s=1;
      break;

  }
  }

}

laengex hab ich global als integer definiert. natürlich als array.

Bitte um schnelle Hilfe.

Danke schon mal im Voraus!

Lg Oliver

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wohin schalten die Taster ? Nach VCC ? Oder eher nach GND ? Wenn 
Letzteres, dann an's Einschalten der PUps gedacht ?

Wenn gewartet werden soll, bis eine Taste gedrückt ist, wäre bei der 
Logik hier eher while(s==0) angebracht.

Autor: Oliver Kra (Firma: TGM) (oliver1990)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MWS schrieb:
> Wohin schalten die Taster ? Nach VCC ? Oder eher nach GND ? Wenn
> Letzteres, dann an's Einschalten der PUps gedacht ?
>
> Wenn gewartet werden soll, bis eine Taste gedrückt ist, wäre bei der
> Logik hier eher while(s==0) angebracht.

Auf VCC.

Sry, peinlich! Da hab ich mich vertippt gehabt.

Vielen dank für die schnelle Antwort!

Aber jetzt hab ich folgendes Problem, auf den Pins 0-3 hängt ein 
Optokoppler wobei am Eingang null anliegt, was auch eine LED davor 
nochmal bestätigt. Nur wenn ich in der Case Anweisung nicht maskier mit 
&0xF0, dann gibt mir mein LCD 2 aus, was ja bedeutet, dass am PD1 HIGH 
anliegt.
Weis du da vl auch eine Lösung?

Danke nochmal!

Lg oliver

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Optokoppler an vier Ports ? Oder eher an PD1 ? Wenn der klassisch 
geschaltet ist, mit Emitter nach GND und Widerstand von Collector nach 
VCC, dann ergibt das im ausgeschalteten Zustand einen High-Level.
Maskieren würde Sinn machen, denn wenn auf den Optokoppler reagiert 
werden soll, so stört/blockiert der dann natürlich die Tasterabfrage.

Autor: Oliver Kra (Firma: TGM) (oliver1990)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem hab ich schon selber gefunden. Der PD2 hängt am MAX232 für 
die RS232. Das heißt ganz einfach ich sollte ihn auslassen. Jetzt muss 
ich anfangen zum Pin sparen :-( gg


Aber echt vielen Dank für die schnellen Hilfen immer. Tut mir leid, dass 
es so blöde Fehler waren.
Ist hier echt ein super Forum.

Lg

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.