Forum: Mikrocontroller und Digitale Elektronik A t m e g a 88 wird nicht mehr erkannt


von qwertzuiopü+ (Gast)


Lesenswert?

Blöderweise habe ich gestern die Taktquelle auf meinem neu gekauften A 
tmega 88 auf Low-Freq. Crystal gestellt. MMn sollte sich der µC also 
über XTAL1 extern takten lassen und kann anschließend programmiert 
werden. Also habe ich auf einem A tmega 8 ein entsprechendes Programm 
geschrieben. Dieses arbeitet vier Takte lang in Dauerschleife und 
toggelt den PORTC. Der A tmega 8 arbeitet dabei mit 8 MHz. Trotzdem 
lässt sich der A tmega 88 nicht über ISP ansprechen :(

Hier noch das Programm auf dem A tmega 8:

[asm]
    ldi r16, 0xFF
    out DDRC, r16
    ldi r17, 0x00

ende:
    out PORTC, r16
    out PORTC, r17
    rjmp ende
[/asm]

von S. Landolt (Gast)


Lesenswert?

> MMn sollte sich der µC also über XTAL1 extern takten lassen

Nein, der Takt wird über XTAL2 zugeführt.

von qwertzuiopü+ (Gast)


Lesenswert?

Hm, funktioniert trotzdem nicht :(

von Samuel C. (dragonsam)


Lesenswert?

Ist auch falsch. Takt gehört an XTAL1.

Wenn du Low-Freq. Crystal einstellst, dann solltest du auch einen 
Low-Freq. Crystal anschließen. Ein Tipp: 8MHz sind nicht Low-Freq.

Probier's mal mit einem Uhrenquarz (32768Hz) oder lege einen externen 
Takt an, um die Fuses richtig einzustellen.

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Seltsam.
Die Frequenz beträgt ja 8 MHz / 4 = 2.0 MHz, SPI darf also max. 500 kHz 
sein.
Vielleicht mal das Tastverhältnis auf 0.5 bringen durch ein Einfügen von 
rjmp pc+1 zwischen den beiden 'out', führt zu 1.33 MHz, SPI dann kleiner 
als 330 kHz wählen. Wenn der ATmega8 nicht mit Quarz läuft, zur 
Sicherheit alles -10 %.

von Samuel C. (dragonsam)


Lesenswert?

Oh, jetzt habe ich deine herangehensweise erst verstanden.

Setzte den Port auch mal auf Output. Vielleicht reichen die Pullups 
nicht aus.

von S. Landolt (Gast)


Lesenswert?

> Ist auch falsch. Takt gehört an XTAL1.

Irrtum. Das gilt nicht für die Einstellung low frequency crystal.

von Samuel C. (dragonsam)


Lesenswert?

Vergesst meine Antworten heute, bin irgendwie blind Oo

S. Landolt schrieb:
>> Ist auch falsch. Takt gehört an XTAL1.
>
> Irrtum. Das gilt nicht für die Einstellung low frequency crystal.

Mein Datenblatt sagt, dass der Quarz wie jeder andere auch angeschlossen 
gehört, an beide XTALs.

von S. Landolt (Gast)


Lesenswert?

> Mein Datenblatt sagt...

Meines auch, aber es geht doch jetzt um die Zuführung eines Hilfstaktes, 
wenn auf low frequency crystal eingestellt wurde, ein Quarz mit 32 KiHz 
aber nicht verfügbar ist.

von Samuel C. (dragonsam)


Lesenswert?

Ok, dazu steht nichts drin, dann kann das natürlich sein :) Scheint das 
Problem aber nicht zu lösen.

von S. Landolt (Gast)


Lesenswert?

Falls beim ATmega88 CKDIV8 programmiert ist, muss die SPI-Frequenz 
natürlich noch durch 8 geteilt werden. Vielleicht liegt es daran.

von mick (Gast)


Lesenswert?

Moin.

Wenn Low Frequency Crystal gefused ist, will der Atmega nen Uhrenquarz
anregen, aber keinen externen Takt. Das wird nix. Da muss einfach so
ein 32 kHz-Teil dran.

MfG

Micha

von S. Landolt (Gast)


Lesenswert?

> Das wird nix.

Irrtum. Das wird sehr wohl etwas, probatum est.

von idi (Gast)


Lesenswert?

S. Landolt schrieb:
> , probatum est.

Daran liegt es auch nicht.

von Samuel C. (dragonsam)


Lesenswert?

Das mit CKDIV8 ist in der Tat eine sehr gute Idee, würde ich sofort 
ausprobieren. Stell einfach mal dei SPI-Frequenz deutlich tiefer ein.

von qwertzuiopü+ (Gast)


Lesenswert?

Ich benutze den MySmartUSB Light, der steuert seine Frequenz ja 
eigentlich automatisch.

Jetzt habe ich noch zweimal nop zwischen den PORT-Ausgaben eingefügt, 
also 50%-Duty-Cycle. Ändert aber nichts... Auf dem Atmega88 ist ja auch 
noch ein Programm, welches eine LED per PWM dimmt, man sollte also 
eigentlich was sehen, wenn der µC läuft...

von qwertzuiopü+ (Gast)


Lesenswert?

So, ich habe nochmal ein wenig gemessen: Der Atmega8 ("Taktgeber") zieht 
etwa 14 mA. Am PORTC liegen je nach Pin zwischen 1,98 und 2,05 V an. Auf 
Ausgang ist er; eine angeschlossene LED leuchtet kräftig.
Der Atmega88 hat etwa 4 mA Stromverbrauch, dieser sinkt jedoch alle ca. 
zwei Sekunden auf 3 mA.

von Leo B. (luigi)


Lesenswert?

Was immer du da misst, es ist Mist, aber egal.
Gib dem ATmega88 seine ~32kHz. Wenn du sicher gehen willst, dann einfach 
über je einen Widerstand ( 470R solltens tun ) an XTAL1 und XTAL2, aber 
ich meine auch XTAL1 ist der richtige.
Und dann mit der niedrigsten SPI-Frequenz mal versuchen die DevID zu 
lesen. Klappt das nicht, dann hast du ihn zu 99% "verfused" und dabei 
die ISP-Schnittstelle deaktiviert. Dann hilft nur noch HV-Programming.

Google ist dein Freund!

von S. Landolt (Gast)


Lesenswert?

> ich meine auch XTAL1 ist der richtige
Wie wäre es, wenn solche Meinung mal durch Ausprobieren untermauert 
würde? Ich bekomme hier an XTAL1 nur Frequenzen bis etwa 70 kHz durch, 
an XTAL2 jedoch problemlos z.B. 2 MHz.


> Gib dem ATmega88 seine ~32kHz ... an XTAL1
Das würde bei gesetzter CKDIV8 heißen, dass der MySmartUSB Light bis auf 
1.0 kHz heruntergehen müsste - kann er?
Mit der jetzigen Konstruktion, 1.33 MHz an XTAL2, reichen rund 41.6 kHz.

Allerdings habe ich auch den Eindruck, dass es die Einstellung low 
frequency crystal nicht oder nicht alleine ist.

von S. Landolt (Gast)


Lesenswert?

Zitat myAVR
> Der mySmartUSB light kann nur bis auf 52910 Baud (~211 kHz)
> herunter gehen
Aha.

Falls also auf dem ATmega88 CKDIV8 gesetzt ist, bräuchte man einen Takt 
über 1.7 MHz, d.h. auf dem ATmega8 reichen die 8 MHz nicht, nötig wäre 
ein Quarz über 10 MHz.
Alternativ könnte man den ATmega8 mit
    out PORTC, r16
    out PORTC, r17
vollpacken plus Rücksprung vom Ende an den Anfang und mehrmals 
versuchen, die L-fuse des 88 umzustellen.

Wobei allerdings dieses
> Auf dem Atmega88 ist ja auch noch ein Programm, welches
> eine LED per PWM dimmt, man sollte also eigentlich was
> sehen, wenn der µC läuft...
unklar bleibt.

von qwertzuiopü+ (Gast)


Lesenswert?

Ich habs eben noch mal versucht. Immerhin, ein erster Erfolg: Ich habe 
jetzt ein Signal mit 125kHz erzeugt (Atmega8 runter auf 1 MHz und noch 
zweimal nop eingefügt) und die LED am Atmega88 blitzt wieder. Aber 
SSEEEEHHHR langsam. Scheinbar ist also CKDIV8 gesetzt.

von qwertzuiopü+ (Gast)


Lesenswert?

Hmm, sieht schlecht aus für meinen Programmer: Der Atmega88 lässt sich 
mit einem Signal bis zu 333kHz takten. Mit 400 läuft er nicht mehr.

von S. Landolt (Gast)


Lesenswert?

> Der Atmega88 lässt sich mit einem Signal bis zu 333kHz takten. Mit 400
> läuft er nicht mehr.

Nochmal: steht der ATmega88 auf 'low frequency crystal', dann muss der 
Takt auf XTAL2 angeschlossen werden, sonst auf XTAL1. Da aber die 
Einstellung nicht klar ist, sollte sowohl XTAL1 als auch XTAL2 probiert 
werden, ca. 100 Ohm vorschalten. Und das klappt dann bis in den 
MHz-Bereich.

Zur Takterzeugung auf dem ATmega8: bei 8 MHz kann er bis zu 4 MHz 
liefern, entweder mit der von mir beschriebenen Hauruck-Methode, oder 
eleganter, aber etwas aufwändiger, per Timer-CTC-OCn.

Am einfachsten wäre ein neuer ATmega88, aber mir ginge es hier ums 
Prinzip.

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.