PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Taster auf ASURO Snake Vision-Platine ansprechen



Zehplusplus
04.04.2010, 12:21
Habe meinem Asuro jetzt die Snake Vision gegönnt. Als aller erstes möchte ich mal testen, ob das mit dem Taster (der sich auf der Snake-Vision befindet) überhaupt so klappt, wie ich mir das vorstelle. Dazu habe ich mal ein Programm verfasst, das nichts anderes macht. Das Programm ist schnell erklärt. Bei Betätigen des Tasters soll die Status LED 3 mal grüne blinken, außerhalb der Schalter-Abfrage-Schleife soll sie rot leuchten. Wenn ich ihn einschalte, blinkt sie sofort 3 mal grün, dann leuchtet sie so lange rot, bis ich wieder den Taster drücke. Wieso springt das Programm beim Start in die Blink-Schleife, obwohl ich den Taster noch gar nicht gedrückt habe?


#include "asuro.h"
#include "avr/interrupt.h"


int main(void)
{
// Speicher für die Messwerte bereitstellen
int a,b,c;
Init();
MotorDir(FWD,FWD);
StatusLED(OFF);
DDRD&=~(1<<6); //Pin6 auf "Eingang" schalten ACHTUNG MIT HR MAYER ABSPRECHEN
PORTD|=(1<<6);

while (1)
{
if ((PIND&(1<<6))==0) //Wenn der Taster auf der Snake-Platine gedrückt wird ...
{ //nimmt Pin 6 des Prozessors High-Zustand an
for (c=0; c<=2; c++)
{
for (a=0; a<150; a++)
{
StatusLED(OFF); //0,4 Sekunden soll aus sein
Sleep(216);
}
for (b=0; b<150; b++) //0,4 Sekunden soll grün leuchten
{
StatusLED(GREEN);
Sleep(216);
}
}
}
StatusLED(RED);
}
return 0;
}


(Quellcode eingefügt von radbruch)

radbruch
04.04.2010, 13:09
Hallo

Vielleicht steigt der Pegel am Pin zu langsam nach dem Einschalten des PullUp:

PORTD|=(1<<6);
Sleep(10);
while (1)
{
if ((PIND&(1<<6))==0)

Der Taster schaltet doch PD6 gegen GND, oder?

Gruß

mic

Zehplusplus
04.04.2010, 13:11
Der Schalter schaltet Pin6 gegen GND, richtig. Wenn die Schleife erst mal läuft, kann ich sie ja jederzeit aufrufen durch Tasterdrücken.

Zehplusplus
04.04.2010, 13:53
Das funzt, wunderprima, tausend Dank dir. Habe einen Sleep(216) eingefügt, und jetzt läuft es!!! Danke, und das an Ostern ;)