Archiv verlassen und diese Seite im Standarddesign anzeigen : Odometrie (Positionserkennungsproblem)
#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
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, 17: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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.