A t m e g a 88 wird nicht mehr erkannt

Gast #4075771
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]
#4075806
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.
Gast #4075810
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 %.
Gast #4075820
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.
Gast #4076086
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...
Gast #4076092
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.
#4076117
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!
Gast #4076177
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.
Gast #4076309
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.
Gast #4089309
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.
Gast #4089539
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.

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