Zugriff auf ImprintTable (hier Tiny441) in C?

OP #5426999
Lesenswert?
• ▲
▼
Klar, ist mit ein paar Zeilen Assemblercode erledigt und funktioniert 
auch.
Geht aber davon aus, dass die zu lesende Adresse in R26 übergeben wird 
und das Ergebnis in R30 zurückgegeben wird. Und genau das gefällt mir 
nicht. Mit nem anderen Compiler wird das wahrscheinlich eh nicht 
funktionieren (damit kann ich leben), aber wer weiss schon wie es nach 
einem Compilerupdate aussieht? Diese Konvention muss ja nicht erhalten 
bleiben.
Kann man das komplett in C erledigen?

unsigned char ReadImprintTable (unsigned char adr)
{
#asm
.equ RSIG=5
.equ SPMEN=0
.equ SPMCSR=0x37

push r16
in r16, sreg

mov r30, r26
clr r31
ldi r26, ((1<<RSIG)|(1<<SPMEN))
out SPMCSR, r26
lpm r30,Z

out sreg, r16
pop r16
#endasm
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.