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]
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.
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 %.
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.
> 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.
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
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...
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.
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!
> 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.
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.
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.
> 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.