mikrocontroller.net

Forum: Compiler & IDEs STK200 ATMEGA16


Autor: Markus Rinio (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ponyprog wenns klicki-bunti sein soll, avrdude wenns komfortabel sein
darf ;-)

Matthias

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Markus Rinio (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.)?

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Markus Rinio (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schaltet man auf den Quarz um?

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fuse bits.

Autor: Markus Rinio (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.