Forum: Mikrocontroller und Digitale Elektronik alternative UART-Pins am ATMEGA328P


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael S. (misax)


Lesenswert?

hallo;
in der Arduino-IDE kann man ja mit der Bibliothek SoftwareSerial statt 
der Standard-UART-Pins 0 und 1 zwei beliebige andere digitale Pins 
verwenden. Ich habe versucht, aus der Bibliothek schlau zu werden, was 
alles getan werden muss, um dies zu erreichen, aber das übersteigt 
momentan noch mein C++ Verständnis. Mit Assembler bin ich aber 
mittlerweile sehr vertraut. Für die Standard-Pins 0 und 1 konnte ich ein 
AVR-Assembler-Programm schreiben, das Zeichen sendet und - über die 
RX-Interrupt-Routine - Zeichen empfängt. Wo genau - in welchem Register 
- kann ich denn angeben, dass ich z.B. Pins 2 und 3 statt 0 und 1 
verwenden möchte ? Und ich muss dann statt der RX-Interrupt-Routine den 
Pin-2-Interrupt verwenden, oder ? Im Datenblatt habe ich zu diesem 
Thema, andere Pins als die Standard-Pins für UART zu verwenden, nichts 
gefunden. Hat jemand schonmal diese Sache in Assembler programmiert und 
kann mir ein Beispielprogramm schicken ? Oder ein vereinfachtes 
C++Programm, das übersichtlich nur die nötigsten Programmzeilen enthält 
? Oder vielleicht kurz das Prinzip erklären, wie dem Mikrocontroller 
mitgeteilt wird, dass er zwei andere Pins als 0 und 1 für UART verwenden 
soll ? Das wäre sehr hilfreich. Vielen Dank

von Jens M. (schuchkleisser)


Lesenswert?

Überlege mal in Ruhe bei ner Pizza und was zu trinken, warum die Library 
_Software_-Serial heißt...

von Michael S. (misax)


Lesenswert?

Wie gesagt, bin ich in C++ nicht so bewandert wie in AVR-Assembler, 
deshalb ja meine Frage, ob jemand das schonmal in Assembler programmiert 
hat.

von Jens M. (schuchkleisser)


Lesenswert?

Bestimmt.
Ist halt immer noch eine Softwareserial, keine Steuerung für die 
Hardwaremultiplexer. Ganz einfach, weil es keine gibt.

von Michael S. (misax)


Lesenswert?

Meine Frage ist, ob jemand das, was in dieser Bibliothek in C++ 
programmiert ist, schonmal in Assembler programmiert hat und mir diesen 
Code zuschicken kann.

von Rainer W. (rawi)


Lesenswert?

Michael S. schrieb:
> Wie gesagt, bin ich in C++ nicht so bewandert ...

Es geht rein um das semantische Verständnis des Namens der Bibliothek.

Mit C-Verständnis hat des nichts zu tun.

Das Geheimnis verbirgt sich hinter dem Wortteil  "Software" - keine 
HW-Register, die man konfigurieren kann, kein HW-USART, dass einen 
Interrupt auslöst.

Michael S. schrieb:
> Oder vielleicht kurz das Prinzip erklären, wie dem Mikrocontroller
> mitgeteilt wird, dass er zwei andere Pins als 0 und 1 für UART verwenden
> soll ?

Kurz, das geht beim ATmega328 nicht mit Hardwareunterstützung. Das 
Datenblatt verschweigt dir nichts.

: Bearbeitet durch User
von Michael S. (misax)


Lesenswert?

OK - hat jemand für diese C++Software ein Pendant in Assembler das er 
mir zuschicken kann ? Oder hat jemand vielleicht Lust alles aus dieser 
Bibliothek so zu extrahieren und in EINEN einzigen Sketch zu packen - 
ohne Bibliotheksaufrufe, Klassen und Methoden, sondern einfach als 
prozedurales Programm mit Unterprogrammen ? Das könnte ich dann relativ 
leicht in Assembler umsetzen, aber mit der objekt-orientierten 
Schreibweise in C++ habe ich noch so meine Probleme. Vielleicht hat 
jemand Lust, dieses Projekt mit mir gemeinsam zu entwickeln ? DU bis ein 
C++Crack und schreibst alles um in ein einziges prozedurales Programm, 
und ICH transformiere es in Assembler, und WIR präsentieren das dann 
gemeinsam auf Github ?

: Bearbeitet durch User
von Mario M. (thelonging)


Lesenswert?


von Michael S. (misax)


Lesenswert?

Vielen Dank, Mario, genauso sowas habe ich gesucht. Das schaue ich mir 
morgen in Ruhe an. 1000 Dank.

von Jens M. (schuchkleisser)


Lesenswert?

Michael S. schrieb:
> ICH transformiere es in Assembler

Hast du die Unterhose über der Jeans und ein T-Shirt an, auf dem 
"CoMpIlErMaN" steht?

Ich mein, ernsthaft, wenn du so gut in Assembler bist, dürfte es doch 
ein Klacks sein, ein paar Bits rein- oder rauszuschieben?
Und, noch viel schlimmer: ich hab keine Ahnung vom ATMega-Assembler, 
aber ganze 30 Sekunden gebraucht, um passenden code zu finden...
Ich hab einfach "atmega software usart in assembler" in die Adressleiste 
gehackt.
Ich hab also direkt ein T-Shirt bestellt mit "h4XX0rm4n"...

Michael S. schrieb:
> genauso sowas habe ich gesucht

"Gewollt". "Gesucht" hast du das sicher nicht.

: Bearbeitet durch User
von Michael S. (misax)


Lesenswert?

Trotz aller Gehäßigkeit, Jens, trotzdem danke, denn durch deinen Hinweis 
habe ein weiteres Assemblerprogramm gefunden, echt gut. Ich habe 
tatsächlich die falschen Suchbegriffe verwendet, mich zu sehr auf die 
Alternativen zu den Standardpins in der Suchanfrage konzentriert und 
nichts passendes gefunden. UART für ATTINY, das ist der Schlüssel - 
danke.
ich wünsche allen noch einen schönen Abend. Gute Nacht

von Christian M. (christian_m280)


Lesenswert?

Michael S. schrieb:
> UART [...] das ist der Schlüssel

Nein, eben nicht!

Gruss Chregu

von Rainer W. (rawi)


Lesenswert?

Christian M. schrieb:
> Michael S. schrieb:
>> UART [...] das ist der Schlüssel
>
> Nein, eben nicht!

Doch - zusammen mit "Software"
Beitrag "Software UART"

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.