Ich möchte eine Tastermatrix-Abfrage machen. Leider habe ich festgestellt, dass es in C nicht so stabil läuft. z.B. DIe Taste erkennt er nur, wenn man noch ein Delay einbaut, oder den Port 2mal beschreibt. Hab die gleiche Routine in PIC-Assembler geschrieben, dort hat's wunderbar ohne zusätzlichem "Gebastel" funktioniert. TAR ist ein unsigned long (jedes Bit ist eine Taste) PORTD Output PORTB Input //Taster 1-4 abfragen: PORTD=0b11111110; // PORTD=0b11111110; <== mit dieser Zeile läuft's TAR=(TAR+(PORTB&0x0f)); // Wenn Eingang =0V => Taste gedrückt TAR=~TAR; // invertieren Hat jemand eine Idee was das Problem sein könnte? Bin dankbar für jeden Hinweis. Gruss Meiri Mein System: MPLAB 6.4 PICLITE PIC16F877/16MHz
Tippe mal, Du bist zu schnell ... Die Schaltung hat eine (zwar nur kleine) Kapazität. Deshalb braucht der Eingangspin ein paar ns, um auf den korrekten Pegel zu kommen. Ein paar nops dürften Dein Problem auch lösen. Oder ein langsamerer Quarz ;-) Stefan
Danke Stefan Hab den Assembler-Code von C mit dem Assembler-Code, den ich selber geschrieben habe verglichen. Im C-Code liest er unmittelbar nach dem er PORTD beschrieben hat PORTB ein. => zu früh. Vielen Dank für den Tipp Meiri
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.