Unregistriert
07.09.2016, 10:04
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 == 8)
{
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?
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 == 8)
{
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?