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
Könnte es sein, dass die alternative Portfunktion von PortC aktiv ist? Eingangspin 5 funktioniert, die anderen aber gar nicht...
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...
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.
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!
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.
1 | #define taster_plus (!(PINC & (1<<PINC5)))
|
2 | |
3 | if(taster_plus) |
4 | {
|
5 | anzeige_loeschen(); |
6 | text_klein(12,3,"plus",1); |
7 | }
|
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?
@ 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
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.
@ 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
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.
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.
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.
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
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.
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.