-
-
Erfahrener Benutzer
Begeisterter Techniker
Ich hab mir deinen Code mal angeguckt.
Ein paar Anmerkungen:
1. Deine Variablenbezeichnungen sind nicht gerade leserfreundlich. Guck dir mal die "Ungarische Notation" an und/oder fange am besten jedes neue Wort in einer Variablen mit einem Großbuchstaben an. (interruptspersecond => interruptsPerSecond...)
2. interruptspersecond ist eine Konstante, die du vom Präprozessor ausrechnen lassen kannst. Das muss nicht bei jedem Timerüberlauf geschehen.
3. Die Signalformabfrage würde ich in ein "case" packen, das ist übersichtlicher.
4. Es wäre besser, du verzichtest auf Kommazahlen und rechnest nur mit Unsigned Integers. Das spart viel Rechenzeit (vor allem in einer ISR wichtig!).
Ich könnte mir vorstellen, dass der Compiler für die Sinusfunktion eine Lookup-Table anlegt (im EEPROM, deswegen wahrscheinlich die eep-Datei) und deshalb so viele Daten anfallen.
Ich würde die Sinusfunktion erstmal rauslassen, gucken wie groß der Code ist und mir dann selbst eine Lookup-Table erstellen und diese im FLASH speichern. So kannst du die Mathe-Bibliothek ganz aussen vor lassen.
Zu deinem Ausgabeproblem: Setze doch Testhalber einen Pin an einem anderen Port, wenn die ISR aufgerufen wird. So hast du schonmal Gewissheit, dass der entsprechende Code überhaupt ausgeführt wird.
Stimmt sonst alles mit deiner Verdrahtung? Kann es sein, dass du einen Kurzschluss hast, und deswegen keine High-Pegel abzugreifen sind?
Mfg Loki
*edit* ups, radbruch war schneller
*/edit*
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen