alternative UART-Pins am ATMEGA328P

OP #7607684

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

#7607690

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.

OP #7607696

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 ?

#7607702

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.

OP #7607707

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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 2 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.