Forum: Mikrocontroller und Digitale Elektronik Xmega Encoder auslesen


von M.k L. (angrymop)


Lesenswert?

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ß

von Gerhard G. (g_g)


Lesenswert?

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.

von M.k L. (angrymop)


Lesenswert?

super jetzt gehts!
Danke!

PS: if(TCC1.CNT  >= grenze_m && TCC1.CNT  <= grenze_p)

von M.k L. (angrymop)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.