www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA 16 Problem mit Assembler und AVR-Studio (Einstieg)


Autor: Walter Tarpan (nicolas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich versuche gerade den Einstieg in den Assembler der AVRs zu finden. 
Mit C habe ich da schon einiges gemacht, aber man will sich ja 
weiterentwickeln...

Als Entwicklungsumgebung nutze ich AVRStudio 4 (Service Pack 2). Zum 
ersten Testen verwende ich folgenden Assembler-Code (aus dem Buch 
"Günter Schmitt:
Mikrocomputertechnik mit Controllern der Atmel-RISC-Familie" mit 
leichten Abwandlungen):
; k2p1.asm Bild 2-2 Dualzähler als Taktteiler
; Seite 67
; PORTB: Ausgabe LED PB0 = Takt / 10   PB 7 = Takt / 1280
; PORTD: -
        .NOLIST          ;
    .INCLUDE <m16def.inc>  ; Deklarationen für ATmega16
    .LIST          ;
    .DEF  akku = r16    ; Arbeitsregister
    .CSEG          ; Programm-Flash
RESET:  rjmp  start      ; Reset-Einsprung
      .ORG  INT_VECTORS_SIZE          ; Interrupteingänge übergehen
start:  ldi    akku,LOW(RAMEND); Stapelzeiger
    out    SPL,akku    ; anlegen
    ldi    akku,HIGH(RAMEND);
    out    SPH,akku    ;
    ser    akku      ; akku <- $ff
    out    DDRB,akku    ; PortB ist Ausgang
    out    DDRD,akku    ; PortD leuchtet!
    out    PORTD,akku    ;
    clr    akku      ; Zähler löschen
; Taktteile: 5 Takte Low / 5 Takte High gibt Takt / 10
loop:  out    PORTB,akku    ; 1 Takt: Zähler ausgeben
    inc   akku      ; 1  Takt: Zähler erhöhen
    nop            ; 1 Takt: Verlängerte Schleife
    rjmp  loop      ; 2 Takte: Schleife
    .EXIT          ; Ende des Quelltextes

Die Assemblierung funktioniert fehlerfrei, auch die Simulation im 
AVR-Studio macht genau das, was ich auch erwartet habe. Allerdings ist 
der ATmega16 nach dem Hochladen des Quelltextes völlig stumm. Von den 
Fuses gehe ich aus, daß sie stimmen, weil in C unter AVR-Studio 
erstellte Programme direkt laufen.

Die Assembler-Optionen sind wie default (außer daß er er noch zusätzlich 
ein "list-file" erstellt), also:
- AVR-Assembler Version 2
- Intel Intellec 8 (Intel hex)

So langsam gehen mir die Ideen aus, was man noch ausprobieren könnte 
oder was ich nicht beachtet haben könnte, deshalb wäre ich für eine 
diesbezügliche Hilfe sehr dankbar.

Viele Grüße
Nicolas

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nicolas,

ich nehme an, Du hast nicht den Quelltext, sondern das Hex-File 
übertragen.
Wie sieht denn Deine Hardware und Spannungsversorgung aus und an welchen 
Ports hänegen die LED.

Gruss Otto

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du schon mal erfolgreich ein Programm auf dem Controller ans Laufen 
bekommen?

Womit überträgst du den Code? Wird der nach der Übertragung verifiziert?

Autor: Walter Tarpan (nicolas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

danke für die schnellen Antworten und die Anregungen, insbesondere mit 
den Spannungsversorgungen.

Mitlerweile habe ich es durch Zufall herausgefunden: Der Beispielcode in 
C, der genau das gleiche machen sollte (bis auf das Timing, das ist ja 
in C nicht ganz so Taktgenau einstellbar) hatte die Ausgabe auf PORTC, 
nicht auf PORTB und PORTD. PORTC funktioniert aber -im Gegensatz zu den 
anderen beiden- auch, wenn auf AVCC keine Versorgungsspannung liegt - 
die hatte ich nämlich vergessen.

Einen schönen Sonntag wünscht euch noch
Nicolas

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, passiert dir wahrscheinlich beim nächsten Mal nicht mehr :)

Schönes Restwochenende!

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.