Forum: Mikrocontroller und Digitale Elektronik AVR reagiert nach Fusebit setzten nicht mehr


von Martin (Gast)


Lesenswert?

Hallo,
hab schon wieder ein Problem und zwar hab ich die Fusebits so gesetzt,
wie im Tutorial beschrieben und jetzt reagiert der ATMega8 nicht mehr.
Ich hab irgendwo im Forum gelesen, dass es einen Unterschied macht, ob
man einen Quarz mit 2 oder 4 Beinen angeschlossen hat. Wenn ja, wie
geht es richtig?
Gruß
Martin

von Martin (Gast)


Lesenswert?

Nochmal was, im Tutorial steht, dass man die Fuses so einstellen soll:
http://www.mikrocontroller.net/images/atmega8-nachher.png
Aber wo wird da die Frequenz des externen Quarzoszillators angegeben?
Laut Datenblatt wird das über die 4 oberen Fusebits eingestellt.

von Tobi (Gast)


Lesenswert?

und im datenblatt steht auch unter "system clock and clock options"
recht genau wann man was einstellen sollte. und ja, zwischen solchen
mit 2 und 4 beinen ist ein unterschied. das eine sind quarze (2 beine),
das andere quarzoszillatoren. und jetzt erstmal ab ans datenblatt lesen

von Martin (Gast)


Lesenswert?

Ich habe ja einen externen Oszillator mit der Frequenz 4Mhz, warum sind
dann CKSEL1..3 nicht gesetzt? Im Tutorial wird ja auch ein externer
Quarzoszillator verwendet.

von Tobi (Gast)


Lesenswert?

lies doch einfach mal im datenblatt nach! das kann doch nicht so schwer
sein!! da steht:
External Clock:  CKSEL3..0:   0000

von Martin (Gast)


Lesenswert?

Ich HAB im Datenblatt nachgelesen, und ich hab es auch wie im Tutorial
beschrieben gemacht, aber Fakt ist, dass sich der AVR nicht mehr
ansprechen lässt. Weisst du vielleicht sonst noch etwas, was ich falsch
gemacht haben könnte? Hast du dir schonmal das Bild weiter oben
angeschaut? So hab ich es gemacht, ist das falsch?
Gruß
Martin

von Martin (Gast)


Lesenswert?

Ok, klappt jetzt. Thx 4 help

von Tobi (Gast)


Lesenswert?

np :)
was wars denn?

von Martin (Gast)


Lesenswert?

Ich hatte den Quarzoszillator and XTAL1? anstatt XTAL2 angeschlossen.

von Luhmer (Gast)


Lesenswert?

Hallo !

Ich lese mich gerade in das Buch "AVR" von Roland Walter ein.
Dort steht auf Seite 37 folgende Bemerkung:

..Noch gemeiner ist das Fus-Bit RSTDISBL (ResetDisable). Damit wird der
Reset-Eingang abgeschaltet und als normaler I/O-Pin PC6 frei. Weil eine
SPI-Programmierung aber stehts mit einem Reset-Impuls eingeleitet wird,
müßten Sie nach einer Änderung des RSTBISBL-Bits Ihren AVR (Anmerkung:
mega8)erst einmal beiseite legen. Das Zurücksetzen dieses Bits ist nur
im Parallel-Brennmodus möglich. Das STK 500 beherrscht diesen
Brennmodus...

Ich hoffe, Sie kommen damit weiter.

von Gunter (Gast)


Lesenswert?

Hi Luhmer,

>Das STK 500 beherrscht diesen Brennmodus...
trotzdem kann man sich in so einem Fall leicht und fast umsonst
auch selberchelfen. WENN man nicht nur gerade einen EINZIGEN Mega8
besitzt:

http://www.e-lab.de/phpBB2/load.php?id=9

Damit habe ich schon einige Mega8 durch den High Voltage Parallel
Programming Mode wieder aktivieren können.

Schöne Grüße
Gunter

von Demerzel (Gast)


Lesenswert?

"Ich hatte den Quarzoszillator and XTAL1? anstatt XTAL2
angeschlossen."
laut tutorial soll der taktgeber doch an XTAL1 - oder seh ich falsch?
ciao peter

von Tobi (Gast)


Lesenswert?

@luhmer:
die angaben wie man den reset-pin wieder umdefiniert stehen sehr genau
schritt für schritt im datenblatt des jeweiligen uC. alles was man
braucht ist ein anderer controller und ein bisschen zeit - braucht man
allerdings nur falls sich nicht jmd vorher schon die arbeit gemacht hat
aber kann ja mal sein, dass man nichts findet

@demerzel:
nein, siehst du nicht

von Martin (Gast)


Lesenswert?

@tobi Darf ich dich noch was fragen, will deshalb keinen neuen Thread
aufmachen:

.include "4433def.inc"       ;Definitionsdatei einbinden, ggf. durch
                             ;2333def.inc ersetzen

         ldi r16, 0xFF       ;0xFF ins Arbeitsregister r16 laden
         out DDRB, r16       ;Inhalt von r16 ins IO-Register DDRB
ausgeben
ende:
         ldi r16, 0b11111000 ;0b11111100 in r16 laden
         out PORTB, r16      ;r16 ins IO-Register PORTB ausgeben

         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop
         nop


         ldi r16, 0b00000000
         out POrTB, r16

        rjmp ende           ;Sprung zur Marke "ende" ->
Endlosschleife

Eigentlich müssten die angeschlossenen LEDs blinken oder? Weil nop
verzögert doch das Programm?

von Martin (Gast)


Lesenswert?

Hab noch ein paar nops eingefügt, geht jetzt.

von cool (Gast)


Lesenswert?

Cooles Programmm

von Tobi (Gast)


Lesenswert?

mach einfach 2 verschachtelte schleifen. eine bis 255 und eine bis ca.
10. dass ist übersichtlicher und besser anpassbar. spätestens wenn du
mal was mit schnellerem takt machst wird das mit nop's unhandlich.
lieber gleich richtig angewöhnen :)

ach ja, ausserdem schaltest du sofort nach dem ausschalten wieder an.
besser sichtbar wird das blinken noch wenn du auch nach dem zweiten out
eine pause einfügst

von Martin (Gast)


Lesenswert?

SO weit bin ich leider noch nicht :(

von Tobi (Gast)


Lesenswert?

so z.b. einfach anstatt der nop's einfügen. ein bisschen mit dem wert
in r17 rumprobieren um zu gucken was du brauchst

      push r16
      push r17
  ldi r17, 0x05
loop1:
  ldi r16, 0xff
loop2:
  dec r16
  brne loop2
  dec r17
  brne loop1
      pop r17
      pop r16

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.