Wie AVR nach falschem Quarz-Fusebit reaktivieren?

Gast #301023
Lesenswert?

Hallo Leute,

habe heute aus Hast ausversehen auf extern Oszi anstatt auf extern
Quarz gefused. Nun will ich ihn wieder erwecken.
Im Forum stand mal was, aber ich habe es nicht gefunden. Takt an Xtal1
anlegen? Wer kann mir da weiterhelfen. Habe kein STK 500 bzw externen
Oszi...

Vielen Dank
Gast #301025
Lesenswert?

Hi,

ich glaube, dass das nur im Parallel Programmiermodus geht. Dazu
benötigst du das STK500 oder einen anderen parallelen Programmer.
Einfacher wäre da noch der Quarzoszillator oder eine andere Taktquelle,
falls das möglich ist.

Gruß,
      Thomas
Gast #301026
Lesenswert?

Teile für einen RC-Oszillator hat eigentlich fast jeder daheim. Ein R,
ein C und ein Gatter, das man sich auch diskret aufbauen kann. Das wäre
denke ich das einfachste. Ein Quarzoszi gehört aber auch in jede
Bastelkiste ;)
Gast #301027
Lesenswert?

die auswahl des taktes hat NICHTS mit der art der programmierung zu tun.
der mc braucht immer einen takt wenn er arbeiten soll (egal ob der durch
einen internen oszilator oder durch eine externe quelle erzeugt wird).
(notfalls geht auch eine sinus-quelle. oder der serielle port des
computers.)
#301028
Lesenswert?

Hi!

Hast du noch einen weiteren Atmel da ?
Dann programmier ihn wie folgt:

portpin=output;

loop:
portpin=1;
nop;
portpin=0;
rjmp loop;

(pseudocode g)

Dann verbindest du den Output pin mit dem xtal deines falsch
programmierten.
Dann kannste deinen "toten" ganz normal programmieren ;)

Musst mal hier danach suchen, dann findest du auch den Assemblercode
für den obigen pseudocode :)
(hab lange nichts mehr mit avr asm gemacht und würde nur quatsch
schreiben g)

Gruss, Simon
Gast #301029
Lesenswert?

[quote]die auswahl des taktes hat NICHTS mit der art der programmierung
zu tun.[/quote]

Korrigiert mich, wenn ich falsch liege, aber so weit ich mich erinnere
geht das Programmieren per ISP nicht, wenn per Fusebits vorher eine
falsche Taktquelle gewählt wurde. In diesem Fall kann man aber trotzdem
immer noch parallel programmieren. Daher gibt es in diesem Fall nur die
2 Möglichkeiten:

1. Einen passenden Taktgeber anschließen und per ISP die Fuesebits
zurück setzen
2. Die Fusebits per paralleler Programmierung zurück setzen

Gruß,
       Thomas
Gast #301030
Lesenswert?

Auf Assembler wär das:

.nolist
.include "m8def.inc" ;für ATmega8
.list

ldi r16, 0x01
out DDRD, r16 ;Für PortD.0 (also 1. Pin in PortD)

main:

ldi r16, 0x01
out portd, r16 ; 1.Pin an PortD auf high setzen
nop ; Päuschen einlegen
ldi r16, 0x00
out portd, r16 ; 1.Pin an PortD au low setzen

rjmp main ; Und das Ganze nochmal von Vorn

Grüße,

Hanno
Gast #301031
Lesenswert?

@Berti: Du liegst falsch :)

Wenn ein externer Oszillator gewählt wurde erwartet der AVR einen Takt
am XTAL1. Alles ander bleibt wie es ist.

Was Du meinstest ist, dass, wenn man z.B. die Funktion des RESET Pin
"verbogen" hat (was bei einigen AVRs geht), ISP nicht mehr
funktioniert.
#301032
Lesenswert?

Schau dir doch einfach mal im Datenblatt des betreffenden AVRs unter
Clock Sources an, welche externen Taktquellen der AVR unterstützt und
wie sie angeschlossen werden. Die Schaltbilder dazu stehen auch im
Datenblatt. Nun kannst du eine Möglichkeit nach der anderen
durchprobieren.

Anders ist es, wenn du Reset deaktiviert hast (Portpin draus gemacht)
oder ISP deaktiviert hast, dann hilft nur noch der HV-
(Hochvolt-)Programmiermodus, wie ihn z.B. das STK500 und einige
Nachbauten kann.

Dass der Umgang mit den Fusebits Aufmerksamkeit erfordert, hast du nun
sicherlich selbst gemerkt, also erübrigen sich weitere Warnungen...
;-(

...

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