PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega 8; Taster die ganze Zeit ansprechen



Momchilo
18.01.2007, 19:50
Hi liebe Leute,

also ich (ein Anfänger) versuche gerade für den Asuro ein Programm mit C zu schreiben. Mit Programmers Notepad.

#include "asuro.h"

unsigned char Motor;
int main(void)
{
Init();
Motor=255;
MotorDir(FWD,FWD);
MotorSpeed(Motor,Motor);
{
if (PollSwitch()>0)
{
StatusLED(RED);
}
else {
StatusLED(GREEN);
}
}

while(1);
return 0;
}


Er funzt einwandfrei, aber was muss ich schreiben, damit er nicht nur ganz am Anfang die Taster anspricht, sondern die ganze Zeit.
Also wenn ich ihn anmache und sofort auf nen Taster drücke, wird die Led Rot, aber wenn ich erst nach 2 Sek draufdrücke, passiert gar nix mehr. Wie kann ich das ändern?
Ich hoffe ihr könnt mir helfen. :)

Mit freundlichen Grüßen
Momchilo

wkrug
18.01.2007, 20:37
Bin zwar auch C- Anfänger, aber wie ich das sehe wird deine Rotine zur Tastenabfrage doch nur einmal durchlaufen und zwar im Init im Main Programm.
Wenn du den Teil mit der Tastaturabfrage nach while(1) legst wird er ständig wiederholt und das willst Du ja.

SprinterSB
18.01.2007, 20:37
while (1)
{
if (PollSwitch() > 0)
{
StatusLED (RED);
}
else
{
StatusLED (GREEN);
}
}

Momchilo
18.01.2007, 21:21
Hi Leute,
sorry das ich jetzt erst schreibe, aber der Strom war ausgefallen. ;)
Vielen Dank mehr wollte ich gar nicht wissen.
Nun kommt der nächste Schritt :P

MfG
Momchilo

@edit
es funzt doch noch nicht :(

#include "asuro.h"

unsigned char Motor;
int main(void)
{
Init();
Motor=255;
MotorDir(FWD,FWD);
MotorSpeed(Motor,Motor);

while(1);
{
if (PollSwitch()>0)
{
StatusLED(RED);
}
else {
StatusLED(GREEN);
}
}


return 0;
}

so fährt er immer gerade aus und die StatusLed ist immer grün, egal wann
auf einen Taster drückt.

SprinterSB
18.01.2007, 21:50
Der ; hinter dem while ist mal nicht aus meiner Schmiede...

Momchilo
18.01.2007, 22:01
Hey ohne";" gehts :)
Vielen Dank Sprinter
MfG
Momchilo