Hallo zusammen,
ich versteh hier grad nicht warum die PullUps am PORTC des Atmega32 sich nicht aktivieren lassen. Bei den Fuses ist Jtag ausgeschaltet (Im AVR8BurnOMat: Kein Haken bei Jtagen.
Der Code (Tast.h):
Tast.c:Code:#ifndef _TAST_h_ #define _TAST_h_ void TAST_INIT (void); char TAST1 (void); char TAST2 (void); #define TAST_PORT PORTC #define TAST_DDR DDRC #define TAST_PIN PINC #define TAST_1 ( PIN 0) #define TAST_2 ( PIN 1) #define PIN 1<< #endif
Mein Hauptprobramm ruft jetzt erst TAST_INIT() auf, und stellt dann die Rückgabewerte von TAST1() und TAST2() auf einem LCD dar. Das funktioniert auch hervorragend.Code:#include "TAST.h" #include <avr/io.h> void TAST_INIT (void) { TAST_DDR &= ~(TAST_1 | TAST_2); // PC0 und PC1 auf Eingang TAST_PORT |= TAST_1 | TAST_2; // PC0 und PC1 Pullups aktivieren } char TAST1 (void) { return (TAST_PIN&TAST_1)&&1; } char TAST2 (void) { return (TAST_PIN&TAST_2)&&1; }
Meine Taster sind jetzt auf GND verbunden. D.h. unbetätigt (Schließer) sollte eine 1 rauskommen, betätigt eine 0. Wenn ich den Taster nicht drücke, zeigt er 1 an. Wenn ich den Taster drücke 0. Wenn ich den Taster wieder loslasse zeigt er die 1 erst wieder nach ca. 5 sec an. (Durch die Innenbeschaltung fließt ja etwas Strom in den Eingang -> quasi extrem hochohmiger Pullup).
Und wenn ich die 2 Pins berühre springen dir 0er und 1er nur so rum.
-> Offene Eingänge -> Pullups gehen nicht.
Aber warum??
Viele Grüße und vielen Dank schonmal
-schumi-
PS: Am PORTB hat das mit den Pullups auf Anhieb perfekt funktioniert (Dort werden Drehgeber ausgewertet, das oben sind die Taster in den Drehgebern)
Lesezeichen