Forum: Mikrocontroller und Digitale Elektronik leichter Einstieg in ASM für AVR


von Lucas (Gast)


Lesenswert?

Hallo,

habe beim Googeln das AVR-ASM-Tutorial von Gerhard Schmitd entdeckt.
Sieht interessant aus.

Jetzte will ich selber mal ein paar Sachen in ASM ausprobieren.

Habe allerdings nur Bascom-Erfahrung und einen SP12-Progger (allerdings 
mit eigener Stromversorgung, nicht vom PC).

Bin jedoch auch Bascom-verwöhnt: Programm schreiben, kompilieren, auf 
AVR brennen, geht alles mit Bascom-AVR.

Wie sieht es denn bei ASM aus, gibt es da auch was ähnliches, also 
Editor, Compiler und Brennprogramm (für SP12) in einem?
Wenn ja, was könnt ihr empfehlen?

von MirkoB (Gast)


Lesenswert?

Nimm das AVR-Studio. (Gibts auf der Seite von Atmel) Ist sogar ein 
Softwaredebugger mit drin.

Vorteil ist, das man sogar seine Bascom-Hex Files damit einlesen kann 
und debuggen kann... ;) (Und man sieht, was für einen grauenhaften Code 
Bascom manchmal produziert)

Als Programmiersoftware dann die mitgeleiferte zum SP12 nehmen...

Mirko

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

ASM kann das AVR-Studio 4.x . Empfehlen kann ich aber nur originale 
AVR-Programmer. Die werden auch komplett vom AVR-Studio unterstützt. Der 
günstigste mit knapp 40EUR ist der AVR-ISP mkII, der beherrscht alle 
seriellen Protokolle, außer High-Voltage. Damit kann man fast alle 
Megas, Tinys und XMegas programmieren.

von Lucas (Gast)


Lesenswert?

Danke für die Antworten!

MirkoB schrieb:
> Als Programmiersoftware dann die mitgeleiferte zum SP12 nehmen...
vom AVR-studio mitgeliefert oder woher?


und kann jemand sagen, ob es reicht, die AVR Studio-Version 4.18 SP2 
runterzuladen, oder ob vorher noch AVR Studio 4.18 installiert werden 
sollte (s.u., link)?

http://www.mikrocontroller.net/articles/AVR-Studio

von spess53 (Gast)


Lesenswert?

Hi

Erst AVR Studio 4.18 installieren. Dann SP2.

MfG Spess

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Lucas schrieb:
>> Als Programmiersoftware dann die mitgeleiferte zum SP12 nehmen...
> vom AVR-studio mitgeliefert oder woher?

AVR-Studio liefert Treiber für originale ATMEL-Programmer mit, der SP12 
müßte seine eigenen Treiber haben, aber AVR-Studio unterstüzt den nicht.

von Lucas (Gast)


Lesenswert?

>Erst AVR Studio 4.18 installieren. Dann SP2.

Danke!


Travel Rec. schrieb:
> AVR-Studio liefert Treiber für originale ATMEL-Programmer mit, der SP12
> müßte seine eigenen Treiber haben, aber AVR-Studio unterstüzt den nicht.

heißt das, man kann den SP12-Progger nicht unter AVR Studio nutzen?

von spess53 (Gast)


Lesenswert?

Hi

>heißt das, man kann den SP12-Progger nicht unter AVR Studio nutzen?

Du kannst deine Programmiersoftware vom AVR-Studio aus aufrufen.

MfG Spess

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ja, das heißt es. Du kannst aber das *.hex-File mit AVR-Studio erzeugen 
und dann mit der SP12-Software den Controller brennen, wobei dieser 
Controller dann von der SP12-Software unterstützt sein muß. AVR-Studio 
unterstützt alle aktuellen AVRs.

von Lucas (Gast)


Lesenswert?

spess53 schrieb:
> Du kannst deine Programmiersoftware vom AVR-Studio aus aufrufen.

dann müsste ich Bascom AVR aufrufen, geht das?

