AVR-GCC Assembler OUT/STS Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
AVR-GCC Assembler OUT/STS |
|
|
|
|
BID = 394720
fabianschuiki Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 102
|
|
Hi,
Hab hier ein Problem:
Ich will den Timer1 meines Prozessors (ATmega48) anspringen lassen, nur passt dem GCC Assembler die Anweisung
nicht:
Code : |
main.S:61: Error: number must be less than 64 |
|
Er akzeptiert für OUT nur I/O Register deren Addresse kleienr als 64 ist, d.h. ich kann das SREG grade noch mit OUT ansteuern, wenn ich folgendes schreibe:
Das SREG hat laut Datenblatt folgende Speicherzelle: 0x5F.
Also genau 0x3F (63), wenn man mit _SFR_IO_ADDR() die Adresse verschiebt (-0x20).
Soweit ich mich erinnern mag konnte ich in AVR-Studio problemlos
schreiben.
Jetzt müsste ich theoretisch den Umweg über STS machen:
Code : |
sts TCCR1A, temp
sts SREG, temp |
|
Irgendwas stimmt da nicht! Hat jemand mit diesem Problem schonmal Bekanntschaft gemacht? Theoretisch müsste OUT doch alle Addressen von 0x00 bis 0xDF (Speicherzellen 0x20 bis 0xFF) akzeptieren, oder nicht?
Grüsse und schöne Weihnachten,
Fabian |
|
BID = 394730
Benedikt Inventar
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) Beiträge: 6241
|
|
Beim AVR Studio ging out TCCR1A, temp nur, weil du damals noch keinen mega48 hattest. Bei den älteren AVRs liegt TCCR1A auf einer Adresse <64.
OUT kann nur mit Adressen <64 arbeiten, es ist also alles in Ordnung mit deinem Assembler. |
|
BID = 394751
Jornbyte Moderator
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 7211
|
Ja, es ist so, wie Benedikt schreibt. In ASM gibt es ein Macro das die Adressumstellung übernimmt.
Code : |
.MACRO STORE ;Arguments: Address, Register
.if @0>0x3F
sts @0, @1
.else
out @0, @1
.endif
.ENDMACRO
.MACRO LOAD ;Arguments: Register, Address
.if @1>0x3F
lds @0, @1
.else
in @0, @1
.endif
.ENDMACRO |
|
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 23 Beiträge im Durchschnitt pro Tag heute wurden bisher 21 Beiträge verfasst © x sparkkelsputz Besucher : 183072215 Heute : 7447 Gestern : 18294 Online : 258 17.2.2025 23:58 2 Besucher in den letzten 60 Sekunden alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0341010093689
|