ATmega16 liefert kein Signal an allen Pins außer I2c

Gast #4986428
Lesenswert?

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
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #4986436
Lesenswert?

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?
Gast #4986444
Lesenswert?

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.)
2
SRC  = main.c
3
SRC += ks0108.c
Gast #4986481
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #4986515
Lesenswert?

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...
Gast #4986517
Lesenswert?

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.
Gast #4993256
Lesenswert?

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?
Gast #4994442
Lesenswert?

> 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.
Gast #4994450
Lesenswert?

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.

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