ATMega128 startet nicht bei Kontakt an UART Pins

OP #6567967
Lesenswert?

Hallo,

mein ATMega128 startet einfach nicht wenn etwas in den UART PINs 
"passiert".

An den PINs darf kein USBtoUART, Raspberry GND, VCC oder sonstiges 
anliegen. Nichteinmal als I/O PINs lassen diese nicht nutzen.

Nur wenn die PINs Frei sind startet der Controller.

Es ist auch egal ob man UART oder I/O nutzen möchte... Erst wenn der 
Controller in der Hauptschleife läuft kann man dort etwas anschließen.

Kann sich/mir das jemand erklären?
Gast #6567977
Lesenswert?

Christina A. schrieb:
> Kann sich/mir das jemand erklären?

Die Spannung darf an (fast) allen Pins maximal 0,5V höher sein, als die 
Versorgungsspannung. Wenn du diese Bedingung nicht einhalten kannst, 
musst du mit Fehlfunktionen leben.

UART Schnittstellen haben im Ruhezustand HIGH Pegel. Wenn dein 
Mikrocontroller keine Stromversorgung hat aber ein UART Signal anliegt, 
ist das eindeutig außerhalb dieser Anforderung.
Angehängte Dateien:
OP #6568151
Lesenswert?

Komischerweise ist es ja so...

Ich habe den Bootloader drauf und alle funktioniert wunderbar...

Ich kann Flashen etc.. Beim Reset startet der Bootloader usw...

Dann Flashe ich das Hauptprogramm.. und sobald dann etwas am UART hängt 
startet er einfach nicht...

Auch wenn ich den UART unkonfiguriert lasse.. Ich kann die PINs auch auf 
High oder LOW setzen... hilft nichts....

Nachdem der AVR aber dann in der main ist.. kann ich per UART 
kommunizieren...
Gast #6568170
Lesenswert?

Ist die Schaltung sauber? (Ordentliche Versorgung, Kerkos, alle VCC Pins 
versorgt, kein Signal vor VCC anliegend)

Es klingt soweit nach einem Softwareproblem. Vielleicht irgendein 
Interrupt aktiv, ggf. Überreste vom Bootloader?
Gast #6568313
Lesenswert?

Christina A. schrieb:
> Kann sich/mir das jemand erklären?

Die Schaltung wird über die UART Pins und die Eingangsschutzdioden im 
ATMEGA dauerversorgt. Dadurch passiert kein ordentlicher Reset.

Eventuell reicht ein Serienwiderstand in der UART-Leitung.
Ansonsten gibt es Puffer wie z.B. CD4050 die anstelle 
Eingangsschutzdioden Z-Dioden verwenden. Oder ggf. ein Pegelwandler mit 
BSS138.

Gruß Anja
Gast #6568331
Lesenswert?

Anja schrieb:

> Die Schaltung wird über die UART Pins und die Eingangsschutzdioden im
> ATMEGA dauerversorgt. Dadurch passiert kein ordentlicher Reset.

So ein Blödsinn. Selbst wenn die Speisung nur vollkommen parasitär ist, 
wenn man Reset auf Low zieht, dann gibt auch einen Reset. Fraglich ist 
nur, ob das Teil danach ordentlich wieder hoch kommt.

Allerdings: wenn ein Bootloader beteiligt ist, dann wird der Reset ja 
i.d.R. nicht über den Reset-Pin ausgelöst (sondern z.B. über den 
Watchdog), möglicherweise gibt es sogar nichtmal einen echten Reset. 
Hängt also alles vom Bootloader ab.

Der kann beliebig Scheiße programmiert sein. Also:

@Christina (vermutlich sowieso nur ein Fake)
Zeig' den verwendeten Bootloader!
Moderator Persönliche Seite #6569288
Lesenswert?

Christina A. schrieb:
> Keiner eine Idee?

Ist bisschen umfangreich, um das zu erraten.

JTAG hast du per Fuse ausgeschaltet, ansonsten könnte man da mal mit'm 
Debugger drauf gehen. (Für einen ATmega128 würde ja sogar so'n uralter 
JTAGICE-Clone genügen.)

Außerdem fehlt der Code vom Bootloader, sodass nicht klar ist, ob der 
das System in einem „halbseidenen“ Zustand hinterlässt.

0xF000 ist für einen ATmega128 übrigens keine gültige Booloader-Adresse.

Es wäre sinnvoll, wenn du dein Projekt konsistent hälst. Wenn zu 
twimaster.c ein i2cmaster.h gehört, dann sucht man schon ein wenig. 
Außerdem solltest du dich entscheiden, ob du F_CPU im Makefile oder in 
sytem.h definierst, aber nicht in beiden.
Gast #6569694
Lesenswert?

Problem wurde die Nacht behoben.

Eine elektronische Verbindung zwischen Duko (SDA) und Leiterbahnen (TxD) 
war das Problem.

Die Duko ist so nah das die Aura nicht ganz die elektrische Verbindung 
trennt (0.1mm).

Einmal mit dem Cuttermesser entlang der Leiterbahnen und das Problem war 
behoben.

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