wovor mir grauen würde, wäre, dass ich mit dem eine Programm das 
ASM-File erzeuge, es dann irgendwo speichern muss, um es dann mit einem 
anderen programm wieder aufzurufen, um es dann damit schließlich auf den 
AVR brennen zu können.

von Lucas (Gast)


Lesenswert?

Travel Rec. schrieb:
> und dann mit der SP12-Software den Controller brennen

was meinst du mit SP12-software, gibt es da eine eigene? ich mache das 
immer unter bascom avr.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Lucas schrieb:
> was meinst du mit SP12-software, gibt es da eine eigene? ich mache das
> immer unter bascom avr.

Zumindest ist auf der SP12-Homepage davon die Rede. Wenn bascom das 
kann, umso besser.

Lucas schrieb:
> wovor mir grauen würde, wäre, dass ich mit dem eine Programm das
> ASM-File erzeuge, es dann irgendwo speichern muss, um es dann mit einem
> anderen programm wieder aufzurufen, um es dann damit schließlich auf den
> AVR brennen zu können.

Da wird Dir wohl nichts anderes übrig bleiben.

von Paul Baumann (Gast)


Lesenswert?

Du kannst aber auch in der Bascom-Oberfläche Assemblerprogramme eingeben
und testen.

Dazu muß man entweder die Kompilerdirektiven
$ASM

Hier das ASM Programm entragen

$END ASM

benutzen oder vor einen ASM-Befehl ein ! setzen.

MfG Paul

von Lucas (Gast)


Lesenswert?

> Lucas schrieb:
>> wovor mir grauen würde, wäre, dass ich mit dem eine Programm das
>> ASM-File erzeuge, es dann irgendwo speichern muss, um es dann mit einem
>> anderen programm wieder aufzurufen, um es dann damit schließlich auf den
>> AVR brennen zu können.
>
> Da wird Dir wohl nichts anderes übrig bleiben.

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah 
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!!! 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
!!!!!!!!

nee im ernst, da muss es doch noch andere möglichkeiten geben.
das blöde ist, dass ich grade mal ein bisschen zeit für sowas übrig 
habe, wenn ich jetzt noch einen neuen brenner bestellen muss, ist der 
garantiert erst mitte nächster woche hier...

kann man nicht mit einem Mega8 einen Brenner basteln, der unter AVR 
Studio genutzt werden kann?

von Lucas (Gast)


Lesenswert?

Paul Baumann schrieb:
> Du kannst aber auch in der Bascom-Oberfläche Assemblerprogramme eingeben
> und testen.
>
> Dazu muß man entweder die Kompilerdirektiven
> $ASM
>
> Hier das ASM Programm entragen
>
> $END ASM
>
> benutzen oder vor einen ASM-Befehl ein ! setzen.

ja, ich weiß, ist eigentlich auch eine coole sache.

allerdings reserviert (soweit ich gehört habe) Bascom vorab schon einige 
funktionen/variablen/register(!?, man korrigiere mich nötigenfalls!)
d.h., man hat dann immer auch Bascom-Ballast mit im Programm.

deshalb will ich lieber direkt in ASM einsteigen

von Paul Baumann (Gast)


Lesenswert?

>kann man nicht mit einem Mega8 einen Brenner basteln, der unter AVR
>Studio genutzt werden kann?

Das kann man machen:
http://www.obdev.at/products/vusb/avrdoper.html

Diesen Apparat habe ich mir gebaut und er funktioniert prima mit dem
AVR-Studio zusammen.

MfG Paul

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ich würde das nicht als "leichten Einstieg" bezeichnen.

von Lucas (Gast)


Lesenswert?

kommt darauf an...

leider finde ich zum AVR-dropper keinen schaltplan.

ich vermute mal, der größere IC auf der platine ist der M8 und der 
kleinere ist ein MAX232...

