Hallo, ich würde gerne Assembler-Programme für den Mega16 schreiben und diese mit meinem STK 200 Entwicklungsboard ausprobieren. Die Software, die ich bisher zur Programmierung des AT90S8515 benutzt habe (wavrasm1.3 und AVRISP2.4) unterstützen den Mega16 aber nicht. Wer kann mir sagen, welche Programme unter Win NT 4 dies ermöglichen? (WinAVR habe ich gerade downgeloaded. Wegen fehlender Entwicklungsumgebung und einer unübersichtlichen Menge an DOS-Programmen konnte ich damit aber nichts anfangen.) Markus
Hi Ponyprog wenns klicki-bunti sein soll, avrdude wenns komfortabel sein darf ;-) Matthias
WinAVR hat übrigens keine DOS-Programme, das sind allesamt Win32 Programme. ;-) Auch Windows führt im Untergrund einfach nur Programme aus, ob man diese nun von einem cmd.exe aus oder vom Explorer mittels klickedicklick startet... Am Ende steht eine ausführbare Datei. Das Zusammenspiel dieser Programme wird normalerweise über ein Makefile und das Tool »make«[.exe] arrangiert. Beginnend beim README gibt es hinreichend Dokumentation dafür, so daß es Tausende Programmierer vor Dir geschafft haben, damit klarzukommen.
Vielen Dank für die Tips. Avrdude macht einen sehr guten Eindruck auf mich! Bei den ersten Tests tritt aber folgendes Verhalten auf: - Der 8515 laesst sich fehlerfrei programmieren mit avrdude -p 8515 -c stk200 -y -e -v -f i -i filename.hex - Beim Mega16, der in meinem STK200 im 40 Pin-"Analog Parts"-Sockel steckt, meldet Avrdude Fehler beim Verifizieren. Die Parameter sind obigen identisch (allerdings -p m16, statt -p 8515). Die Meldung sieht etwa folgendermassen aus: _________________________________________________________ 400 407 avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0000 0x03 != 0xff avrdude: verification error; content mismatch avrdude done. Thank you. _________________________________________________________ Die erste fehlerhafte Stelle ist nicht immer mit dem Programmanfang identisch. Je nachdem an welche Stelle man es schreibt (.ORG XXXX) kann diese Position auch spaeter kommen. Der Code kommt definitiv fehlerhaft im Chip an. Wenn man ihn mehrmals nacheinander an dieselbe Position uebertraegt, verhaelt sich das Testprogramm unterschiedlich (mal geht es, mal nicht). In jedem Fall gibt es aber eine solche Fehlermeldung. Das Verbindungskabel vom Computer zum STK200 ist mit grosser Wahrscheinlichkeit in Ordnung und sicher eingesteckt. (Der 8515 laesst sich immer noch korrekt programmieren.) Mir fiel von Anfang an auf, dass derselbe Code im Mega16 deutlich langsamer laeuft als im 8515. Kurzum: Ist mein Mega16 defekt oder kann es noch an etwas anderem liegen (Timing, etc.)?
Was denn fürn Windows? Es gab da offensichtlich versions- und tagesformabhängig einige Timing-Probleme, von denen ich auf der avrdude-Liste mitbekommen habe, daß die inzwischen repariert worden sind. Allerdings ist die aktuelle Version im Moment nur im CVS. Kannst aber auf der Liste mal fragen, ob Dir einer ein Windows-Binary zukommen läßt. Eins fällt mir spontan ein: der ATmega16 dürfte aus der Kiste raus erstmal mit dem 1 MHz RC-Oszillator laufen, das ist dann sicher ein Unterschied zu Deinem AT90S8515. Eventuell würde Umschalten auf den Quarz ja die Timing-Probleme lösen? Ach ja, das würde sicher auch die geringere Ausführungsgeschwindigkeit erklären... (ich hatte oben noch nicht bis zu Ende gelesen).
Es ist tatsächlich ein Timing-Problem und kann gelöst werden durch Verwendung des Programmier-Programms SP12. Dieses arbeitet sehr effektiv und man kann die Übertragungsgeschwindigkeit an die Taktfrequenz des AVR anpassen. Ausserdem erkennt es den AVR-Typ selbst. Für den Mega 16 braucht man einen Eintrag in der Device-Datei _sp12dev, welchen ich mir auf die Schnelle folgendermaßen zusammengestellt habe. Bisher schien es zu funktionieren, allerdings ist es möglich, dass noch Fehler in diesem Eintrag sind. Daher übernehme ich keine Garantie für die Richtigkeit dieses Eintrages. begin 0394 -i394 -iM16 DEVICENAME = ATmega16 FLASHSIZE = 8192 EEPROMSIZE = 512 PAGEMODE = 1 PAGESIZE = 64 READ_LOCK = lhlh hlll llll llll xxxx xxxx xxoo oooo WRITE_LOCK = hlhl hhll hhhx xxxx xxxx xxxx hhii iiii LOCK_MESSAGE = xxxx11 - no lock LOCK_MESSAGE = xxxx10 - write protected LOCK_MESSAGE = xxxx00 - read/write protected LOCK_MESSAGE = BTLKxx - Boot lock READ_FUSES = lhlh llll llll llll xxxx xxxx oooo oooo WRITE_FUSES = hlhl hhll hlhl llll xxxx xxxx iiii iiii FUSES_MESSAGE = 0xxxxxxx - BODLEVEL 4V (default 2.7V) FUSES_MESSAGE = x0xxxxxx - brownout detection enabled FUSES_MESSAGE = xxSUxxxx - reset delay FUSES_MESSAGE = xxxxCKSE - clock select WRITE_HIGH_FUSES = hlhl hhll hlhl hlll xxxx xxxx hili iiii READ_HIGH_FUSES = lhlh hlll llll hlll xxxx xxxx oooo oooo HIGH_FUSES_MESSAGE = 1xxxxxxx - OCD disabled HIGH_FUSES_MESSAGE = x0xxxxxx - JTAG enabled HIGH_FUSES_MESSAGE = xx0xxxxx - serial programming enabled HIGH_FUSES_MESSAGE = xxx0xxxx - CKOPT max HIGH_FUSES_MESSAGE = xxxx0xxx - eeprom not erased HIGH_FUSES_MESSAGE = xxxxxBZx - boot size HIGH_FUSES_MESSAGE = xxxxxxx0 - reset at boot loader WRITE_EXTD_FUSES = READ_EXTD_FUSES = EXTD_FUSES_MESSAGE = READ_CALIBRATION = llhh hlll llxx xxxx llll llll oooo oooo CALIB_MESSAGE = four calibration bytes
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.