Benötige Hilfe bei Inline Assembler

Gast #3113011
Lesenswert?

Zunächst mal die Info warum ich Inline Assembler nutzen will:

Ich will das mein Programm (GCC) am Anfang nachschaut ob es intern 
(8MHz) oder extern (16MHz) getaktet wird und je nach dem die Timer 
einstellt.

Daher ist es das Ziel dieses Code:
1
cli
2

3
  ldi ZH, 0    ; $0000=FLB / $0001=LB / $0002=FEB / $0003=FHB
4
  ldi ZL, 0              
5
  in wrH, SPMCSR
6
  ori wrH,(1<<BLBSET)|(1<<SPMEN);
7
  out SPMCSR, wrH
8
  nop
9
  nop
10
  nop
11
  nop
12
  nop
13
  lpm wrH,Z    ; Inhalt ist das abgefragte Byte
14

15
sei
Beitrag "Re: Fuses durch den AVR auslesen?"

In mein C-Programm zu bekommen.
Und die Ausgabe in C verarbeiten zu können.


Um klein an zu fangen versuche ich gerade die Variable
1
volatile uint8_t Fuses;
in einem kleinen Abschnitt hoch zu zählen, komme aber nicht wirklich 
weiter / blicke nicht wirklich durch das System durch.

Aktuell schaut mein Code so aus:
1
asm volatile (
2
"nop"  "\n\t"
3
"inc" : : "d" (Fuses)
4
);

Bekomme aber die Meldung "constant value required"
Wie schaffe ich es, das er die Variable nimmt?

Verwende aktuell die Infos von 
http://www.rn-wissen.de/index.php/Inline-Assembler_in_avr-gcc

Ggf. kann mir ja auch jemand bei dem finalen Code helfen (Oberster asm 
Code).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren