Hi,
ich lese die Encoder meines Motors über Events des Xmega aus.
char uart_buffer [33];
usart_sendstring(" TCC1.CNT ");
itoa(TCC1.CNT,uart_buffer,10);
usart_sendstring(uart_buffer);
in der Ausgabe werden Werte +-0 (zB -1000 // +1000..) angezeigt!
Wenn ich das ganze in der Schleife auswerten will
if(TCC1.CNT > 3)
{
status = 1;
M_2.zur();
}
if(TCC1.CNT < -3)
{
status = -1;
M_2.vor();
}
if(TCC1.CNT >= -3 || TCC1.CNT <= 3)
{
status = 0;
M_2.stop();
}
wird nur die erste Schleife ausgelöst. Woran liegt das? Wird TCC1.CNT in
der Schleife zum Betrag,also immer positiv betrachtet?
Gruß
M.k L. schrieb: > if(TCC1.CNT < -3) mach mal aus -3 eine "ordentliche Variable", die auch den Wert -3 annehmen kann. MfG G.G.
super jetzt gehts! Danke! PS: if(TCC1.CNT >= grenze_m && TCC1.CNT <= grenze_p)
geht leider doch nicht. ich hatte die Grenze bei 1000 und darum schwingt der Motor gut. Wenn die grenze jedoch bei 0 liegt, dann scheint TCC1.CNT positiv zu werden, obwohl, es in der USART Ausgabe als negativ dargestellt wird. da muss ich wohl die Richtung des Motor ermitteln und dann TCC1.CNT addieren bzw. subtrahieren.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.