Frage zu *(u8*)0x4807 |= (1<<3); Optionbytes STM8S

OP #7196596
Lesenswert?

Moin!

In einem gegebenen Programm eines STM8SF103 ist die o.g. Zeile für mich 
ein wenig unverständlich.

Edit:
Hier nochmal die Zeile:
*(u8*)0x4807 |= (1<<3);

0x4807 ist ein Option Register und es wird das Bit 3 "reingeodert".
Aber was ist das 2te Sternchen?
Einmal ist es doch ein (U8*) Pointer auf die Adresse 0x4807 und davon 
dann der Inhalt? ..oder wie muss ich das lesen?
z.B.
Das Bit 3 des Inhalts, auf den der Pointer zeigt, wird gesetzt...

Und noch was:
Der STM8 war readout protected. Demnach sind die optionbytes aber jetzt 
weg, weil ich das wieder freigeschaltet habe. Das war auch erstmal so 
gewollt. Habe ich eine Chance, die original besetzten Option Werte 
wieder zu bekommen?
Der C Quellcode liegt mir vor aber darin sind m.M.n. keine Option Bits 
drin, weil die beim flashen vergeben wurden mit read out protect.
Hat jemand da Ideen?

VG

Carsten
#7196608
Lesenswert?

C. L. schrieb:
> In einem gegebenen Programm eines STM8SF103 ist die o.g. Zeile für mich
> ein wenig unverständlich.

Es wäre geschickt gewesen, diese Zeile in den Inhalt deines Postings zu 
kopieren statt nur in den Betreff zu schreiben.
Hier mal zur Erleichterung:
1
*(u8*)0x4807 |= (1<<3);
> 0x4807 ist ein Option Register und es wird das Bit 3 "reingeodert".

0x4807 ist die Adresse des Registers.

> Aber was ist das 2te Sternchen?

"Zeiger". u8 wird vermutlich ein vorzeichenloser 8-Bit-Typ sein, u8* ist 
ein Zeiger darauf.

> Einmal ist es doch ein (U8*) Pointer auf die Adresse 0x4807 und davon
> dann der Inhalt? ..oder wie muss ich das lesen?

Ja, genau.
Gast #7196610
Lesenswert?

C. L. schrieb:
> Einmal ist es doch ein (U8*) Pointer auf die Adresse 0x4807 und davon
> dann der Inhalt? ..oder wie muss ich das lesen?

ja.
(U8*) ist ein Cast, der dem Compiler mitteilt, dass der Pointer als 
Pointer auf ein Byte zu verstehen ist (könnte ja auch als eine andere 
Datenstruktur interpretiert werden).
Und um den Wert des Registers zu setzen, braucht man noch ein Sternchen 
davor.
OP #7196628
Lesenswert?

ok,

danke, hat mir sehr geholfen!!
Weiß auch noch jemand, wie ich die "Fuse bits" sinnvoll wiederherstellen 
kann?
Hier noch mal die Frage:

> Und noch was:
> Der STM8 war readout protected. Demnach sind die optionbytes aber jetzt
> weg, weil ich das wieder freigeschaltet habe. Das war auch erstmal so
> gewollt. Habe ich eine Chance, die original besetzten Option Werte
> wieder zu bekommen?
> Der C Quellcode liegt mir vor aber darin sind m.M.n. keine Option Bits
> drin, weil die beim flashen vergeben wurden mit read out protect.
> Hat jemand da Ideen?

Ein STM8S mit der originalen Software hätte ich noch hier aber leider 
read out protected.

??

CL

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