www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Simulator V1 = V2? Bug im Timer von V1?


Autor: Moritz E. (devmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe gerade mal mein asm progi im studio zuerst mit Simulator V1 und 
dann im V2 simuliert, und bemerkt das bei gleichem Device und gleichen 
Options im V1 mein Timer genau doppelt soviele Takte als im V2 benötigt, 
und nach Rechnung (siehe unten) der V1 damit falsch liegt.

(Source Code und Rechnerei unten)

Ist das ein Bug im SimV1? Anders kann ich mir die inkonsistenz nicht 
erklären. Die DeviceDef.inc ist eine eigene, also nicht aus dem 
Stammverz. Oder kann es sein, das V2 automatisch die Stammverz. Def.inc 
nimmt, weil meine eigene sich nicht als 644P, sondern 644 ausweist?


[Edit, in "Known Issues" wird allgemein von Fehlern im Prescaler 
geredet, vermutlich ist es damit beantwortet, deshalb noch eine kleine 
Quizfrage, sind die "xxxP" Modelle abwärtskompatibel? Sprich, kann ich 
mit 644P Simulieren und gleiche Ergebnisse wie beim 644 erwarten, wenn 
ich mit 644Device Datei baue, und nur 644 Funktionen setze? (Keine im 
644 unbenutzten Flags oder Register misbraucht)]

Gruß,

Moritz












Anhang: Source


Ausschnitt aus den Defs:

.equ OSCFREQ   = 20000        ;in kilohertz

.equ IOFREQ  = OSCFREQ/2   ; = 10000

;Clockticks für eine Microsekunde
.equ T_1US  = IOFREQ/1000  ; =10


;Prescaler
.equ T2PRESC   = (0<<CS22)|(1<<CS21)|(1<<CS20)  3bit 0..7: aus, 1, 8, 
32, 64, 128, 256, 1024

;T2 Timerset
.equ T2TAKT  = 100*T_1US/32  ;IRQ alle 100us generelles systemtiming
   ; = 31

Timer Init:


  ldi  Rtemp, T2PRESC
  sts  TCCR2B, Rtemp
  ldi  Rtemp, 1<<WGM21    ;ehemals ctc
  sts  TCCR2A, Rtemp
  ldi   Rtemp, T2TAKT    ;Lade wert für timer2 compare
  sts   OCR2A, Rtemp

  ldi  Rtemp, 1<<OCIE2A
  sts  TIMSK2, Rtemp


31 prescaled T2 ticks macht wieder *32 = 1000, welches V2 liefert, V1 
dagegen das doppelte.

(Mein Device ist AtM644, da SimV2 nur 644P kennt wurde beides auf 
letzterem Simuliert)

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.