Forum: Mikrocontroller und Digitale Elektronik SAMWELL Tastatur von Pollin mit ATTiny2313


von Felix J. (feejai)


Lesenswert?

Habe folgendes Skript geschrieben welches die Tastatur von Pollin
auslesen soll:

  PORTA = 0x00;  //Pullups ausschalten an Pins A

  DDRA = (1<<PA1);  //PA1 als Ausgang ==> Masse an (1)
  scan1 = ( PIND | (1<<7));

  DDRA = (1<<PA0);  //PA0 als Ausgang ==> Masse an (2)
  scan2 = ( PIND | (1<<7));

  DDRA = 0x00;  //Alle Pins an A als Eingänge

Komischerweise funktioniert es beim Scan1 und beim 2. Mal nicht. Jemand
von euch ne Idee, woran das liegen könnte? Der PinA0 ist auch der XTAL1,
allerding habe ich die Standard Fuses nicht verändert, so dass der
interne Oszillator läuft.

von André K. (freakazoid)


Lesenswert?

Welche Tastatur? Ist es beabsichtigt, da0 bei 1<<PA0 PA1 im DDRA wieder
auf 0 geht (=Eingang?). DDRA = (1<<PA0) löscht nämlich PA1 wieder.

Grüße,
Freakazoid

von André K. (freakazoid)


Lesenswert?

So. Hab mal ein wenig gepollined *g*:
PORTD = 6..12 ?
PORTA = 1..4 ?

Sind Pullups bei PortD eingeschaltet?
Sonst hängt der Port bis auf den von der Tastatur auf Masse gezogenen
Pin ein wenig in der Luft.

Grüße,
Freakazoid

von Felix Jankowski (Gast)


Lesenswert?

Ja, danke. Richtig. Nur Pin 3,4 sind n.c. sonst stimmt alles. Pullups
sind aktiviert, funktioniert beim erstern mal auch wunderbar.

von Felix J. (feejai)


Lesenswert?

So, ich hab jetzt noch ein bisschen mit dem AVR rumgespielt. Ich glaube
mittlerweile wirklich, dass der µC-Pin kaputt ist. Er ist obwohl das im
Programm eindeutig anderst ist irgendwie immer Eingang und hängt in der
Luft.

von Felix J. (feejai)


Lesenswert?

Aslo hier für alle: Ich habe das Problem behoben indem ich zwischen DDRA
=... und scanx = ... noch ein
  asm volatile ("nop");
 eingeschoben habe. Offensichtlich ist der Chip zu schnell für den
Strom?!

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.