Forum: Mikrocontroller und Digitale Elektronik Probleme mit flashen


von Paarthurnax (Gast)


Lesenswert?

Hallo Leute,

ich habe in Sachen Mikrocontroller durch mein Praxissemester etwas 
Erfahrungen gesammelt, aber diese mit PICS. Nun beschäftige ich mich mit 
AVR und hatte vor kurzem ein Problem. Dabei ging es darum, dass ich 
einmal programmieren konnte und beim zweiten mal nicht mehr. Durch diese 
Seite habe ich den Tipp erhalten an den MCLR ein Pull down Widerstand 
anzubringen, damit der Clock nicht weiterlaufen kann und somit der Flash 
gelöscht werden kann. Dadurch konnte ich dieses Problem beheben, doch 
wenn ich wieder programmiere, kann wieder nicht ein zweites mal 
programmieren. Das mit dem Pull down Widerstand ist zwar sehr hilfreich, 
aber trotzdem ist es ja ziemlich umständlich jedes mal den Flash zu 
löschen und neu zu programmieren. Daher meine Frage, ob vllt mein ISP 
frequency nicht richtig ist oder so. Ich hoffe, dass mir jemand helfen 
kann.

Gruß Paarthurnax

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Was ist das überhaupt für ein AVR? Einer der 8-Bit Reihe oder ein 32-Bit 
µC?

von Paarthurnax (Gast)


Lesenswert?

8bit Controller...Attiny 13A

von Achim M. (minifloat)


Lesenswert?

Paarthurnax schrieb:
> aber trotzdem ist es ja ziemlich umständlich jedes mal den Flash zu
> löschen und neu zu programmieren

Wenn du den Flash vor jedem Programmieren nicht Löschen willst, 
passsieren komische Sachen. Ein gelöschtes EEPROM und somit auch ein 
Flashspeicher enthält 0xFF an jeder Speicherstelle. Nicht Programmierte 
Bits sind "1"; Programmierte Bits sind "0". Man kann nur "auf 0 
programmieren" und generell nur "auf 1" löschen. Einzelne Bits lassen 
sich nicht "von 0 auf 1 umbiegen".

Ein Beispiel:
Vorher gelöscht und was neues rein geflasht:
Vorher          0xFF = 0b11111111
Programmiert    0x12 = 0b00010010
Ergebnis        0x12 = 0b00010010 => OK

Nicht gelöscht, sondern gleich was drübergebügelt:
Vorher          0x12 = 0b00010010
Neues Programm  0x43 = 0b01000011
Ergebnis        0x02 = 0b00000010 => Nicht OK

Darum empfiehlt sich ein "erase" vorm flashen und ein "verify" danach. 
"Kluge" Programmiertools lassen sich konfigurieren, diese Aktionen 
automatisch durchzuführen oder lassen sich z.B. mit einem batch- oder 
shell-Script oder mit make bedienen, um das zu automatisieren.

mfg mf

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.