Seit dem setzen der FUSEbits ATMEGA nicht mehr programierbar

Gast #4132374
Lesenswert?

zum System:

Ich habe einen ATMEGA128 mit 16MHz Quarz zwischen XTAL1 und XTAL2. Beide 
gehen über je 22pF gegen GND.

Der Atemega 128 ist im Auslieferzustand auf interne Clock gesetzt.

zum Problem:

Der µC hat mit interner Clock funktionert.

Jetzt habe ich mittels folgendem Programmer:

AVRISP mkII
Debug host        127.0.0.1
Debug port        4462
Serial number     000200213337
Connection        com.atmel.avrdbg.connection.jungousb
Firmware Version  1.17
Hardware Version  1


die Fusebits auf externen Quarz gesetzt:

LOW: 0xFF
HIGH: 0x19

Seit dem Programmieren ist der µC nicht mehr erreichbar und ich erhalte 
folgende Fehlermeldung in AtmelStudio 5.1

Timestamp:  2015-05-18 11:57:21.975
Severity:    INFO
ComponentId:  20000
StatusCode:  0

Unable to enter programming mode. Verify device selection, interface 
settings, target power and connections to the target device.

11:57:21: [ERROR] Failed to enter programming mode. ispEnterProgMode: 
Error status received: Got 0xc0, expected 0x00, ModuleName: TCF (TCF 
command: Device:startSession failed.)

AN XTAL1 kann ich den Takt mit dem OZI sehen.

Was habe ich falsch gemacht? und viel Wichtiger wie bekomme ich das hin 
das ich wieder mit dem µC arbeiten kann?

Ich hoffe ihr könnt mir helfen.
#4132390
Lesenswert?

icke schrieb:
> Ich meine mich zu erinnern, dass es einen Zusammenhang zwischen AVR
> Taktrate und ISP-Rate gab.

ISP-Clk * 4 < CPU-Clk


Edit:
Da ich weder mit dem MKII noch dem Atmel Studio 5 arbeite:
Bist du sicher, dass die Fuses dort nicht invertiert geschrieben wurden?
Habe gerade die invertierte Version hier eingetragen: 
http://www.engbedded.com/fusecalc/

Dann könntest du wieder Zugriff erlangen, in dem du einen Takt von einem 
anderen µC oder einem Quarzoszillator an XTAL1 einspeist.
#4132404
Lesenswert?

Der_Bär schrieb:
> HIGH: 0x19

Imho sieht das so aus als ob du ExtReset abgeschaltet u. DebugWire 
eingeschaltet hast. Dann ist afaik kein prog. über SPI mehr möglich.

Ich benutze diese Einstellung immer um über DebugWire zu debuggen.
Um die Bits zurück zu setzen muss man eine Debug-Session aufmachen und 
diese mit "Disable debugWIRe and Close" beenden.


EDIT:!!!!!!!!!
Vergiss den Quatsch den ich geschrieben hab! War beim flaschen Atmega!
#4132433
Lesenswert?

Max Mustermann schrieb:
> Imho sieht das so aus als ob du ExtReset abgeschaltet u. DebugWire
> eingeschaltet hast.

Das schloss ich aus, da laut Datenblatt keine DebugWire-Bezeichnung am 
Reset-Pin liegt. Habe es aber aufgrund mangelnder vorheriger Suche nicht 
explizit erwähnt.
Dazu habe ich mal gerade das Datenblatt nach "debug" und "ocden" 
durchsucht. Beides führte mich zu JTAG und dessen 
Debugging-Möglichkeiten. Es wird nur erwähnt, dass der Reset-Pin vom 
Debugger überwacht wird, um externe Reset-Quellen zu erkennen. - Eine 
Suche nach "debugwire" war erfolglos, weil wohl nicht vorhanden.

Edit: Deinen Edit während meines Posts geschrieben. :D
Gast #4132453
Lesenswert?

Marcel Papst schrieb:
> ISP-Clk * 4 < CPU-Clk

Ist mir bekannt. Keine der Frequenzen geht.

Marcel Papst schrieb:
> Edit:
> Da ich weder mit dem MKII noch dem Atmel Studio 5 arbeite:
> Bist du sicher, dass die Fuses dort nicht invertiert geschrieben wurden?
> Habe gerade die invertierte Version hier eingetragen:
> http://www.engbedded.com/fusecalc/

Ich habe meine FUSEbits hier berechnet und bin mir ziemlich sicher, ich 
sie richtig geschriben habe.

Zumal ich an XTAL1 den TAKT mit dem OZI messen kann. Sollte es dann 
nicht gehen?
#4132776
Lesenswert?

Genau so, wie du es gesetzt hast. Dabei wäre aber erstmal zu klären, ob 
definitiv zu 100% 0x19 und 0xFF als Fuses gesetzt wurden, und nicht 0xE6 
und 0x00.

Bei letzterem erwartet der Controller einen Takt, wie er auf Seite 320 
des Datenblatts beschrieben wird. Siehe Fig. 153 und Tab. 131.
1
        2.7V - 5.5V     4.5V bis 5.5V
2
Trise   1.6µs Max       0.5µs Max
3
Tfall   1.6µs Max       0.5µs Max

Du sagtest, dass du den Takt an XTAL1 messen kannst. Wie sieht der aus? 
Wie hoch ist die Amplitude? Periodendauer? (Also stimmen die 16MHz, von 
denen du redest?)
Gast #4132839
Lesenswert?

Marcel Papst schrieb:
> Genau so, wie du es gesetzt hast. Dabei wäre aber erstmal zu klären, ob
> definitiv zu 100% 0x19 und 0xFF als Fuses gesetzt wurden, und nicht 0xE6
> und 0x00.

Ich habe im avrstudio exat diese Werte eingestellt. Bzw. Sie sind über 
die hacken und dropdown so entstanden. Warum sollten sie dann invertiert 
sein?

Ich mach morgen noch einmal eine Aufnahme mit dem ozi. Der erste Blick 
sah Ok aus, aber wenn ich jetzt drüber nachdenken ist die Amplitude zu 
klein und die Frequenz auch zu klein morgen mehr.

Wenn ich wirklich das ocden bit gesetzt habe sollte ein programmieren 
über ISP nicht mehr möglich sein. Wie kann ich dann das fusebit setzen? 
Bzw. Wie kann ich ocd-debbuggen?
#4132893
Lesenswert?

Der_Bär schrieb:
> Warum sollten sie dann invertiert
> sein?

Tabellen 117, 118, 119, Seite 287 f.
0 (programmed) - 1 (unprogrammed)

Der_Bär schrieb:
> Wenn ich wirklich das ocden bit gesetzt habe sollte ein programmieren
> über ISP nicht mehr möglich sein.
Dazu habe ich im Datenblatt nichts gefunden. Ich würde sagen, dass der 
ISP-Zugang davon nicht beeinträchtigt wird. Kann das jemand anderes 
bestätigen?

Der_Bär schrieb:
> Wie kann ich ocd-debbuggen?

JTAG Interface, wie im Datenblatt beschrieben, sofern JTAGEN aktiviert 
(0) ist. Siehe Seite 250.


Aber warten wir mal mal morgen ab, wenn du dir das Oszi-Bild nochmal 
angeschaut hast. Wie gesagt, testweise kannst du es mal mit einem 
externen Takt versuchen, sonst hilft wahrscheinlich nur noch HVPP zum 
zurücksetzen der Fuses.

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