PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : trigonometrische Funktionen mit Mega16



Omnikron
07.11.2004, 18:00
Hallo!

Hab meinem Roboter nun zwei "Infrarot-Radare" spendiert. D.h Ein G2DP12 Entfernungsmesser auf einem Schrittmotor gelagert. Leider klappt es noch nicht ganz mit der Auswertung.
Programmiere einen ATMega 16 mit Bascom.
Kann bereits die Motoren steuern, den Entfernungsmesser in cm auslesen, aber sobald ich den Sinus oder Cosinus der Werte berechnen will um das erkannte Hinderniss zu orten stürtzt der µC ab und startet neu.
Im moment lasse ich alle werte über die RS232 in einem Terminalprogramm anzeigen.

Ab und zu erhält eine Variable (Single) den Inhalt "NAN" bzw. "-NAN".
ist das ein Fehler in der seriellen Übertragung oder waran könnte das liegen?

Könnte es sein das der Speicher überläuft?
Kann ich Winkelfunktionen nur mit Single Variablen berechnen?

Wäre nett mir könnte jemand dabei helfen
mfg Omnikron

08.11.2004, 08:31
Hallo,

Winkelfunktionen sind nur mit Single-Variable berechenbar.
Kontrolliere mal Deine Einstellungen für HW Stack, Soft Stack und Frame-Size. Solche Fehler gehen oft auf einen Stack-Überlauf zurück.
Wenn Du sonst keine Functions oder Subs hast, dürften je 16 für HW Stack und Softstack genügen und für Frame-Size 32, da die Winkelfunktionen für temporare Ergebnisse den Frame benützen.

Im Simulator können die Werte dieser Pointer während der Programmausführung kontrolliert werden.

Joerg
08.11.2004, 08:40
Hallo Omnikron,

schau mal die MicroMega FPU für 8-bit Controller an. http://www.micromegacorp.com/umfpu.html

Das Teil wird einfach über SPI angehängt, nur gibt es momentan noch keine fertige Unterstützung für BASCOM.

Viele Grüße
Jörg