Impulse zählen

Gast #14549
Lesenswert?

Hallo,

bin noch AVR Anfänger. Ich will von einem Reedkontakt Impulse (Hoch UND 
Runter - je nach Richtung des Motors) zählen, diese sollen anhand einer 
Tabelle ausgewertet werden und auf einem LCD die Stellgröße in Grad 
ausgegeben werden. Wie stelle ich soetwas an, vir allem, dass nach dem 
Aussschalten der Schaltung der Zählerstand erhalten bleibt.

Grüße Pascal
Gast #14552
Lesenswert?

Hallo noch einmal,

vielen Dank für die beiden Antworten. Zu Gerd:
Ja, die Zahl der Impulse zur Gradzahl ist nicht linear. Es wird mit dem 
Schubmotor ein Antennensystem geschwenkt. Ich müsste also bei der 
Programmierung sagen, dass z.B. 100 Impulse 5 Grad sind, 200 Impulse 
aber z.B. schon 20 Grad usw.
Wie ist das mit Fließkommazahlen? Gib es C Compiler mit denen man da 
arbeiten kann oder können AVRs (Ich dachte da an 2313er oder so) gar 
keine FP Berechnungen machen?

Danke im vorraus!
Grüße Pascal
Gast #14554
Lesenswert?

Mit linear hatte ich gemeint: y = a * x + b. Wenn dem so ist, dann geht 
es ziemlich einfach auch mit Integerzahlen und Multiplikation/Division 
derselben anstelle von Tabellen.

Ansonsten hätte ich folgenden Tip für den FP-Ersatz. Wenn Du z.B. den 
Wertebereich 0,00 bis 360,00 brauchst, dann nimmst Du ein Wort mit 16 
Bit (0..65535) und denkst Dir einfach die letzten beiden Dezimalziffern 
als Kommastellen. Das deckt 0,00 bis 655,35 ab. Ansonsten gehen dann 
Division und Multiplikation in Assembler ziemlich einfach (siehe z.B. 
http://www.avr-asm-tutorial.net/avr_de/rechnen/index.html).
Wenn es noch genauer sein muss, dann eben halt mit einer 24- oder 
32-Bit-Zahl.
Und wenn es so genau sein muss, dass es die Bank akzeptiert, musst Du in 
den sauren Apfel beißen und Packed BCD verwenden. Aber das ist dann 
schon höhere Assembler-Programmierkunst.
Nur wenn das alles nix hilft, weil es sehr große und sehr kleine Zahlen 
zu handeln gibt (z.B. 10**10 mal 10**-10), muss man in den FP-Apfel 
beißen. Mit den von Sebastian genannten Nebenfolgen.

MfG
Gerd

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren