hallo

brauche mal Hilfe

Ich kann eigentlich nur Flowcode und bin dabei mich etwas in C einzuarbeiten.

Ich habe ein Projekt nachgebaut siehe hier ( http://www.elektronik-labor.de/Projekte/TPS11.html )

Die angeblich fehlenden Klammern habe ich zugefügt aber

Die Eingänge schalten bei Berührung der Klemmen wie sie wollen wenn ich den Eingangsport E1-E3 auf den

Ausgangsport A1 - A3 lege

Wenn ich externe Pullups anschliesse geht es wie es soll.

Wer kann mir sagen wass ich Depp falsch mache ?


Das komplette Programm ist auf der Webseite zu sehen


Zuweisung

// Ausgänge
PORTA &= ~(1<<A1) | (1<<A2) | (1<<A3) | (1<<A4); // alle Ausgänge aus
DDRA |= (1<<A1) | (1<<A2) | (1<<A3) | (1<<A4); // als Ausgänge setzen


// Tasten
PORTB |= (1<<S1) | (1<<S2) | (1<<PINB6); // Pull up Widerstände an
DDRB &= ~(1<<S1) | (1<<S2) | (1<<PINB6); // als Eingänge setzen


// Eingänge
PORTA |= (1<<E1) | (1<<E2) | (1<<E3) | (1<<E4); // Pull up Widerstände an
DDRA &= ~(1<<E1) | (1<<E2) | (1<<E3) | (1<<E4); // als Eingänge setzen



Ausgangszuweisung


if (kom == 6) // 6: A = ...
{
if (dat == 1) A = B; // Variablen
if (dat == 2) A = C;
if (dat == 3) A = D;
if (dat == 4) A = PINA & 15; // Port Ausgänge schalten bei ohne ext.Pullup wie sie wollen
if (dat == 5) // Portbits
{
if (!(PINA & (1<<E1))) A = 0;
else A = 1;
}
if (dat == 6)
{
if (!(PINA & (1<<E2))) A = 0;
else A = 1;
}
if (dat == 7)
{
if (!(PINA & (1<<E3))) A = 0;
else A = 1;
}
if (dat ==
{
if (!(PINA & (1<<E4))) A = 0;
else A = 1;
}
if (dat == 9) A = ADC1() / 16; // ADC
if (dat == 10) A = ADC2() / 16;
}

- - - Aktualisiert - - -

Warum erledigt?