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):
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
Tast.c:
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;
}
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.
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