Forum: Mikrocontroller und Digitale Elektronik Atmega Uart mit invertierten Pegeln


von OlliW (Gast)


Lesenswert?

Hallo Zusammen,

kennt jemand einen "schlauen" Trick um den Uart eines z.B. Atmega88 mit 
invertierten Pegeln zu betreiben (also eine HW Lösung = Transistor oder 
so sowie ein SW-Uart ist hier nicht gemeint)?

(ich habe das Datenblatt eigentlich gründlich durchgelesen und dort 
nichts zu gefunden, wenn ich nur zu blöd zum Lesen war bitte kurzen 
Hinweis und sorry)

Mir fällt bisher nur soetwas der Art ein:
Senden: PCint des Tx Pins auf Flanke aktivieren, in der PCint ISR dann 
einen Ausgang entsprechend setzen
Empfangen: Signal auf einen beliebigen PCint, diesen auf Flanke 
aktivieren, in der ISR dann einen anderen beliebigen Pin entsprechend 
setzen, wobei dieser Pin mit dem Rx-Pin elektrisch verbunden ist.

Aber offensichtlich, dass ist eine ... sagen wir... nicht so dolle 
Lösung...
1) 3 weitere Pins vergeudet
2) zwei Pins müssen el. verbunden werden (also doch HW Eingriff)

Kennt jemand etwas besseres? Idealerweise etwas bei dem man den Rx und 
Tx Pin weiterverwenden kann.

Thx,
Olli

von Entwickler (Gast)


Lesenswert?

>kennt jemand einen "schlauen" Trick um den Uart eines z.B. Atmega88 mit
>invertierten Pegeln zu betreiben ...

Am einfachsten ist es, die Versorgungsspannung umzupolen.

von Klaus W. (mfgkw)


Lesenswert?

1. Nein.
2. Wozu das denn?
3. Wenn's denn unbedingt sein muß, wieso nicht
   einfach ein Inverter?

von Klaus W. (mfgkw)


Lesenswert?

Entwickler schrieb:
> Am einfachsten ist es, die Versorgungsspannung umzupolen.

Laufen dann nicht alle Timer rückwärts?

von Helmut L. (helmi1)


Lesenswert?

Klaus Wachtler schrieb:
>> Am einfachsten ist es, die Versorgungsspannung umzupolen.
>
> Laufen dann nicht alle Timer rückwärts?

Und der Programmcounter zaehlt auch rueckwaerts. Also aufpassen beim 
Resetvector.

von H.Joachim S. (crazyhorse)


Lesenswert?

Die Harware-UART das AVR kann es nicht.
Bleiben Software-UART, ext. Inverter oder anderer Prozessor.
Der M16C kann es, das weiss ich zufällig genau :-), andere sicher auch.

von H.Joachim S. (crazyhorse)


Lesenswert?

Obwohl - es gäbe noch die Möglichkeit:
UART-Ausgang auf einen anderen Eingang, der PinChange-Interrupt tut 
nichts weiter, als einen anderen beliebigen Pin invertiert zu schalten. 
Beim Empfang geht es genauso. Benötigt dann eben 2 Pins mehr und etwas 
Prozessorzeit.

von Klaus W. (mfgkw)


Lesenswert?

Mal bei Atmel fragen ob sie dieses Konstrukt nicht als at74hc04
anbieten wollen?

von Olaf (Gast)


Lesenswert?

> Der M16C kann es, das weiss ich zufällig genau :-)

Und dann beschweren sich wieder alle der Prozessor ist so kompliziert 
weil man soviel einstellen muss. :-)

> Mal bei Atmel fragen ob sie dieses Konstrukt nicht als at74hc04
> anbieten wollen?

Oller Verschwender! Wenn schon dann TC7S04. Davon sollte man sowieso 
immer 20Stk in seiner Bastelkiste haben.

Olaf

von OlliW (Gast)


Lesenswert?

aha, da sind heute aber einige Schlaumeier unterwegs... schon mal 
überlegt dass es einen Grund für diese Frage geben könnte... aber ne, 
Hauptsache erstmal dumme Bemerkungen machen... da kann ich nur meinen 
Kopf schütteln.

@H.joachim:
danke für diese Überlegungen, ich denke die hatte ich so ähnlich oben 
angedeutet, beim Empfang komme ich allerdings darauf das es zwei 
zusätzliche (und nicht nur einen zusätzlichen) Pin braucht. Wie stellst 
du dir dass mit nur einem Pin vor?

@die-nicht-nur-blöd-daher-reden-wollen:
Zur Frage wozu das denn und warum nicht einfach Inverter:

Ich wie auch andere benutzen für Bastlerschaltungen im RC Bereich Hagens 
Bootlader, und das Einfachste (gerade für Nachbauwillige) ist es direkt 
über die serielle Schnittstelle zu gehen (den 1wire Adapter bekommt man 
noch leicht hin). Ziel ist es nicht nur neue SW aufspielen zu können, 
sondern v.a. auch eine Konfigurierbarkeit zu erreichen.

Jetzt will ich aber alternativ, um nicht immer nur den Compi zur 
Konfiguration etc benutzen zu müssen eine Programmierbox bauen, bzw., 
als Testschaltung gibt's das schon und funktioniert auch gut, so wie man 
das für z.B. BESCs, Gyros, Stabis etc kennt. Es geht jetzt allerdings 
darum eine möglichst einfache HW-Platform zu realisieren. Klar kann man 
sich da etwas zusammenlöten, aber das ist nicht Jedermans Sache, und das 
"coolste" wäre es etwas Kaufbares einfach umzuproggen, gibt dann ne 
kleine und robuste und preislich kaum schlagbare (wenn man 
Platinenherstellungskosten mitnimmt) Progbox. Beispiel: Progger-Box von 
Robbe, die gibt es für 16Eur, ist SEHR klein, hat 2x16 LCD, vier Tasten, 
hat nen ATmega, sowie die ISP-Pins an Pads herausgeführt... eigentlich 
ideal... oder eine der HK-Progboxen, leicht billiger dafür etwas 
grösser, etc...

Das wäre HW-mässig eine super Lösung, und wäre auch völlig problemlos 
wenn man Hagens Bootlader mit dem passenden Invert-Flag benutzt... 
allerdings... und das ist DER Pferdefuss... man wäre dann nicht mehr 
kompatibel zu der seriellen Schnittstellenlösung oben!

Ich bin da jetzt also auf der Suche nach der meiner Meinung nach besten 
Lösung... und jetzt gibt es ja nicht nur die obigen Idioten sondern auch 
die "Hacker" die immer für nen coolen Trick gut sind, und meine Hoffnung 
war dass es hierzu vielleicht auch einen "coolen" Umweg gibt... (nur 
weil ich ihn nicht sehe muss es ihn ja nicht geben, ne)

wie auch immer das hier weitergeht, man findet in jedem Fall bestätigt 
das es mehr Idioten als coole Hacker gibt.

Olli

von Klaus W. (mfgkw)


Lesenswert?

Die Höflichkeit gepachtet hast du ja nun auch nicht gerade.

Wenn du mit Kopfschütteln fertig bist, könntest du dir deine
Ergüsse vielleicht selbst nochmal durchlesen.

von Helmut L. (helmi1)


Lesenswert?

Absoluter Fall von Humorlosigkeit.

Ausserdem hat man ihm schon mehrfach gesagt das es mit dem Prozessor so 
nicht geht. Die einzige Loesung ist ein Software Uart. Einen Inverter 
will er ja nicht. Die Pegel bei den meisten UARTs sind so gewaehlt das 
man direkt einen invertierenden  RS232/RS485 Treiber dort anschliessen 
kann.

von Entwickler (Gast)


Lesenswert?

>Absoluter Fall von Humorlosigkeit.

Und das wird sich noch verschärfen, wenn jeder ESD-Funke einen 
Prozessortausch erforderlich macht.

von Helmut L. (helmi1)


Lesenswert?

Entwickler schrieb:
> Und das wird sich noch verschärfen, wenn jeder ESD-Funke einen
> Prozessortausch erforderlich macht.

Ach watt.  Prozessorpins fuehrt man immer direkt auf den Stecker.
ESD ist was fuer Weicheier.

Mir laeuft immer eine kalte Schauer den Ruecken runter wenn ich sehe das 
man Prozessorpine ohne ESD Beschaltung einfach so nach aussen legt.

von Karl H. (kbuchegg)


Lesenswert?

OlliW schrieb:
> aha, da sind heute aber einige Schlaumeier unterwegs... schon mal
> überlegt dass es einen Grund für diese Frage geben könnte...

Nein. Eigentlich nicht.
Also, es gibt keinen Grund da seine eigenen Pegel einzuführen.

von Skua (Gast)


Lesenswert?

Entwickler schrieb:
> Am einfachsten ist es, die Versorgungsspannung umzupolen.

Wenn man nun VCC als GND nimmt sollte, sofern sonst galvanisch getrennt, 
das gewünschte herauskommen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Der XMega kann das mit allen I/O-Pins, den gibt es auch in handlich als 
XMega16A4.

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.