Gast
#676335
Hallo,
Ich habe gerade erst angefangen, mich in die Thematik Mikrocontroller
einzuarbeiten.
Ich habe jetzt mal eine Funktion geschrieben, mit der ich überprüfen
kann (???), ob eine Taste (verbunden mit einem beliebigen Pin (z.B.
PINB1) und der Erde) gedrückt wird.
Dabei möchte ich den internen Pull-Up-Widerstand benutzen.
Es würde mich freuen, wenn hier jemand die Zeit findet, um mal über
diesen kurzen Quellcode zu sehen und mir ein entsprechendes Feed-back zu
geben.
Ich kann mir sehr gut vorstellen, dass da noch einige Fehler drin sind.
Vielen Dank im Voraus!
Hier die Funktion:
uint8_t Gedrueckt1NichtGedrueckt0 (const volatile uint8_t *InputPort,
const volatile uint8_t *InputDDR, const volatile uint8_t *InputPin,
uint8_t InputBit)
{
uint8_t tempValue; //temporäre Variable
*InputPort |= (1<<InputBit); //Am entspr. Pin wird der interne
Pullupwiderstand aktiviert
*InputDDR &= ~(1<<InputBit); // erst dann wird der Pin auf Eingang
geschaltet
tempValue = *InputPin & (1<<InputBit); // der Pin-Wert wird in tempValue
abgespeichert
//tempValue wird „invertiert“, so dass bei gedrückter Taste eine 1, bei
nicht gedrückter Taste eine 0 zurückgegeben wird
if (tempValue == 0)
{
tempValue = 1
}
else {tempValue = 0};
return (tempValue);
}
Funktionsaufruf z.B.:
Die folgende Funktion soll etwas tun, wenn der Knopf, der mit PINB1
verbunden ist, gedrückt wird:
void main (void)
{
if (Gedrueckt1NichtGedrueckt0(&PORTB, &DDRB, &PINB, PINB1))
{
.......
}
}