Forum: Mikrocontroller und Digitale Elektronik Wieso funzt sbi/cbi nicht?


von Stefan Pfister (Gast)


Lesenswert?

Hallo!

Kann mir jemand sagen, wieso immer ein Fehler auftritt wenn ich
folgenden Code mit AVRStudio compilieren will?

sbi TCCR1B,7   error : Illegal argument type or count
cbi TIFR,5     error : Illegal argument type or count
sbi EECR,2     hier aber nicht

In der Atmega8 def.inc Datei sind alle einträge vorhanden. An was liegt
das?

von Joerg Wunsch (Gast)


Lesenswert?

Ohne nachzugucken: am eingeschränkten Registerbereich für SBI/CBI.

von Stefan Pfister (Gast)


Lesenswert?

Ach so, funzen die nur für den unteren Bereich? Wie kann ich das lösen,
ohne ein ganzes Register zu beschreiben, oder eine Bitmaske zu setzen??
Od geht das gar nicht ohne? Wie macht man das am einfachsten?

von Jochen (Gast)


Lesenswert?

SBI und CBI funktioniren meines wissens nach nur bei I / O Registern.

Also bei Ports.

In den registern z.b. r16 funktioniren SBR und CBR allerdings nur mit
Bitmaske.

Jochen

von Stefan Pfister (Gast)


Lesenswert?

Wiso gibts denn bei EECR keinen Fehler, das ist ja auch kein Port...

von Joerg Wunsch (Gast)


Lesenswert?

Klar ist EECR ein IO-Register.  TIFR und TCCR1B sind auch welche.

Warum liest Du nicht einfach die Appnote über die Befehle?

Syntax:      Operands:
CBI A,b      0 <= A <= 31, 0 <= b <= 7

Damit sind die gängigen Ports (PORTx, PINx, DDRx) allesamt drin sowie
einige andere wichtige IO-Register.  Viele Steuerregister jedoch sind
nicht mehr im gültigen Wertebereich.  Dort mußt Du den umständlichen
Weg wählen.  Alternativ kannst Du Dich natürlich dran erinnern, daß
alle IO-Register auch memory-mapped zugegriffen werden können (d. h.
sie werden mit Offset 0x20 in den SRAM-Bereich abgebildet).

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.