Forum: Mikrocontroller und Digitale Elektronik Mehrfachfunktionen bei ATMega328PB / UART1 vs. MOSI0/MISO0


von Mario (Gast)


Lesenswert?

Hallo @all,

ich würde gerne einen Datenlogger bauen, für den ich zwei UARTs 
benötige.
Da ich bereits einige Projekte mit dem ATMega328P gemacht habe, fiel 
meine Wahl hier auf den größeren Bruder ATMega328PB (mit zwei UARTs).

UART0 soll hierbei die Kommunikation zu einem PC übernehmen (Logging + 
Konfiguration).

UART1 soll mit einem Battery Management System reden und permanent 
Zellen-Zustände abfragen (115200 baud).

Aber: UART1 teilt sich die Pins mit dem ISP des Controllers, die ich ja 
ebenfalls benötige.

PB4 = MISO0/RXD1
PB5 = MOSI0/TXD1

Das man den Controller daher nicht programmieren kann, wenn das BMS 
angestöpselt ist, kann ich verschmerzen.
Nur wenn ich das ganze auf eine Platine bringe, dann brauche ich 
zumindest auch die ISP Pads bzw. einen Header, der ebenfalls an diese 
Pins angeschlossen ist.

EMV-mäßig klingt das für mich eigentlich suboptimal.

Macht man das denn in der Praxis wirklich so? Oder sollte man den ISP 
Port noch irgendwie zusätzlich beschalten?

Freue mich über eure Erfahrungen diesbezüglich.

Lieben Dank, Mario

von Stefan F. (Gast)


Lesenswert?

Mario schrieb:
> EMV-mäßig klingt das für mich eigentlich suboptimal.

Die kurzen Pins wirken sich nicht so negativ aus, dass man sich darum 
einen Kopf machen müsste.

> Macht man das denn in der Praxis wirklich so?

Ja

Und mit Widerständen trennst du ggf. angeschlossene Bauteile, damit der 
angeschlossene Programmieradapter die Hoheit übernehmen kann. Zum 
Beispiel:
1
Quelle      1kΩ
2
Tx o-------[===]----+-----o PB4 RxD/MISO
3
                    |
4
                    o
5
                  ISP Stiftleiste

Bis 115200 Baud klappt das so tadellos, mehr habe ich nie versucht. Bei 
höheren Bitraten ist eventuell ein Jumper anstelle des Widerstandes 
besser geeignet.

Oder ein Bustreiber mit Tristate Ausgang, der bei Low-Pegel an /Reset 
seinen Ausgang deaktiviert. Denn beim Programmieren ist die ganze Zeit 
der /Reset Pin auf Low.

von Mario (Gast)


Lesenswert?

Hallo Stefanus,

aha - interessant. Vielen Dank für Deine Antwort.
Jumper würde ich gern vermeiden.
Aber die Variante mit dem Widerstand zur Priorisierung finde ich einfach 
und gut.

Was EMV betrifft, würde ich dann als Maßnahme erstmal möglichst kurze 
Leiterbahnen zum ISP Header verlegen.
Vielleicht bin ich auch zu paranoid - gerade bei den Dingen, die man 
zuhause so schwierig definiert testen kann. ;)

Danke für den Tip!

von Pandur S. (jetztnicht)


Lesenswert?

Wenn man fuer den Programmiermodus pins umschalten muss kann man den 
74LVC2G126  verwenden, welchen man mit dem Reset pin ansteuert.
Ich bevorzuge allerdings Controller, die mir keinen solchen Mist 
aufdruecken. zB den Mega644, auch mit 2 Uarts.

von Joachim B. (jar)


Lesenswert?

Mario schrieb:
> Aber die Variante mit dem Widerstand zur Priorisierung finde ich einfach
> und gut.

ich bestätige, mache auch immer die ISP direkt an den Chip, aber als 
Port R nehme ich 470 Ohm, bis jetzt hatte keiner meiner ISP Prommer mit 
den 470 Ohm Probleme, 1k finde ich für die Port Treibermöglichkeit als 
Ausgang schon etwas hoch, als Input ist 1k OK, als Output treibt ein 470 
Ohm weiter.

: Bearbeitet durch User
von Gerhard O. (gerhard_)


Lesenswert?

Atmel hat da noch über dieses Thema die App Note 910:

http://ww1.microchip.com/downloads/en/appnotes/atmel-0943-in-system-programming_applicationnote_avr910.pdf

Irgendwo in einem anderen Dokument konstantierte Atmel, daß als Minimum 
330 Ohm zur Isolation des Programmiergerätes ausreichen sollen. Bei mir 
verwende ich zur Entkopplung externer Peripherie meist 470-1K. Mit dem 
AVR-ISP MKII funktioniert das auf alle Fälle. Bei anderen 
Programmiergeräten müßte man zur Vorsicht eben testen.

von Wilhelm M. (wimalopaan)


Lesenswert?

Gerhard O. schrieb:
> Atmel hat da noch über dieses Thema die App Note 910:
>
> 
http://ww1.microchip.com/downloads/en/appnotes/atmel-0943-in-system-programming_applicationnote_avr910.pdf
>
> Irgendwo in einem anderen Dokument konstantierte Atmel, daß als Minimum
> 330 Ohm zur Isolation des Programmiergerätes ausreichen sollen. Bei mir
> verwende ich zur Entkopplung externer Peripherie meist 470-1K. Mit dem
> AVR-ISP MKII funktioniert das auf alle Fälle. Bei anderen
> Programmiergeräten müßte man zur Vorsicht eben testen.

Statt ISP könntest Du auch Bootloader benutzen.

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
Noch kein Account? Hier anmelden.