Mega8 Fuses für etx. 12 MHz Quarz

Gast #775261
Lesenswert?

Hi,

ich versuche hier grad verzweifelt bei einem Mega8 die Fuses zu setzen, 
dass der mit 12 MHz läuft. Habe mitlerweile aber schon 5 Stück 
geschrottet, und weiß aber nicht warum!

Wenn ich das Datenblatt richtig verstehe, muss ich für einen externen 
Quarz mit 2 Kondensatoren (Keramik, je 22p) die CKSEL0, 1, 2 und 3 
setzten sowie SUT1 und evtl. CKOPT, wenn die Schaltung 
störungsempfindlich ist. Aber sobald ich alle CKSEL setze kann ich den 
AVR nicht mehr ansprechen. Wenn ich zusätzlich nich SUT oder CKOPT setzt 
ändert das daran auch nix.

Ich stecke den Mega8 zum programieren in eine Schaltung mit extern 4 MHz 
Quarz + Kondis. Dabei spiele ich zuerst die Firmware auf und setzt dann 
die Fuses. Danach kommt der Mega in die eigentliche Schaltung (die keine 
IPS Schnittstelle hat), läuft da aber nicht...

Wie muss ich also die Fuses setzen? Ich nutze PonyProg und ein STK200 
Adapter von rumli.de.
Gast #776100
Lesenswert?

Was heißt "geschrottet"? "Kondies"? Können wir diesen 
Kindergarten-Street-Slang mal lassen und uns halbwegs präzise 
ausdrücken? Laufen die AVRs noch in dem 4 MHz Programmierboard, oder 
laufen sie schon da nicht? Sind die Lastkondensatoren für den Quarz 
richtig berechnet oder einfach mal 22pF auf Verdacht genommen?

Ansonsten würde ich mich mal um eine qualitätvoller Programmierhardware 
bemühen. Bei dem AVR-Verbrauch lohnt sich bald ein Dragon. Na ja, und 
PonyProg ... Schön bunt, aber der Gaul gehört zum Abdecker und Seife 
raus gemacht.
Gast #780007
Lesenswert?

1
Was bedeutet: "Wenn ich zusätzlich nicht SUT oder CKOPT setze
2
ändert das daran auch nix."?

Sorry, da war das "nicht" zu viel. Sollte soviel heißen, dass es nichts 
gebracht hat, die SUT oder CKOPT - Fuse zu setzen. Was meinst du mit dem 
[v] hinter dem CKOPT?

Die Keramikkondensatoren habe ich mit 22pF gewählt, da die zu der 
Schaltung für die 4 MHz passen (sollten), in der Schaltung mit 12 MHz 
sind statt dessen 15pF Keramikkondensatoren verbaut (war eine fertige 
Schaltung, die ich nur nachgebaut habe).

Die AVR's führen weder im 4 MHz Programierboard noch in der 12 MHz 
Schaltung das Program aus. Auch wenn ich den 4 MHz Quarz durch einen mit 
12 MHz ersetzte oder ganz rauslasse ändert sich nichts daran. Ich kann 
auch weder über PonyProg (Alternativen?) noch AVRDude auslesen, mit 
neuem Code beschreiben, Löschen (Erase) oder die Fuses lesen und neu 
setzen. Bin schon dabei mir einen USB Programmer zu bauen: 
http://www.mechaos.de/avr_progusb.php Der Dragon sieht aber auch sehr 
interessant aus ;-P

Habe mitlerweile mal einen funktionierenden AVR mit folgendem Code 
bespielt *duck*:
1
#include <avr/io.h>
2
#include <util/delay.h>
3

4
int main(void)
5
{
6
DDRB = (1<<PB1);          // PB1 an PORTB als Ausgang setzen
7
  while(1)
8
  {
9
    PORTB ^= (1 << PB1);
10
    _delay_ms(3);
11
  };
12
}

Den Pin PB1 hab ich dann an Pin 9 von einem "defekten" Mega8 gehängt. 
Dieser hat dann wieder angefangen, sein Programm auszuführen - hat ca. 4 
- 5 Sekunden gebraucht, bis er es startet - aber ich konnte ihn trotzdem 
nicht über PonyProg oder AVRDude ansprechen. Ist die entstandene 
Frequenz einfach nicht stabil genug oder zu schnell? Der funktionierende 
AVR läuft mit den internen 1 MHz.
Gast #780016
Lesenswert?

Hat zwar schon einer gesagt, aber denk daran bei Ponyprog Fuse gesetzt 
heißt Häckchen raus und umgekehrt. Ckopt - laß mal weg. Schau mal, ob 
die Kondies richtig dran sind. 22pF sollte mit 12MHz-Quarzen ok sein, 
sonst nimm mal 33pF . Und Ponyprog muss nicht zum Abdecker, sondern die 
Sprachfanatiker.

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