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)