PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Assembler Programmieren ATmega8



Marco123
11.09.2005, 15:10
Hallo,

zunächst muss ich erwähnen, das ich ein Neuling bin in Sachen Mikrocontroller programmieren.
Ich habe ein Board mit einem ATmega8 Controller und möchte ein kleines Programm schreiben.
Welches Assembler-Programm kann ich dafür nehmen und welche Bibliotheksdatei ( Header-Datei ) brauche ich dafür und wo bekomme ich die her ?

Danke in Vorraus.

Gruß
Marco

Florian
11.09.2005, 15:24
Hallo Marco!
Zuerst ein herzliches Willkommen hier im Roboternetz!
Jetzt tu' mir aber bitte den Gefallen und such' hier im Forum nach AVR-Studio und PonyProg, AVR-Studio ist ein Assembler und PonyProg ein Flasher.
Im AVR-Studio sind die Includes enthalten.
Google wird Dir sicherlich auch ein paar sehr nützliche Links ausspucken ...

Marco123
11.09.2005, 15:34
Hi,

ich suche noch die Include-Datei: m8def.inc
Hat jemand einen Tipp wo ich die finde ?

Danke

Gruß
Marco

toeoe
11.09.2005, 18:18
Hi,

die Include Datei ist beim AVR-Studio enthalten. Musst du also im Code dann nur noch einbinden:
.include "m8def.inc

Gruß
Thomas

skillii
11.09.2005, 18:31
ist die Include Datei nicht beim Atmel-Assembler dabei?
ich denke bei mir war es halt so und Florian hat es auch geschrieben...

mfg skillii

Peter Themsfeld
11.09.2005, 20:15
Hallo Marco,

ich nehm das hier für den mega8...

http://www.myavr.de/download/myAVR_Workpad_SE_demo.exe

Marco123
11.09.2005, 21:44
Danke für die Tipps.
Arbeite mit AVR-Studio 4 und da ist die Datei schon mit drin.

Habe ein Programm geschrieben und will es jetzt auf den Controller flashen.
Habe einen ATmega8 auf dem myAVR-Board.
Habe den Button Build betätigt und es hat funktioniert. Assembly wurde erstellt mit 0 Errors und 0 Warnings.
Wie kann ich es aber nun auf den Controller flashen ?

Wenn ich auf Start Debugging klicke öffnet sich ein Fenster mit:
Select Debug Platform & Device
Was muss ich hier einstellen ?

Wähle z.B. ICE40 und dann ATmega8
Was mache ich falsch ?
Es kommt dann die Fehlermeldung: Could not connet

Ich bin ratlos!!

Hat jemand einen Rat?

Danke im Vorraus.

Gruß
Marco

toeoe
11.09.2005, 21:48
Das mit Debugging hat nichts mir Flashen direkt zu tun. Im Debug-Modus kannst du das Programm simulieren, somit sparst du dir Schreibzyklen ;)

Flashen kannste am besten mit PonyProg, yaap und AVRDude (was ich benutze)

Gruß
Thomas

Marco78
11.09.2005, 21:48
Falls keiner mehr wach ist, der dir die 100%ige Lösung geben kann, antworte ich mal im Ansatz.

Debugen willst du ja nicht. Du willst ja flashen. ICE hört sich sehr verdächtige nach einem Adapter zum Debuggen an. InCurcitEmulator.

Ich hab AVR-Studio nicht installiert. Aber irgendwo wird da was mit flashen steh'n.

Marco123
11.09.2005, 21:54
Ja das stimmt. Ich will flashen.
ICE hört sich für mich auch nach einem Adapter zum Debuggen an.

Ok danke erstmal.
Ich werde mich weiter mit dem AVR-Studio beschäftigen.

Danke.
Gruß
Marco

olfi13
11.09.2005, 21:54
Den Button "AVR" oben in der Leiste, dann sollte ein Dialogfenster aufgehen. Dort die Schnittstelle usw. wählen.
Der Rest sollte sich selber erklären.
Gruß, olfi

Marco123
11.09.2005, 22:10
Den Button "AVR" oben in der Leiste betätige ich, aber dann soll ich eine Plattform und den Port wählen.

Ich weiß aber nicht warum ich da eine Plattform wählen soll ?
Der ATmega8 wird doch über ISP programmiert.
Was muss ich da auswählen ??

