PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : S: AVR als Frequenzgenerator



nikolaus10
27.09.2005, 20:04
Hallo

Vielleicht hat das schon jemand gemacht oder weis wo man soetwas suchen kann.

Ein Bascom Program das den AVR als Rechteck-frequenzgenerator arbeitet. So in der Art: per serieller Schnittstelle ein Wert wempfangen der den Timer so programmiert das er eine Frequenz erzeugt und zwar mit der groesstmoeglichen Frequenzbandbreite/Dynamik .

MFG

Andree-HB
27.09.2005, 20:59
Zwar nicht mit Bascom, aber...
-> http://www.myplace.nu/avr/minidds/index.htm

Felixx87
27.09.2005, 21:41
Cool Kann ich bestimt auch mal gut gebrauchen :) aber sollte ich es Packen nehm ich 3 Taster und nen 2 x 8 Display und mach es ohne comport (wär doch flexibler wennder COMport am Rechner frei bleibt)

19.10.2005, 11:21
Hallo

Vielleicht hat das schon jemand gemacht oder weis wo man soetwas suchen kann.

Ein Bascom Program das den AVR als Rechteck-frequenzgenerator arbeitet. So in der Art: per serieller Schnittstelle ein Wert wempfangen der den Timer so programmiert das er eine Frequenz erzeugt und zwar mit der groesstmoeglichen Frequenzbandbreite/Dynamik .

MFG

So etwas erledigt der ROBOprogy mit wenigen Befehlen für Frequenzen zwischen wenigen Hz und etwa 100 kHz.

mfg Herbert

(www.roboprogy.de)

Andree-HB
19.10.2005, 12:29
Wollen wir Eigenwerbung nicht lieber per bezahlten Banner einstreuen ? :-)

Rage_Empire
19.10.2005, 17:55
Das mit dem Mini-DDS ist schon cool, jedoch hab ichs leider bis heute noch nicht geschafft, den ASM-Source in Bascom einzufügen. Weiß nicht, wo der Unterschied zwischen Winavr-ASM und Bascom-ASM besteht.

PicNick
19.10.2005, 18:06
@Rage_empire: Das sind ein paar syntaktische Eigenheiten.
Ich hab's so gemacht, daß ich mit irgendwelche .LIB mit notepad angesehen habe, da merkt man schon, wie's läuft.

Rage_Empire
19.10.2005, 18:22
@PicNick: für jemand, der in avr-asm durchblickt ist es bestimmt kein problem. für nen AVR-ASManfänger (wie mich) schon.
Schade, daß MCS zu ihrem Bascom-ASM nicht viel Preis gibt.

Millenniumpilot
19.10.2005, 18:25
Hallo Felixx87,

halte uns (mich) mal auf dem Laufenden. Hätte auch Interesse an solch einem kleinen Ding mit LCD und Taster.

Gruß Dirk

sebastian.heyn
20.10.2005, 15:54
beim drübberschauen habe ich gesehen, das der generator auf der seite an den pc angeschlossen wird.

warum nimmst du dann nicht einfach 2 controller (ich weiss das ist ganz schöön faul) und steuerst den generator mit dem anderen an?

Guy
21.10.2005, 12:49
$regfile = "m16def.dat" ' ATmega16
$crystal = 8000000 ' for STK500
$baud = 19200


'**************** TIMER 1 ******************************
Config Timer1 = Timer , Compare A = Toggle , Prescale = 1 , Clear Timer = 1
Compare1a = 100
Config Pind.5 = Output
'**************** END TIMER 1 ***************************


Mit "Compare1a" stellst du die Frequenz ein.

Du kannst auch mit einem Timer 2 verschiedene Frequenzen erzeugen wenn du den Timer durchlaufen läßt. Dann benutzt du "Compare1a" für die erste und "Compare1b" für die zweite Frequenz.

Rage_Empire
20.11.2005, 16:14
Hab den Source mal laufen lassen. Ist recht gut. Ich weiß, daß man anstatt toggle auch set oder Clear einsetzen kann. Aber was set oder Clear bewirken habe ich noch nie rausgefunden. Wofür sit das Gut? Frequenzen kann ich somit jedenfalls nicht erzeugen. Vieleicht kann mich da mal jemand aufklären, was es damit auf sich hat?

Guy
21.11.2005, 13:37
Ich verstehe dein Post jetzt nicht

Hab den Source mal laufen lassen. Ist recht gut.
und dann.

Frequenzen kann ich somit jedenfalls nicht erzeugen.
Ironisch, oder wie?

Wenn du mein Code hier drüber meinst, ich kann so jedenfalls Frequenzen erzeugen.


Zu Set, Clear, und Toggle. Ich würde mal meinen, beim erreichen von Compare1a würde mit SET der Pin gesetzt, mit clear gelöscht, und mit Toggle gewechselt.

Rage_Empire
21.11.2005, 13:44
Mit Toggle geht das frequenzen erzeugen ja auch recht gut, nur wenn ich anstatt toggle den Parameter set oder clear angebe, passiert gar nichts. Warum?

Guy
21.11.2005, 14:01
Weil der Pin beim erreichen von Compare1a mit Set zum Beispiel gesetzt wird, und dann gesetzt bleibt. So dass dann nichts mehr passiert. Ist doch irgendwie logisch oder?

Mit Toggle wird er beim erreichen von Compare1a gesetzt, und beim nächsten erreichen von Compare1a wieder gelöscht. Was dann eine Frequenzen ergibt.

Rage_Empire
21.11.2005, 14:05
wie kann ich diesen Setbefehl dann wieder zurücksetzen? Mit Toggle hab ich ja nur die Halbe Frequenz, desswegen frag ich.

Guy
21.11.2005, 14:10
Was meinst du mit "Halbe Frequenz"?

Rage_Empire
21.11.2005, 14:17
Mit toggle teile ich automatisch die mögliche Frequenz durch 2, da der erste durchlauf setzt(1) und der zweite durchlauf löscht(0).

Guy
21.11.2005, 14:23
Tut mir leid, aber ich verstehe dich nicht. für mich ist eine Frequenz während x ms 1 und dann x ms 0. Oder willst du ein PWM Signal?.

Sag mal genau was du willst.

Rage_Empire
21.11.2005, 14:30
Der Timer1 macht max. 65535 steps. Mit Compare setzt man die steps, wieviel man braucht. So, und wenn du jetzt copare1=100 mit dem Parameter toggle setzt, dann schaltet er alle 100 steps ein und aus. Soweit, so gut.
Wenn ich jetzt aber sagen könnte ab step100 an und ab step200 aus, clear timer......versteht ihr?

Guy
21.11.2005, 15:49
Dann versuche es mal so.




$regfile = "m16def.dat" ' ATmega16
$crystal = 8000000 ' for STK500
$baud = 19200


'**************** TIMER 1 ******************************
Config Timer1 = Timer , Compare A = Toggle , Prescale = 1 , Clear Timer = 1
Compare1a = 100
Config Pind.5 = Output
'**************** END TIMER 1 ***************************
On Compare1a InterruptR
Enable Timer1
Enable Interrupts

InterruptR
IF Compare1a=100 THEN
Compare1a=200
ELSE
Compare1a=100
END

Rage_Empire
21.11.2005, 17:57
Danke, prima idee.