PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Odometrie (Positionserkennungsproblem)



listner
23.10.2009, 14:52
#include "asuro.h"
int main(void)
{
unsigned int data [2];
Init();

StatusLED(1);

while(1){
OdometrieData(data);

if (data [0] == 1)
{BackLED(ON,ON);}

else
{BackLED(OFF,OFF);}

}

return 0;
}

das ist der code ;)
nun ist ja nicht schwer zu erkennen, was er machen sollte:
wenn data 0 dem wert 1 entspricht sollten die back leds leuchten
joa

hilfe wäre super
gruß ich

PicNick
23.10.2009, 15:49
Soweit ich weiss, liefert "OdometriData" werte in "Data" von 1-1023
dein Progamm schaltet aber nur, wenn es ausgerechnet == 1 ist.

radbruch
23.10.2009, 16:40
Hallo

BackLEDs und Odometrie sollte man nicht zusammen verwenden, weil sie sich den Pin PD7 teilen. Zwar wird von BackLEDs() und OdometrieData() jeweils der Pegel richtig eingestellt (Odo=high, BackLEDs=low), aber die Odo-LEDs brauchen etwas Zeit bis sie die volle Leuchtstärke erreichen. Das könnte die Abfrage der Odo-Sensoren beinflussen.

Bei näherer Betrachtung scheint mir hier sogar noch ein kleiner Bug zu sein: BackLEDs(ON,ON) schaltet den PD7 auf low und PC0/1 auf Ausgang und high:


PORTD &= ~(1 << PD7); // Wheel LED OFF
DDRC |= (1 << PC0) | (1 << PC1); // Output => no odometrie
PORTC |= (1 << PC0) | (1 << PC1);


und OdometrieData() schaltet den PD7 auch wieder auf high (ODOMETRIE_LED_ON) und die Pins PC0/1 auch wieder auf Eingang für den ADC, "vergisst" aber die Pullups wieder auszuschalten!

DDRC &= ~((1 << PC0) | (1 << PC1)); // Input => no break LED
ODOMETRIE_LED_ON;
Das bedeutet, vor OdometrieData() muss man BackLEDs(OFF,OFF) aufrufen um die Pins von Hand auf low zu schalten. Sonst sind die PullUps parallel zu R18/R20 geschaltet und könnten zusätzlich das Ergebniss von OdometrieData() verfälschen. (Das funktioniert im Programm oben automatisch, weil immer der else-Zeig ausgeführt wird;)

Das die Abfrage data[0]==1 nicht funktioniert sollte inzwischen klar sein. Der Wert in data[] hängt von der gemessenen Helligkeit am Odosensor ab.

Gruß

mic