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.
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
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
Ja, danke. Richtig. Nur Pin 3,4 sind n.c. sonst stimmt alles. Pullups sind aktiviert, funktioniert beim erstern mal auch wunderbar.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.