hannes468
20.10.2007, 14:26
Hallo,
wie der Title schon sagt arbeite ich grade an einem SRF05 (http://www.robotikhardware.de/download/srf05doku.pdf)
Sensor, den ich im zweiten Mode betreibe, also mit einer Leitung
zwischen Controller und Sensor.Als Controller verwende ich
einen Atmega32.
Mein Code sieht momentan wie folgt aus:
uint16_t getabstand(uint8_t sensor)
{
uint16_t count;
DDRC|=sensor;
PORTC |= (1<<sensor); //Puls senden
_delay_us(10); //wait_us(10);
PORTC &= ~(1<<sensor); //Puls Ende
DDRC &= ~(1<<sensor);
while(!bit_is_set(PINC,sensor)){}
count=0;
while(bit_is_set(PINC,sensor))
{
_delay_us(1);//wait_us(1);
count++; //in der while schleife wird count immer nach einer mikrosekunde hochgezählt
if(count>5000) return 0; // kein Signal,
}
return count/58; // Abstand (mm)
}
int main(void) {
DDRB=0xff; //an PB0 hängt eine led,diese dient als Rückmeldung
PORTB=(1<<PB0); //ob der abstand höher oder niedriger als der
uint16_t abstand; //Vergleichswert ist
while (1){
abstand=getabstand(1); // sensor hängt an dem PIN PC1
if (abstand>1){
PORTB&=~(1<<PB0);
}
else{
PORTB=(1<<PB0);
}
}
return 0;}
[/url]
Vorerst geht es mir nur darum immer einen vergleichbaren Wert zu erhalten.
Es fuktioniert auch schon, allerdings nur direkt nachdem ich das
Programm draufgeladen habe.
Sprich ich stecke den ISP-Stecker raus, mach den Strom an und lade das Programm drauf. Dann leuchtet die LED am Controller und die auf dem Sensor und ich kann die LED am Controller beeinflussen, indem ich z.B. die Hand vor den Sensor hin und her schiebe.Wenn ich jetzt aber den Strom ausmache (es leuchten dann noch beide LEDs, nur schwächer), den ISP-Stecker rausziehe und dann den Strom wieder anmache, tut sich am Sensor nichts mehr, die LED ist aus (im Gegensatz zu der am Controller).
Spannung messe ich am der "Datenleitung" des Sensor keine
( wenn es funktioniert liegt eine Spannung an).
Ich bin grad ziemlich ratlos wodran es liegen könnte.Vielleicht
kennt ja jemand das Problem oder ich hab nur nen Anfängerfehler gemacht.Auf jeden Fall schon mal danke falls jemand helfen kann.
hannes468
wie der Title schon sagt arbeite ich grade an einem SRF05 (http://www.robotikhardware.de/download/srf05doku.pdf)
Sensor, den ich im zweiten Mode betreibe, also mit einer Leitung
zwischen Controller und Sensor.Als Controller verwende ich
einen Atmega32.
Mein Code sieht momentan wie folgt aus:
uint16_t getabstand(uint8_t sensor)
{
uint16_t count;
DDRC|=sensor;
PORTC |= (1<<sensor); //Puls senden
_delay_us(10); //wait_us(10);
PORTC &= ~(1<<sensor); //Puls Ende
DDRC &= ~(1<<sensor);
while(!bit_is_set(PINC,sensor)){}
count=0;
while(bit_is_set(PINC,sensor))
{
_delay_us(1);//wait_us(1);
count++; //in der while schleife wird count immer nach einer mikrosekunde hochgezählt
if(count>5000) return 0; // kein Signal,
}
return count/58; // Abstand (mm)
}
int main(void) {
DDRB=0xff; //an PB0 hängt eine led,diese dient als Rückmeldung
PORTB=(1<<PB0); //ob der abstand höher oder niedriger als der
uint16_t abstand; //Vergleichswert ist
while (1){
abstand=getabstand(1); // sensor hängt an dem PIN PC1
if (abstand>1){
PORTB&=~(1<<PB0);
}
else{
PORTB=(1<<PB0);
}
}
return 0;}
[/url]
Vorerst geht es mir nur darum immer einen vergleichbaren Wert zu erhalten.
Es fuktioniert auch schon, allerdings nur direkt nachdem ich das
Programm draufgeladen habe.
Sprich ich stecke den ISP-Stecker raus, mach den Strom an und lade das Programm drauf. Dann leuchtet die LED am Controller und die auf dem Sensor und ich kann die LED am Controller beeinflussen, indem ich z.B. die Hand vor den Sensor hin und her schiebe.Wenn ich jetzt aber den Strom ausmache (es leuchten dann noch beide LEDs, nur schwächer), den ISP-Stecker rausziehe und dann den Strom wieder anmache, tut sich am Sensor nichts mehr, die LED ist aus (im Gegensatz zu der am Controller).
Spannung messe ich am der "Datenleitung" des Sensor keine
( wenn es funktioniert liegt eine Spannung an).
Ich bin grad ziemlich ratlos wodran es liegen könnte.Vielleicht
kennt ja jemand das Problem oder ich hab nur nen Anfängerfehler gemacht.Auf jeden Fall schon mal danke falls jemand helfen kann.
hannes468