schafft der das? ziel ist das erzeugen einer 100Hz zeitbasis mit dem 16 bit timer. der µC soll nach jedem interrupt 2 oder 3 ADC werte auslesen (wandeln), eine sinuskurve (aus tabelle) nach diesen werten skalieren und einen 8bit timer für PWM mit dem errechneten wert speisen. getaktet ist er mit 12Mhz um auf die erforderliche PWM-frequenz zu kommen. sollte doch also genug rechenleistung zur verfügung stehen, oder? bin mir nicht 100pro sicher, deswegen die frage.
100Hz sollten wirklich kein Problem sein solange deine Interruptroutine weniger als 120.000 Takte braucht. Was meinst du mit "sinuskurve skalieren"? Solange das keine aufwändigste Berechnung ist geht das alles damit.
die ISR will ich so kurz wie möglich halten, also nur ein flag setzen welches in der hauptschleife abgefragt wird bzw. die hauptschleife aus einer warteposition herausholt und einen durchlauf startet. die sinuskurve möchte ich als 8 bit kurve fest in den flash legen (0..255). der AVR soll dann 2 oder 3 werte (obere und untere PWM-tastverhältnisgrenze und einen wert für die frequenz (0.1-2Hz vielleicht, unkritisch) per ADC einlesen. die obere tastverhältnisgrenze lass ich vielleicht noch weg, die wird wohl fast immer 100% betragen. 8 bit ADC auflösung reicht für alle drei werte. 1. den frequenzwert ermitteln nach wieviel 100Hz-takten in der sinustabelle eins weiter gezählt werden soll, wenn nicht erreicht 2.+3. springen 2. oberen und unteren grenzwert einlesen und den sinuskurven-wert aus der tabelle in den bereich dazwischen einpassen 3. errechneten PWM-wert in das timer-register schreiben 4. wieder schlafen legen... inwieweit sleep modes wegen der laufenden timer was bringen weiß ich nicht, wahrscheinlich nicht allzu viel.
sehr schick, aber absoluter overkill für das was ich brauche!
Ben _ schrieb: > sehr schick, aber absoluter overkill für das was ich brauche! Aber du kannst dir die Technik der Signalerzeugung ansehen. Deine Beschriebung dessen, wie du dir das vorstellst, klingt ein wenig .... abenteuerlich.
najo es sind halt keine besonders hohen anforderungen, die an das signal gestellt werden. die in einem echten funktionsgenerator verwendeten routinen dürften um ein gutes stück besser sein als ich sie brauche. ich brauche auch kein LCD oder irgendwelche benutzerführung... von der programmierung her sollte mein miniprojekt eher einfach sein. ich denke das krieg ich hin, wenn der atmega das unter meinen rahmenbedingungen schafft (wo erstmal niemand was gegenteiliges geschrieben hat). die 12MHz hat der auch nur weil ich 45kHz PWM-frequenz brauche, vermutlich würde schon ein drittel reichen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.