Hallo Osser!
Da hast du natürlich Recht, aber is ja auch gleich Feierabend, da is man mit den Gedanken schon mal wo anders... \
/
Hier unser Quelltext:
Code:
#include "asuro.h"
void LocalInit(void)
{
TCCR2 = (1 << WGM21) | (1 << CS20);
OCR2 = 0x64;
ADCSRA = 0x00;
ACSR = 0x02;
ADMUX=0x03;
SFIOR|=(1<<ACME);
DDRD&=~(1<<6);
}
void Ping(unsigned char length)
{
int count72kHz=0;
TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
while (count72kHz<length)
{
OCR2=0x64+length/2-count72kHz;
}
TCCR2 = (1 <<WGM21) | (1 << CS20);
OCR2=0x64;
}
int main(void)
{
int pos,i ;
int posmarker;
Init();
LocalInit();
while(1)
{
posmarker=0;
Ping(20);
for (pos=0; pos<100; pos++)
{
Sleep(10);
if ((ACSR& (1<<ACI))!=0)
{
if (posmarker==0)
{
posmarker=pos;
}
}
ACSR|=(1<<ACI);
}
if(posmarker>10)
{
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(200,200);
}
else
{
StatusLED(RED);
MotorDir(FWD,RWD);
MotorSpeed(0,200);
for (i=0; i<100; i++)
{
Sleep(200);
}
}
}
return 0;
}
Lesezeichen