PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frequenzen erzeugen mit ATMega



BomberD
12.11.2004, 11:09
Hallo,

ich dachte ich hätte schon so einen Trhead offen hab ihn aber nicht wiedergefunden :(.

Ich möchte mit einem ATMega 16 später 32 einen Frequenzverlauf erzeugen.
Wichtig ist, dass ich ab 0 Hz in 1 Hz Schritten bit zu max 650 Hz gehen kann.
Ich denk schon ne ganze weile drüber nach. Hatte zuerst die PWM im auge. Das Signal muss ne gleichmäßiges Rechteck sein. Mit Timern hab ich auch schon experimentiert.
Der Haken an Timern ist, dass bei eintritt von anderen Interrupts extern oder UART nicht sichergestellt ist, dass auch der Timer interrupt behandelt wird.
Habt ihr andere Ideen?

RCO
12.11.2004, 11:17
Also der PWM wird dich auf keinen Fall weiterbringen, weil du da ja nur einige wenige Frequenzen je nach Prescaler hast und nur das Tastverhältniss ändern kannst, damit ändert isch aber nciht die Frequenz...

MFG Moritz

Dino Dieter
12.11.2004, 11:21
Hallo

Das ist mehr eine Sache des gesamten Timings und des programm Aufbaus. Wie genau muß die Frequenz denn sein ? Die Lösung mit den Interrupts ist schon der richtige Weg.

Kommt halt darauf an, was sonst noch läuft auf dem uC und wie Zeitkritisch die anderen Sachen sind.

MFG
Dieter

BomberD
12.11.2004, 12:02
Tja.. das ists ja... eigendlich ist zu viel kritisch :(
die Frequenzen sollten sich schon in Hz bereichen angeben lassen.
wie gesagt ungefähr 1 bis 650.
Ich berechne nebnenher im Controller über einen , hoffendlich nicht zu komplizierten, Algorithmus eine Geschwindigkeit.
Basis ist ~62,5Hz Pro m/s er Bereich geht bis ~10 m/s.
passend zu der Geschwindigkeit müssen aber auch noch Kontakte betätigt werden. Immer als Paar. dabei ist das auslösen des ersten Kontaktes relativ unkritisch. Aber der darauffolgende muss exakt zur Ausgegebenen Geschwindigkeit(die Frequenz oben) passen. <-- Auch ne Timer Sache.zeiten sind hier aber im 2 stelligen ms bereich allerdings auf ne 1/100 ms genau.
Um den ersten Kontakt auszulösen muss ich in ner Liste nachschauen ob denn der richtige augenblick da ist.
Es gibt hier 3 solcher Kontaktpaare.

Es gibt aber auch noch externe Interrupts. Allerdings könnte ich die auch in 'freier' Zeit Pollen. Die liegen länger an, sind also eigendlich nicht ganz so zeitkritisch. Aber per Interrupt isses irgendwieschöner ;)

Letztlich muss auch noch ein SSI signal ausgegeben werden.
Allerdings wollte ich das Extern laufen lassen und nur konfigurationsparameter über den AVR an den 'SSI-Baustein' (da hab ich auch nochn Thread zu :() senden. Allerdings nur wenn änderungen auftreten. Das ist meist nicht der Fall. Aber wenn dann Mehrfach hintereinander in relativ schneller folge. Genauer kann ichs leider auch noch nicht sagen :(

edit:
Wenn ich sicherstellen kann dass der Timer immer ausgeführt wird. dann kann ich auch damit leben dass die von mir gewollte Frequenz. Erst ne Sekunde später anliegt. Wichtig ist das der Takt kommt und die Kontaktpaare nicht vergessen werden. Ich kann sicher meine sachen noch sehr entschlacken.

Gruß

Steffen