www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Makros Simulieren mit AVR Studio 4


Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Halli Hallo!

Ich habe folgendes problem: Ich wollte mit hilfe meines boards 
(atmega16) mit einem simplen programmcode 2 LED´s nacheinander blinken 
lassen und die zeit zwischen den blinkvorgängen mit einer stopuhr 
stoppen, da ich eine wartezeit von ca 0,7-0,8 sekunden brauche. das 
programm funktioniert einwandfrei... klar, ist auch sehr simpel. 
allerdings kann ich das programm nicht simulieren, da AVR Studio 4 beim 
aufrufen der makros hängen bleibt.
Ist das eine bekannte krankheit von AVR Studio 4? Ich glaube nicht, dass 
ich das makro falsch geschrieben habe, weil die LED`S blinken 
einwandfrei!
Vielen dank schonmal im Vorraus.

Alexander

Porgrammcodefragment:
.macro warte
  clr    r0
  clr    r1
  ldi    r17,4
  mov    r2,r17

loop:
  dec   r0
  brne  loop
  dec   r1
  brne  loop
  dec   r2
  brne   loop
.endmacro

start:

  sbi   portd,5  ;LED 1 An
  warte          ;HIER bleibt der Simulator hängen
  cbi   portd,5  ;LED 1 Aus
  sbi   portd,6  ;LED 2 An
  warte
  cbi  p ortd,6  ;LED 2 Aus
  rjmp  start

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der bleibt nur scheinbar hängen. Wie Du leicht ausrechnen kannst, 
verheizt Dein Delay ungefähr 4  256  256 * 3 = 780000 Taktzyklen (wie 
man darauf kommt? Selbst überlegen!). Der Simulator braucht einfach eine 
Weile, bis er da durch ist. Bei mir dauert es ca. 10 Sekunden.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...ungefähr 4 · 256 · 256 · 3 = 780000 Taktzyklen

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe grade, du hast recht! Ich bin was AVR angeht noch nen anfänger, 
sorry :>
Tausend dank!
Alex

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

unabhängig davon:
in der Assembler-Hilfe bei den Befehlsbeschreibungen steht die Anzahl 
Takte drin, die der AVR für jeden Befehl braucht.
Windows hat einen Rechner im Zubehör und die Taktfrequenz, die Dein AVR 
benutzt, solltest Du auch kennen.

Du kannst es also ganz ohne Stoppuhr wesentlich genauer festlegen...

Gruß aus Berlin
Michael

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja.

Makros werden nicht aufgerufen.
Wenn du ein Makro verwendest, wird der im Makro stehende Code an der 
Stelle des Makros eingesetzt

Das Makro vereinfacht also nur etwas die Schreibweise. Aber im Grunde 
ist dein Programm äquivalent zu
start:

  sbi   portd,5  ;LED 1 An

  clr    r0
  clr    r1
  ldi    r17,4
  mov    r2,r17

loop1:
  dec   r0
  brne  loop1
  dec   r1
  brne  loop1
  dec   r2
  brne   loop1

  cbi   portd,5  ;LED 1 Aus
  sbi   portd,6  ;LED 2 An

  clr    r0
  clr    r1
  ldi    r17,4
  mov    r2,r17

loop2:
  dec   r0
  brne  loop2
  dec   r1
  brne  loop2
  dec   r2
  brne   loop2

  cbi  p ortd,6  ;LED 2 Aus
  rjmp  start


Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die taktfrequenz ist 4 MHZ, folgich 0,25µs pro takt, das kenn ich alles, 
aber die anzahl der takte für nen bestimmten befehl hab ich noch nicht 
gefunden! aber danke für den tip, ich werds beherzigen

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl heinz Buchegger
Jaah, ich weis schon selbst, was makros machen und für was sie gut sind 
xD soo planlos bin ich auch nicht :> aber danke für die mühe

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander schrieb:
> aber die anzahl der takte für nen bestimmten befehl hab ich noch nicht
> gefunden!

Datenblatt ab Seite 333 (rechte Spalte).

Gruß,
Magnetus

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im AVR-Studio Cursor auf Befehl setzen und F1 drücken --> Kontexthilfe.

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.