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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.