Hallo Forum,

ich hab noch mal ein Verständnisproblem, diesmal betrifft es die PollSwitch()-Funktion bzw. die el. Zweige zwischen Pin 5, Pin 27 und R23.

Zunächst: ASURO funktioniert, Selftest war erfolgreich (natürlich auch der Test für Taster K1-K6). Zudem hab ich die Zweige vorsichtshalber (bei gezogenem IC) noch mit einem Ohm-Meter überprüft und dabei keine Auffälligkeiten festgestellt.

Da ich mich für den AD-Wandler ein wenig näher interessierte schrieb ich ein simples Programm:

Code:
#include "asuro.h"

int main(void)
{
	// Variablendeklaration
	unsigned char taste;
	int zaehler;
	
	// µC wird in Grundzustand gebracht 
	Init(); 
	
	StatusLED(YELLOW);
		
	//Wartezeit 	
	for (zaehler=0; zaehler<3000; zaehler++)  
        {
	  Sleep (216) ;	  
	}
	
	StatusLED(RED);
	taste = PollSwitch();
	
	while(1);
	return 0;
}
Meine Erwartung war nun, dass Pin 5 zunächst Low-Pegel führt, bei Ausführung der PollSwitch()-Funktion (nach ein paar Sekunden) High-Pegel (wohl mit einem einfachen Multimeter nicht messbar) und dann wieder Low-Pegel. So steht es ja nach meinem Verständnis auch im Code von asuro.c

Code:
unsigned char PollSwitch (void)
{
(...)
DDRD |= SWITCHES;				// Switches as Output
SWITCH_ON;					// Output HIGH for measurement
(...)
SWITCH_OFF;
(...)
}
Der erste Befehl erzeugt die Bitfolge 11111100 im "Port D Data Direction Register" (DDRD), legt also die Richtung des Datenaustausches fest. Passt also. Mit dem 2. Befehl liegt an Pin 5 High-Pegel (via PORTD-Register).

Nun das Merkwürdige:

Messe ich mit einem Voltmeter zwischen Pin 5 (PD3) und Pin 8 (GND) so muss ich feststellen dass zuanfangs High-Pegel anliegt! Drücke ich dabei einen der Taster so stürzt die Spannung ab in den Keller, nahe 0 V. Dabei ist es egal welcher Taster betätigt wird, das Ergebnis ist bis auf wenige mV gleich.
Nach der von mir eingestellten Wartezeit, also bei Aufruf der PollSwitch()-Funktion, geht die Spannung auf 0 V - das kann ich mir durch den SWITCH_OFF Befehl erklären.

Ich grüble und Suche jetzt schon zwei Tage und bin noch noch nicht weitergekommen. Evtl. habt Ihr ja ein paar Tipps für mich

Gruß Swordfish