gibt es das ganze nicht noch ein wenig kompakter?
immerhin benutze ich seit jahren erfolgreich SP12, bin also waschechter 
minimalist.
;)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Naja - die ganz minimalen Teile unterstützt halt das AVR-Studio nicht...
Es gibt auch noch den hier: 
http://www.embedded-projects.net/index.php?page_id=135
Aber am aktuellsten sind und bleiben immer die Originalprogrammer. Wenn 
Du viel Zeit und Ausdauer hast, bau Dir einen Programmer, wenn Du am 
Wochenende etwas programmieren möchtest, bestell Dir einen AVR-ISP mkII.

von Paul B. (paul_baumann)


Lesenswert?

Hier ist noch eine abgespeckte Version des AVR-Doper ohne 
HV-Programmier-
möglichkeit:
http://rototron.info/default.aspx?Page=USBAVR/USBAVR.aspx

MfG Paul

von Lucas (Gast)


Lesenswert?

habe grade gesehen, dass das AVR Studio auch Brenner für die COM-Dose 
akzeptiert.

Gibt es da nichts einfaches zum Nachbau? M8 und MAX232 habe ich 
vorrätig, mit Logik-ICs siehts leider bis auf ein paar Exemplare in 
meiner Bastelkiste eher bescheiden aus.

HV-Programmierung ist nicht erforderlich...

von Lucas (Gast)


Lesenswert?

PS: auf die schnelle habe ich noch diesen beitrag hier gefunden:

Beitrag "AVR direkt aus AVR-Studio heraus brennen"
(mit parallelem ISP-Programmer und Ponyprog)


das geht ja schon stark in die richtung...  so ganz verstehe ich zwar 
noch nicht, wie es gemacht wird, aber das kommt hoffentlich noch
;)


ich frage mich außerdem, ob der dort angegebenen parallel-progger mit 
dem 74HC244 im grunde baugleich zum SP12-Progger ist (von wegen 
anschlussbelegung), muss ich später mal gucken.

hier der schaltplan von der 74HC244-version:
http://rumil.de/hardware/avrisp.html

hier rowalt:
http://www.rowalt.de/mc/avr/progd.htm

(falls jemand im vorfeld schon mal gucken möchte)

von hermy (Gast)


Lesenswert?

Lucas schrieb:
> ...baugleich zum SP12-Progger ist (von wegen
> anschlussbelegung), muss ich später mal gucken.

sieht nicht so aus:

       74hc244 (pp-pin)     rowalt (pp-pin)

sck          6                  2

res          9                  3

mosi         7                  9

miso         10                 11



(ohne gewähr)


der 74hc244-progger hat ausserdem noch zwei leitungen FN1 und FN2 (wofür 
auch immer die sein mögen...)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Warum einfach, wenn man es auch kompliziert machen kann. Das 
widerspricht dem Thementitel zu 100%. Die nächste Frage lautet dann: 
"Mein AVR geht nicht mehr. Hat das etwas mit den Fuses zu tun? Was 
bedeutet eigentlich RSTDISBL?"

Ich bin ´raus.

von Michael U. (amiga)


Lesenswert?

Hallo,

unabhängig davon, ob ein SP12-Programmer nun gut ist oder nicht: wenn 
das Teil bei Dir funktioniert mit Deiner Programmiersoftware und diese 
das HEX-File aus irgendeinem Ordner laden kann, ist es doch vorerst 
unproblematisch.
AVR-Studio speicher das HEX-File beim assemblieren in seinem 
Projektordner.
Also parallel die Programmersoftware offen lassen und das File aus 
diesen Ordner laden und brennen. Wenn Du jetzt was änderst, muß Du ja 
nach dem assembleiren nur die Programmersoftware nach vorn holen, daß 
gleiche File wieder neu laden und brennen.

Das habe ich jahrelang mit AVR-Studio und Ponyprog so gemacht...

Ansonsten eben USB-AVRLab o.ä zusammenlöten, den Mega8 mit Deinem SP12 
brennen und dann eben das Ding als MK2 aus AVR-Studio benutzen...