Habe schon alles versucht.
Aber einen Connect bekomme ich nicht.

Was mache ich falsch ?

Gruß
Marco

olfi13
11.09.2005, 22:28
Nun, offensichtlich bekommst Du keine Verbindung zu deinem Board,
ich kenne das myAVR-Board nicht. Wird das vom Studio unterstützt?

Marco78
11.09.2005, 22:38
Ich denke mal die Einstellung muss STK200 sein. Ich kenne das Board auch nicht, ist aber so ein Bauchgefühl ;)
Benutzt du Windows XP?
Installier mal NTPortIO. Ein Lowlevel-Porttreiber, womit Software wider das machen kann, wofür sie geschrieben wurde aber Bill Gates sie seit Win2K hindert. Auf die Hardware zugreifen :D

Kann sein, das das der Fehler ist.

Vielleicht liegt es aber auch an der Hardware? Hast du schonmal damit was geflasht oder Fusebits gesetzt? Wie sicher bist du dir, das es nicht an der Hardware liegt?
Ferndiagnose ist bei sowas immer schwer :(

Jahn Kohlhas
12.09.2005, 06:50
Hallo,

das AVR-Studio unterstütz den SP12 Programmer definitiv nicht ... da hilft nur das der eigentliche FLASH-Vorgang mit einem anderen Programm durchgeführt wird... der oben genannte Programmer zum Beispiel wird von TwinAVR, YAAP und AVRDUDE unterstützt... oder nimm einfach das myAVRWorkpad, öffne damit das HEX File und flasche es... geht absolut easy ;-)

Gruß Jahn

Marco123
12.09.2005, 08:50
Danke für den Tipp.
Also mit dem AVR-Studio 4 bekomme ich überhaupt keinen Connect zum Board.
Mit dem myAVR Workpad kann ich flashen. Von dem Programm habe ich aber leider nur die Demoversion.

Gruß
Marco

Marco123
12.09.2005, 09:33
Hallo,
habe mit AVRStudio4 dieses kleine Programm geschrieben und als hex-File ausgeben lassen. Danach mit dem myAVR-Workpad geflasht.
Eigentlich soll das Programm am PortD.3 auf 1 legen, damit die LED an diesem Port ausgeht.
Leider funktioniert das nicht.
Es leuchtet keine LED.
Was mache ich falsch ?
Hat jemand einen Tipp für mich ?

.include "m8def.inc"
; Reset and Interrupt vector ; VNr. Beschreibung
rjmp main ; 1 POWER ON RESET
reti ; 2 Int0-Interrupt
reti ; 3 Int1-Interrupt
reti ; 4 TC2 Compare Match
reti ; 5 TC2 Overflow
reti ; 6 TC1 Capture
reti ; 7 TC1 Compare Match A
reti ; 8 TC1 Compare Match B
reti ; 9 TC1 Overflow
reti ; 10 TC0 Overflow
reti ; 11 SPI, STC Serial Transfer Complete
reti ; 12 UART Rx Complete
reti ; 13 UART Data Register Empty
reti ; 14 UART Tx Complete
reti ; 15 ADC Conversion Complete
reti ; 16 EEPROM Ready
reti ; 17 Analog Comparator
reti ; 18 TWI (I²C) Serial Interface
reti ; 19 Store Program Memory Ready
;----------------------------------------------------------------------
; Start, Power ON, Reset
main:
ldi r16,low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16 ; Init Stackpointer


ldi r16,0b00001000
out PORTD,r16

mainloop:

rjmp mainloop


Danke

Gruß
Marco

Jahn Kohlhas
12.09.2005, 10:23
du solltest dich auf jeden fall mit der beteutung der gegister DDRx, PORTx und PINx beschäftigen



include "m8def.inc"

; ? wo sind die Interuptvektoren ???
; die solltest du nicht weg lassen !!!
; schau dir mal die vorlage für ein
; assembler grundgerüst im myAVRWorkpad an !!!

main: ; init STACK fehlt!
ldi r16,0xFF
out DDRD,r16
; PORT D ist jetzt Ausgang
mainloop:
ldi r16,0b00000000 ; alle Bits auf Low
out PORTD,r16 ; PortD alle Pins Low
rjmp mainloop


Gruß

Marco123
12.09.2005, 10:31
OK
Danke

Gruß
Marco