Hallo zusammen,
bin völliger Anfänger was die Atmel Programmierung angeht und habe heute
mal versucht folgendes Projekt von Elm Chan ans Laufen zu bekommen:
http://elm-chan.org/works/mxb/report.html
Hat auch alles wunderbar geklappt. Wollte einfach mal davon berichten,
falls ein anderer Anfänger das gleiche vor hat.
Was man braucht:
* konstante 5V Betriebsspannung (z.B. über einen 7805 Spannungsregler)
* Steckbrett
* ATTiny45, am besten in IC Sockel
* ISP Programmieradapter
* Kondensator
* Alten Lautsprecher oder kleinen Summer
Den Schaltplan gibt es auf der Seite:
http://elm-chan.org/works/mxb/mg.png
Die Widerstände die dort eingezeichnet sind habe ich einfach
weggelassen, da ich die passenden (33 Ohm) nicht hatte. Hat auch ohne
funktioniert und ist nichts kaputt gegangen :-) Anstatt des 10µF
Kondensator habe ich einen 100nF Keramik Kondensator genommen (da ich
die anderen nicht hatte).
Den Source Code gibt es auch auf der Seite:
http://elm-chan.org/works/mxb/mg.zip
Habe die Dateien leider weder mit "avra" noch mit "avr-as" kompiliert
bekommen, daher habe ich einfach die mitgelieferte .hex Datei direkt auf
den Atmel übertragen. Mein Programmieradapter kann avr109 und avr910.
Ersteres ist soweit ich weiss normalerweise schneller, hat aber nicht
funktioniert. Letzteres hat funktioniert, z.B. so:
avrdude -p t45 -b 115200 -u -F -c avr910 -P /dev/ttyUSB0 -U
flash:w:mg.hex -vvv
Danach ist man schon fast fertig, allerdings läuft der Atmel jetzt noch
zu langsam, da er im Auslieferungszustand einen Prescaler für die
Systemclock gesetzt hat. Ausserdem muss man "High Frequency PLL Clock"
aktivieren. Dazu muss man die Fuse bits im Low Fuse Byte anpassen, z.B.
geht das mit avrdude so:
* avrdude -p t45 -b 115200 -u -F -c avr910 -P /dev/ttyUSB0 -t
* "write lfuse 0 0xe1"
* (Strg+D)
Danach kann man direkt die Lautsprecher anschliessen und sollte die
Melodie hören, die wirklich toll klingt für so ein kleines Teil!
Hoffe das hilft irgendwem :-) Oder vielleicht hat ja jemand ein paar
Anmerkungen (z.B. wozu die Widerstände sind? Lautstärkenbegrenzung? Ob
man vielleicht doch lieber 10µF nehmen sollte oder obs egal ist? Ob man
dem Lautsprecher noch einen Kondensator geben könnte, um den Klang noch
besser zu machen, o.ä.? Was BOD=2.7V im Schaltplan bedeutet?)
Viele Grüße
Flo
Na dann: Glückwunsch zum gelungenen Aufbau.
Die Widerstände sollen eine Überlastung des Controllers verhindern, wenn
die Impedanz des Lautsprechers zu klein wäre. Der Kondensator soll
verhindern, daß die Betriebsspannung bei Laständerungen einbricht.
BOD bedeutet: Brown Out Detection, was soviel heißt wie Überwachung, ob
die Betriebsspannung des Controllers "absackt".
Dafür gibt es auch eine "Fuse".
MfG Paul
Hallo!
Ich brauche dringend Hilfe von jemandem, der es schon mal zum Laufen
gebracht hat:
Progammieren tue ich zwar schon seit ziemlich lange, mit Perl hatte ich
aber noch nie was am Hut gehabt.
Doch leider ist ja das Skript, das die txt-Datei in .asm konvertiert, in
Perl geschrieben.
So, hab mir also ActivePerl runtergeladen und installiert. Das im
Download mitgelieferte "example.pl" konnte ich einwandfrei ausführen,
doch die "mel2asm.pl" partout nicht! Das Ganze unter WinXP.
Gebe ich in cmd ein "perl _:\...\mel2asm.pl", so scheint er in eine
Endlosschleife zu gehen. Denn die Eingabeaufforderung wird nicht
angezeigt, sondern cmd "hängt" da so (also "C:\...\..>" wird nicht
ausgegeben).
(Falls nicht klar was gemeint ist, poste ich auch noch mal n Sreenshot.)
Mache ich "#perl" am Anfang des Skriptes weg, dann kommt Fehlermeldung
[syntax errir at mel2asm.pl line 1, near "txt >"]
Warum?
Ich hoffe wirklich, ihr könnt mir helfen, da es für ein Geschenk für
meine beste Freundin zum bDay ist und mir es sehr am Herzen liegt!
Danke im Voraus!
MfG J!M!
das Programm funktioniert schon allerdings ist das kommandozeilen
verhalten nicht so wie man es erwaeten würde.
das programm ließt daten von der Standardeingabe und gibt die
umgewandelten auf der standardausgabe aus.
Kommandozeilenparameter werden ignoriert.
am begin des scriptes steht ein beispiel, wie das ding aufgerufen werden
sollte und zwar:
perl mel2asm.pl < mel.txt > melody.asm
das heißt die datei mel.txt wird auf die standardeingabe umgeleitet.
Für das programm sieht es aus, als tippt jemand den inhalt der datei
direkt ein.
und die Ausgabe des Programms wird in melody.asm umgeleitet.
wenn du das > melody.asm weglässt wird alles in der kommandozeile
ausgegeben
Vieeelen vieelen Dank!
Da ich keine Ahnung von Perl habe, dachte ich dass "mel2asm.pl < mel.txt
> melody.asm" bereits ein Skriptbefehl ist, also das Skript selbst diese
Einlese und Ausgabe macht, aber anscheinend war es nur ein Kommentar.
Nochmal Danke! däumchen
Hallo,
ich hatte das gleiche Problem mit mel2asm.pl und habe es in javascript
(mit FSO) nachgebaut (win-XP) einfach drag & drop im explorer und
melody.txt wird in melody.asm umgewandelt (evtl. etwas umständlich
umgesetzt).