mikrocontroller.net

Forum: Compiler & IDEs Taktanzahl für Sprung


Autor: yamamoto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich würde gerne wissen wieviele Takte der ATMega8 braucht um einen 
Sprung auszuführen.

Ich habe in C eine Funktion geschrieben, die Bits senden soll. Das 
Listing sieht folgendermasen aus:
00000146 <senden>:

  while(1){

//    zaehler1DauerPattern=4;

    asm volatile (
 146:  50 91 3f 01   lds  r21, 0x013F
 14a:  40 91 40 01   lds  r20, 0x0140
 14e:  30 91 3d 01   lds  r19, 0x013D
 152:  20 91 3e 01   lds  r18, 0x013E
 156:  80 91 41 01   lds  r24, 0x0141
 15a:  90 91 42 01   lds  r25, 0x0142
 15e:  32 bb         out  0x12, r19  ; 18
 160:  42 bb         out  0x12, r20  ; 18
 162:  42 bb         out  0x12, r20  ; 18
 164:  32 bb         out  0x12, r19  ; 18
 166:  80 93 41 01   sts  0x0141, r24
 16a:  90 93 42 01   sts  0x0142, r25


      :[zaehler1DauerPattern] "+r" (zaehler1DauerPattern),[zaehler2DauerPattern] "+r" (zaehler2DauerPattern): [txen_l_txd_h] "r" (txen_l_txd_h), [txen_l_txd_l] "r" (txen_l_txd_l),[txen_h_txd_h] "r" (txen_h_txd_h), [txen_h_txd_l] "r" (txen_h_txd_l), [addrPORTD] "I" (_SFR_IO_ADDR (PORTD))
    ); 

    wdt_reset();
 16e:  a8 95         wdr
 170:  ea cf         rjmp  .-44       ; 0x146 <senden>

Er sendet kontinuirlich 4 Bits. Zwischen den Packeten sind immer Pausen, 
weil er Zeit für den Rücksprung braucht. Allerdings messe ich zwischen 
den Bitpacketen viel mehr als 10 Takte. Woran liegt das?


Danke und Gruß
Yamamoto

Autor: User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Allerdings messe ich zwischen den Bitpacketen viel mehr als 10 Takte.

Wieviel mehr? ..wenn mans mal rein nach Datenblatt abzählt, dann müssten 
das sein..:
- 6x lds - 12 Takte
- 2x sts - 4 Takte
- vermutlich ein rjmp - 2 Takte

Macht also 18 Takte Pause auf vier Takte Bitbanging. Weicht Dein 
Messergebnis erheblich davon ab?

Grüße

Autor: doc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviele Takte eine Befehl braucht, steht im Datenblatt.

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.