Hallo,
ich habe ein Problem. Ich habe eine (funktionierende) Schaltung auf eine
Platine portiert. Danach hat der in der Schaltung verbaute ATmage16 am
Port D keine Signale mehr geliefert. Also neu geflasht und es kommt nur
noch am I2c Bus ein Signal. Also wieder ausgebaut und auf eine
Steckplatine gesteckt und angeschlossen (nur den ATmega), trotzdem kein
Signal. Mit einem ATmega32 ging es auch nicht. Kann es sein, das der
ATmega kaputt ist? Der ATmega32 war neu.
Ich kompiliere unter Windows mit WinAVR und flashe mit AVR Burn-O-Mat
und einem MySmartUSB MK3. Kennt jemand von euch das Problem und
vielleicht auch die Lösung dazu? Sourcecode ist im Anhang.
Display78
Display78 schrieb:> Danach hat der in der Schaltung verbaute ATmage16 am> Port D keine Signale mehr geliefert.JTAG-Fuse?
Außerdem sieht Dein makefile nicht richtig aus. Es fehlen die meisten
C-Sourcen. (Ich hab keine Ahnung von makefiles ...)
Display78 schrieb:> Danach hat der in der Schaltung verbaute ATmage16 am Port D keine> Signale mehr geliefert. Also neu geflasht und es kommt nur noch am I2c> Bus ein Signal
Wie stellst du das fest? Was sollte sich da tun und was passiert
stattdessen?
> Sourcecode ist im Anhang.
Wie wäre es, wenn du einen Dreizeiler schreibst, der nur mal an einem
Portpin wackelt?
> Ich habe eine (funktionierende) Schaltung auf eine Platine portiert.
Wo hat die Schaltung schon funktioniert? Und wie hast du sie portiert?
Laie schrieb:> Außerdem sieht Dein makefile nicht richtig aus. Es fehlen die meisten> C-Sourcen. (Ich hab keine Ahnung von makefiles ...)
Stimmt! Im makefile fehlen fasst alle Quellen:
1
# List C source files here. (C dependencies are automatically generated.)
Lothar M. schrieb:
>> Danach hat der in der Schaltung verbaute ATmage16 am Port D keine>> Signale mehr geliefert. Also neu geflasht und es kommt nur noch am I2c>> Bus ein Signal> Wie stellst du das fest?
Ich messe an den entsprechnenden Pins mit einem Oszi. Am SCL Pin liegt
ein 20kHz Signal an. Der SDA Pin liegt erst auf Low, sobalt ich SCL
loslasse liegt high an beiden Pins an.
Laie schrieb:
>> Danach hat der in der Schaltung verbaute ATmage16 am>> Port D keine Signale mehr geliefert.>> JTAG-Fuse?
Ist deaktiviert.
Lothar M. schrieb:
>> Ich habe eine (funktionierende) Schaltung auf eine Platine portiert.> Wo hat die Schaltung schon funktioniert? Und wie hast du sie portiert?
Ich habe sie auf einer Stechplatine aufgebaut und getestet, dann mit
KiCad einen Schaltplan gezeichnet, dann ein Platinenlayout erstellt und
die Platine geätzt. Dann die Platine Bestückt, den geflashten AVR drauf
und 5V angeschlossen.
Laie schrieb:
> Außerdem sieht Dein makefile nicht richtig aus. Es fehlen die meisten> C-Sourcen. (Ich hab keine Ahnung von makefiles ...)
Es hat so mit genau dem gleichen (und einem anderen) Compiler
funktioniert.
Lothar M. schrieb:
>> Sourcecode ist im Anhang.> Wie wäre es, wenn du einen Dreizeiler schreibst, der nur mal an einem> Portpin wackelt?
Werde ich mal versuchen, allerdings mit allen Portpins.
Schonmal vielen Dank für die bisherigen Antworten.
Display78 schrieb:> Ich habe sie auf einer Stechplatine aufgebaut und getestet, dann mit> KiCad einen Schaltplan gezeichnet, dann ein Platinenlayout erstellt und> die Platine geätzt. Dann die Platine Bestückt, den geflashten AVR drauf> und 5V angeschlossen.
Hast Du die Platine durchgemessen und mit Lupe nach Unterbrechungen und
Kurzschlüssen gesucht?
Display78 schrieb:> Werde ich mal versuchen, allerdings mit allen Portpins.
Ich würde aber nicht mit allen Pins gleichzeitig in die gleiche Richtung
wackeln, denn dann erkennst du keinen Kurzschluss zwischen zwei
Portpins. Eigentlich müsste jeder einzelne Pins für sich selbst
unabhängig von anderen Pins getestet werden. Aber prinzipiell reichen
ein paar der fraglichen Pins aus um eine Aussage treffen zu können...
Dietrich L. schrieb:
>> Ich habe sie auf einer Stechplatine aufgebaut und getestet, dann mit>> KiCad einen Schaltplan gezeichnet, dann ein Platinenlayout erstellt und>> die Platine geätzt. Dann die Platine Bestückt, den geflashten AVR drauf>> und 5V angeschlossen.>> Hast Du die Platine durchgemessen und mit Lupe nach Unterbrechungen und> Kurzschlüssen gesucht?
Ich habe die Platine nicht durchgemessen. Ich habe mir die Platine aber
angestaut und keine Kurzschlüsse, aber eine Unterbrechung in einer nicht
wichtigen Leiterbahn gesehen. Der Rest sieht in Ordnung aus.
Lothar M. schrieb:
> Wie wäre es, wenn du einen Dreizeiler schreibst, der nur mal an einem> Portpin wackelt?
Ich habe es jetzt versucht, allerdings wie angekündigt mit allem
Portpins. Alle waren in Ordnung. wird wohl am Compiler liegen. ich
versuche es mal unter Linux.
Ich habe jetzt das Problem gelöst. Das Programm hing am setzen der
Uhrzeit der DS1307. Ich habe die Displayroutinen jetzt davor gesetzt und
Debugausgaben am Display hinzugefügt.
Hallo nochmal,
ich habe ja das Problem teilweise gelöst. Allerdings gibt es nun ein
neues Problem. Der Hardware-I2c liefert kein Signal am SDA-Pin. Am SCL
kommt ein Signal. Durch die Port-Register kann ich den Pin schon
ansteuern, aber halt nicht durch die I2c Register. Den Controller habe
ich auch schon gestauscht. Es hat auch schon mit genau dem gleichen
Programm mit der gleichen Compilerinstallation am gleichen PC
funktioniert. Hat jemand von euch eine Idee, woran es liegen könnte?
> Die 4,7K Pullup-Wiederstände wurden durch 20K-er ersetzt.
Das soll es gewesen sein? Glaube ich nicht. Ich vermute eher, dass du
bei den Lötarbeiten unbewusst noch einen anderen Fehler behoben hast.
Nein, ich habe noch mal nachgemessen und der eine Widerstand war ein
200K. Den muss jemand anderes(ich nutze die Bauteile nicht allein)
falsch einsortiert haben, da sie ähnliche Farbcodes haben.