Forum: Projekte & Code Erweiterte m16M1def.inc


von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

Hallo, da ich nicht gerade die schnellste Hardware habe arbeite ich noch 
mit der letzen AVR-Studio Version 4.19....

Im Datenblatt habe ich folgende Angabe gelesen
>Bit 5 – RTGEN
>Set this bit to enable the ICP1A as a timer/counter retrigger input. (This bit is 
>reserved for future use. For ensuring compatibility with future devices, this bit 
>must be written to zero when TCCRnB is written).

bisher habe ich das immer binär geschrieben, und es gab keine Probleme
1
ldi temp, 0bxx0xxxxx   ;Komentar Bit7=ICNC1 Bit6=.........
2
out tccr1b, temp

nun bin ich dazu übergegangen direkt die Symbole hinzuschreiben
1
ldi temp, (0<<ICNC1)|(0<<ICES1)|(0<<RTGEN)|(0<<WGM13)|(0<<WGM12)|(1<<CS12)|(0<<CS11)|(0<<CS10)
2
out tccr1b, temp

Das AVR-Studio brachte die Fehlermeldung
>error: Undefined symbol: RTGEN

in der m16M1def.inc Datei ist dieses eine Bit nicht definiert, was ich 
jetzt nachträglich im TCC1B Bereich gemacht habe.
1
.equ  RTGEN  = 5  ; Retrigger Input fuer ICP1 Pin

Das Problem ist jetzt weg.

Anbei die geänderte Datei einfach über die alte im Verzeichniss 
\Atmel\AVR Tools\AvrAssembler2\Appnotes kopieren.

Ist das bei den neueren Studioversionen korrigiert worden? Ansonsten 
würde ich es Atmel mal schreiben, möchte ungern das ganze Paket 
installieren/deinstallieren um mir diese Datei anzusehen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thomas O. schrieb:
> (0<<RTGEN)

Du weißt, was das ist?

Eine Null kannst Du so oft schieben, wie Du willst, sie bleibt eine 
Null. Also kannst Du sämtliche Teilausdrücke weglassen, in denen Du 
Nullen schiebst -- denn das Resultat bleibt das gleiche.

von Thomas (kosmos)


Lesenswert?

ja wenn man das Register vorher gelöscht hat kann man darauf verzichten, 
wenn ich jetzt aber sowieso einzelne Bits ändere kann ich da auch die 0 
mit aufnehmen dauert ja keinen Takt länger. Habe ich vorher mittels
ldi temp, 0bxxxxxxxx auch schon gemacht und dann gibts keine vorherigen 
Reste im Register ich spare mir also einen Takt und habe trotzdem 
saubere Verhältnisse.

Habe aber verstanden woraus du  hinaus willst Null bleibt Null, aber man 
weiß ja nicht ob da schon vorher eine Null war, wenn man ein temporäres 
Register verwendet.

von Peter II (Gast)


Lesenswert?

Thomas O. schrieb:
> ja wenn man das Register vorher gelöscht hat kann man darauf verzichten

bei LDI und OUT wird alles übernommen, es spielt keine Rolle was vorher 
drin war.

von Thomas (kosmos)


Lesenswert?

stimmt es wird ja alles neu geladen.

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
Noch kein Account? Hier anmelden.