Hallo Chris,
ich habe genau das gleiche Problem. Bei mir waren auch vier Controller
"ausgestiegen", mit genau dem gleichen "Symtom" - Option-Byte not valid.
Von den inversen Bits war eins (das umprogrammierte) nicht invers. Auch
bei mir wurde dann beim Zugriff aus STVD nicht der Default-Wert benutzt
sondern mit einer Fehlermeldung abgebrochen. Mit vielen Tricks konnte
ich die Controller mit STVP "wiederbeleben".
Allerdings programmiere ich nur in Assembler, hier das Option-Bit AFR0:
mov FLASH_DUKR,#$AE ;Unlocking MASS for EEPROM
mov FLASH_DUKR,#$56 ;Bestätigung: Unlock. MASS for EEPROM
mov FLASH_CR2,#$80 ;Enable option byte write OPT
mov FLASH_NCR2,#$7F ;Bestätigung: Enable option byte write
mov OPT2,#%00000001 ;AFR0 auf 1 in OPT2-Register
mov NOPT2,#%11111110 ;Bestätigung: AFR0 Remapping
Die beiden (letzten) ASM-Befehle zum Beschreiben der Option-Register
folgen unmittelbar aufeinander. Es wäre wirklich riesengroßer Zufall,
würde die Programmierung nach dem erste Befehl unterbrochen.
Bei den meisten anderen Controllern, die mit dem gleichen Programm
arbeiten, trat/tritt der Fehler nicht auf.
Deshalb vermute ich, es hängt eher mit Locking/Unlocking des EEproms
zusammen. Was bedeuten die Parameter Deines Befehls:
FLASH_ProgramOptionByte(0x4803, 0x02);
Ist das sofortige, folgende Sperren zwingend erforderlich?
FLASH_Lock(FLASH_MEMTYPE_DATA);
Gibt es schon eine Lösung?
Beste Grüße
Jens