Hallo zusammen,
auf die Gefahr hin, dass ich hier gleich gesteinigt werde.
Mit ist beim Erstellen der "production Datei" .elf ein Fehler
unterlaufen.
(Atmel Studio 6)
Habe im C- Code den Block HIGH und LOW der FuseFits falsch herum
geschrieben.
Sowas habe ich geschrieben (hier die Zuordnung richtig)
// Fuse Bits setzen:
const char fusedata[] _attribute_ ((section (".fuse"))) = {0xFF,
0xD9}; // Bedeutung s. Fuse Bits im Flash Menü
// Reihenfolge ist: {LOW, HIGH}
Anstatt soll:
low: 0xFF
high: 0xD9
WAR eingetragen:
low: 0xD9
high: 0xFF
beim Mega8 das Ganze leider mit der .elf Datei nun falsch herum
geflasht.
Schreiben konnte ich noch, beim Verifizieren kam dann die Fehlermeldung,
"nicht mehr erreichbar"
Soweit ich "sehe" wäre mit dieser falschen Einstellung Abweichung vom
Soll:
der SPIEN deaktiviert, der Bootloader Bereich kleiner sowie ein anderes
Quarz eingestellt. (Ext. Low Frequenz Crystal 1K)
-> SPIEN kann man doch per ISP gar nicht deaktivieren oder?
Datenblatt:
Notes: 1. The SPIEN Fuse is not accessible in Serial Programming mode.
-> Ext. Low Frequent Crystal 1K....
Datenblatt:
To use a 32.768 kHz watch crystal as the clock source for the device,
Quarz hatte ich sogar ein solches da :-)
Aber auch mit 5MHz, 8MHz, 14,7456MHz und 16MHz;
verschiedene Quarzoszillatoren (die 4 Beinigen) auch schon ausprobiert.
Bootloader hab ich eh keinen drauf.
Aber leider kann ich meinen Mega8 nicht mehr erreichen :-(
Ok, wenn SPIEN weg ist, dann entsorgen, aber kann man SPIEN per ISP
deaktivieren?
Da ichs nicht kappiert habe wo der Fehler war, gleich mehrere nagelneue
Mega8 dadurch zerschossen. :-(
Jetzt hab ich keinen mehr da. ;-)
Sonst hätte ich jetzt SPIEN manuell mal deaktiviert um zu schauen
Intelligenterweise hats auch einen Mega88a mit der .elf Datei für Mega8
erwischt.
Das mit der .elf Datei war nur ein Versuch, da ich das vorher nie
genutzt habe. Interesse halber...
Gibts dazu einen Trick meine zerschossenen Mega8 wieder benutzen zu
können?
Gruß
Andreas
Andreas schrieb:> Ok, wenn SPIEN weg ist, dann entsorgen, aber kann man SPIEN per ISP> deaktivieren?> Notes: 1. The SPIEN Fuse is not accessible in Serial Programming mode.
Besorg dir halt einen Uhrenquarz.
Oliver
Arduino Fanboy D. schrieb:> Wenn sonst nix mehr geht, dann geht doch noch: HVPP
Oder, im Einzelfall sehr viel billiger: ein neuer Mega8...
Nur wenn man damit rechnet, diesen (oder einen ähnlichen) Fehler auf
eine 1000er-Stückzahl zu applizieren, rechnet sich die Investition in
einen HV-fähigen Programmer...
Man könnte also alternativ die Idee angehen, solche Fehler schlicht zu
vermeiden. Der Witz ist: das funktioniert dann auch bei
1000er-Stückzahlen noch genauso...
Schon gelesen ?
https://www.mikrocontroller.net/articles/AVR_FusesAndreas schrieb:> Gibts dazu einen Trick meine zerschossenen Mega8 wieder benutzen zu> können?
Den Chip statt seriell im Parallel-Modus programmieren.
Das geht mit dem STK500 ganz gut. Wird hier im Markt manchmal günstig
angeboten.
c-hater schrieb:> alternativ
Immer, bei jedem Schritt, Prototypen erstellen und sorgfältig testen.
Flüchtigkeitsfehler, in Serie, werden unangenehm.
Ich weiß:
Toller Spruch, wenn das Kind schon im Brunnen steckt ....
Hast du nicht mal einen Freq-Generator, oder einen NE555?
Wo ein LF-Quarz laut Fuse dran sein sollte, geht auch ein
LF-Taktgenerator am PB6. Und Prgrammierung mit F = LF / 4.
Wenn nicht, haste halt mal Lehrgeld bezahlt. Nächstes mal
schaltest du vielleicht das Hirn ein, nachdem der erste Mega8
zerschossen ist...
Andreas schrieb:> auf die Gefahr hin, dass ich hier gleich gesteinigt werde.
Nö. Fehler passieren. Mein Vater sagt immer "man kann sich ruhig dämlich
anstellen, wenn man sich zu helfen weiß".
Bedauerlicherweise wirst du dem zweiten Halbsatz nicht gerecht ...
> der SPIEN deaktiviert, der Bootloader Bereich kleiner sowie ein anderes> Quarz eingestellt. (Ext. Low Frequenz Crystal 1K)>> -> SPIEN kann man doch per ISP gar nicht deaktivieren oder?> Datenblatt:> Notes: 1. The SPIEN Fuse is not accessible in Serial Programming mode.
Wenn es da steht, wirds schon stimmen.
> -> Ext. Low Frequent Crystal 1K....> To use a 32.768 kHz watch crystal as the clock source for the device
Das betrifft nur den Fall, wenn du einen nackten Quarz anschließt. Ein
externes Taktsignal kannst du immer einspeisen, so lange dessen Frequenz
innerhalb des Bereichs liegt, in dem der AVR mit der verwendeten
Betriebsspannaung überhaupt funktioniert.
> Aber leider kann ich meinen Mega8 nicht mehr erreichen :-(
Welchen Takt verwendet? ISP-Takt entsprechend angepaßt?
> Ok, wenn SPIEN weg ist, dann entsorgen
Nein.
> Gibts dazu einen Trick meine zerschossenen Mega8 wieder benutzen zu> können?
Datenblatt lesen. HVPP.
Der einfachste praktische Weg dürfte sein, die Fuses per HVPP wieder in
den Werkszustand zurückzusetzen. Google nach "AVR Fuse Resetter" oder
"Fuse Doctor".
> -> Ext. Low Frequent Crystal 1K....
Das wurde hier erst vor kurzem lang&breit diskutiert: 300 kHz an XTAL2
(sic!) anschließen; da es ein älterer AVR8 ist, gehen vielleicht sogar
bis zu 4 MHz.
(dass sich c-hater nicht erinnert ...?)
Axel S. schrieb:> Der einfachste praktische Weg dürfte sein, die Fuses per HVPP wieder in> den Werkszustand zurückzusetzen.
Wenn der ATmega8 nicht gesockelt ist, ist das ein ziemlicher Aufwand.
Einfacher dürfte sein, mit einem 2. AVR am Output Compare Ausgang
~30..100kHz zu erzeugen. Ob man die an XTAL1 oder 2 einspeist, muß man
ausprobieren. Der Quarz kann eingelötet bleiben.
Mal eben ausprobiert, in Ermangelung eines ATmega8 mit einem
ATmega16-16PU, der aber in diesem Bereich wohl sehr ähnlich aufgebaut
ist: ISP-Programmierung mit low-fuse 0xD9, sowohl an XTAL1 als auch an
XTAL2 geht noch ein eingespeister Takt von 500 kHz, 1 MHz geht nicht
mehr.
Hallo zusammen,
danke für die schnellen und vielen Antworten :-)
Habe alle meine 3 Mega8 sowie den Mega88a wieder ansprechbar.
Scheinbar war das Uhrenquarz, das ich gestern verwendet habe nicht
"gut".
Eine anderes in meiner Bastelkiste gesucht und schließlich noch eines
gefunden.
-> funktioniert :-)
Zum Testen versucht den SPIEN per ISP zu deaktivieren (diesmal gezielt)
geht (wie im Datenblatt erwähnt) nicht.
Somit brauch ich in Zukunft nicht mehr befürchten mich mit meinem ISP
Programmer komplett auszusperren.
Außer den Reset Pin zu deaktivieren ;-)
Meine .elf Datei funktioniert nun auch wie sie soll.
Ich Depp hab gestern beim Schreiben der Fuse Bits in den C-Code nicht
beachtet, dass die Anzeige im Flashmenü vom Studio 6 anders rum ist, als
sie im Code platziert werden soll.
Dadurch dann High und Low vertauscht.
peinlicher Fehler :-(
(War aber auch mein erster Versuch die Fuse Bits im C-Code zu
hinterlegen um eine .elf Datei daraus zu erzeugen).
Gruß
Andreas