Gruß aus Berlin
Michael

von hermy (Gast)


Lesenswert?

Travel Rec. schrieb:
> Warum einfach, wenn man es auch kompliziert machen kann. Das
> widerspricht dem Thementitel zu 100%. Die nächste Frage lautet dann:
> "Mein AVR geht nicht mehr. Hat das etwas mit den Fuses zu tun? Was
> bedeutet eigentlich RSTDISBL?"
>
> Ich bin ´raus.

ich auch, zu kompliziert. morgen vormittag geh ich erst mal die enten im 
park füttern...

;)

von Lucas (Gast)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> unabhängig davon, ob ein SP12-Programmer nun gut ist oder nicht: wenn
> das Teil bei Dir funktioniert mit Deiner Programmiersoftware und diese
> das HEX-File aus irgendeinem Ordner laden kann, ist es doch vorerst
> unproblematisch.

Das habe ich mir eben auch überlegt.

Eigentlich geht es ja erst mal um ASM.

Das mit dem "zwei Programme gleichzeitig benutzen" ist eine gute Idee!!!

Ansonsten habe ich noch den AVRISP MKII entdeckt, der braucht nur einen 
M8 und ein bisschen Hühnerfutter, das aber für später.



Ok, wie bringe ich denn mit dem AVR-Studio die sprichwörtliche LED zum 
Blinken?
Gibt es irgendwo eine Anleitung, wie man im AVR-Studio die ganzen 
Fenster unter Kontrolle bekommt und was man wo wie eingeben muß?

Das Studio hat bei mir natürlich erst mal gemeckert, dass kein 
Programmer anwesend ist...

von Lucas (Gast)


Lesenswert?

So, habe jetzt im AVR Studio den Simulator eingeschaltet und einen Mega8 
ausgewählt.

Dann folgendes Programm eingegeben, es soll ein Brummen (Rechteck) an 
Port B, Bit 0 ausgeben:



.equ c1 = 0 ; Bestimmt die Tonhöhe
  sbi DDRB,0 ; Portbit ist Ausgang
Loop:
  sbi PORTB,0 ; Portbit auf high
  ldi R16,c1
Loop1:
  nop
  nop
  nop
  nop
  nop
  dec R16
  brne Loop1
  cbi PORTB,0 ; Portbit auf low
  ldi R16,c1
Loop2:
  nop
  nop
  nop
  nop
  nop
  dec R16
  brne Loop2
  rjmp Loop




Nach dem Compilieren kommen folgende Fehlermeldungen:

E:\Dokumente und Einstellungen\Kleimann\Eigene Dateien\zulu\zulu.asm(2): 
error: Undefined symbol: DDRB
E:\Dokumente und Einstellungen\Kleimann\Eigene Dateien\zulu\zulu.asm(4): 
error: Undefined symbol: PORTB
E:\Dokumente und Einstellungen\Kleimann\Eigene 
Dateien\zulu\zulu.asm(14): error: Undefined symbol: PORTB

Die Begriffe „DDRB“ und  „PORTB“ (er)kennt er wohl nicht.

Was kann/muss man machen?

von spess53 (Gast)


Lesenswert?

Hi

>Was kann/muss man machen?

Die passende Include-Datei einfügen.

   .include "m8def.inc"

   Progamm

MfG Spess

von spess53 (Gast)


Lesenswert?

Hi

Nachtrag: "m8def.inc" gilt natürlich nur für einen ATMega8.

MfG Spess

von hermy (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
> Nachtrag: "m8def.inc" gilt natürlich nur für einen ATMega8.
>
> MfG Spess

Ist schon klar ;)

Habe die Datei weggelassen, weil ich ja vorher schon den Atmega8 im 
Studio angeklickt hatte, dachte, das reicht...


werds gleich mal testen.

von hermy (Gast)


Lesenswert?

jupps, geht, controller pfeift munter vor sich hin.

Danke an alle!!!

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
Noch kein Account? Hier anmelden.