Hallo Ich habe ein ziemlich verzwicktes Problem. Es geht um einen Atmega 16 und I2C. Habe 2 identische Platinen. 1 Platine funktioniert wie gewünscht. Bei der 2 hängt sich immer der I2C Teil im Atmega auf. Der Rest des Atmegas funktioniert. Es lassen sich die Fuse auslesen, programmieren und der Timer funktioniert auch noch. Mit viel Glück klappt die Verbindung über I2C für wenige Sekunden. Meist ist aber nach einer halben Sekunde Schluss. Erst nach einem Reset klappt es wieder. Ein Software Problem schließe ich aus da die 1 Platine damit einwandfrei funktioniert. Habe schon alles nachgelötet und zwischen den Pins des Atmegas sauber gemacht. Auserdem. Wie kann sich nur ein Teil des Atmegas aufhängen. PS: Die Pull UP Widerstande sind 2.7k. Die Leitung zwischen den Atmegas ist ca 20cm lang. Strom kommt über USB. Habe es auch schon über den 7805 probiert. Da ist das selbe. Ist der Atmega schrott? MFG Christoph
Christoph B. schrieb: > Habe schon alles nachgelötet und zwischen den Pins des Atmegas sauber > gemacht. Manchmal hilft es, eine funktionierende und eine nichtfunktionierende Platine nebeneinander vor sich hinzulegen und mit einem Ohm-Meter zu vergleichen. Bei jeder Messung sollten die Messleitungen auch vertauscht werden. Ein Vergleich aller Lötpunktimpedanzen gegen GND und Vcc wären in diesem Fall sicher übertrieben, würden aber in Ausnahmefällen auch zu Unterschieden führen, so es welche gibt.
>Ist der Atmega schrott? Nein, Dein Layout. Der Quarz ist viel viel zu weit weg. C8-10 haben bei der Entfernung kaum eine Wirkung. Von der Masseführung fang ich gar nicht erst an. Also: Jedes VCC/AVCC Pin bekommt einen C so nah wie möglich an den Pins. Der Quarz muss auch direkt an den AVR. Die 10µF nach dem 7805 können weg, die 100nF näher an die Pins. Pullups vom I2C sind wo? AREF an VCC ist gefährlich... > Auserdem. Wie kann sich nur ein Teil des Atmegas aufhängen. Vermutlich geräht die Statemaschine vom TWI in einen Zustand den deine Software nicht kennt und bleibt hängen.. Ich Tippe mal auf 0x00 oder 0xF8. Und wenn er eine Reset macht hilft MCUCSR. Versuch mal den interner RC ozillator zu verwenden, vermutlich geht es dann.
Hallo, die 100nF Kerkos sollten sich auf wenigsten 2 Seiten des AVR verteilen und so kurz wie möglich mit den Spannungsversorgungspins verbunden sein. So wie du C8..C10 verbunden hast, kannst du sie auch weglassen. andere Frage: was macht man mit so vielen TSOP's an einer Platine? Sascha
ok danke für die Tipps. Wie sollte man die Kondensatoren am Quarz auslegen. C = 2·CL – (CP+CI) Ich kenne aber CL nicht da ich nicht weiß von welchem Hersteller der Quarz kommt. Habe einfach mal 22pF genommen. Ist das zu niedrig??
> Habe einfach mal 22pF genommen. Ist das zu niedrig??
Ein Umfangreiches Thema. Im Prinzip sollten die Cs + die
Kapazitäten der Leiterbahnen gleich CL vom Quarz sein,
sonst stimmt die Frequenz nicht.
In Deinem Layout da oben kannst du die Cs eigentlich Weglassen.
Nimm bei einem brauchbaren Layout 22pF und gut is.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.