Anzeige:

Software UART -> Eingabe überwachen

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

Software UART -> Eingabe überwachen

Von pcprofi am 22.03.2009 16:10

Hallo Bascom-Profis,

hab da mal wieder ein Problem:

Ich muss leider eine Software-UART nutzen... Wie kann ich es hinbekommen, dass die Software ein Byte auffängt, und dieses irgendwo buffert, so dass ich es im Programmverlauf abfragen kann?

Oder muss ich tatsächlich hingehen, und muss dem 2. µC (der Hardware-UART nutzt) eine AbfrageMitteilung senden, ob er was parat hat, und dann auf die Antwort warten?

Gruß Rainer

Re: Software UART -> Eingabe überwachen

Von gerold am 22.03.2009 17:13

Hallo Rainer!

pcprofi hat folgendes geschrieben:
Ich muss leider eine Software-UART nutzen... Wie kann ich es hinbekommen, dass die Software ein Byte auffängt, und dieses irgendwo buffert, so dass ich es im Programmverlauf abfragen kann?

Ich nehme mal an, dass du damit meinst, dass der Empfang im Hintergrund abläuft und das Hauptprogramm ungestört weiterlaufen kann.

Bascom-Software-UART läuft so. Es wird in einer Schleife so lange der Status eines Pins abgefragt, bis ein Zeichen oder eine mit CarriageReturn abgeschlossene Zeichenfolge komplett empfangen wurde. Während dieser Zeit, wird die Hauptschleife blockiert.

Nur die Hardware-UART kann im Hintergrund arbeiten und die empfangenen Daten, unabhängig von der Hauptschleife, in eine Buffervariable speichern.

pcprofi hat folgendes geschrieben:
Oder muss ich tatsächlich hingehen, und muss dem 2. µC (der Hardware-UART nutzt) eine AbfrageMitteilung senden, ob er was parat hat, und dann auf die Antwort warten?

Das ist zumindest das Einfachste. Damit weißt du genau, wann du Daten empfängst und kannst das Warten auf Daten gezielt im Hauptprogramm unterbringen.

Andere Möglichkeit: Du sendest vom zweiten µC aus per SPI Daten an den ersten µC. Das würde im Hintergrund passieren. Nach jedem empfangenen Byte bekommst du einen Interrupt ausgelöst.

EDIT:

Noch eine andere Möglichkeit: Wenn du genug (3) Pins übrig hast, dann könntest du vom zweiten µC ein Signal an den ersten µC geben, dass Daten anliegen würden. In der Hauptschleife des ersten µC wird dann ein Signal an den zweiten µC gegeben, um diesem mitzuteilen, dass man jetzt Daten empfangen könne. Erst dann schickt der zweite µC die Daten an den ersten µC. So ähnlich, wie es RS-232 mit CTS und RTS macht (Hardware Handshake). Oder vielleicht doch zu kompliziert...

lg
Gerold
Smile

Von BellaD am 22.03.2009 19:05

Moin

Vielleicht ist es möglich ,bei Verwendung des Software Uart den RX zusätzlich noch auf einen Interrupt zu legen Wink

Mal dat Datenblatt konsultieren .

Welcher MC ?

Von pcprofi am 22.03.2009 19:48

ATMega 8.

Im Datenblatt habe ich dazu nix gefunden - sonst wäre mir die Problematig ja schon eher aufgefallen...

Ich habe vorhin noch ein bisschen gebastelt und habe es tatsächlich auf die zweite von mir beschriebene Art umgesetzt - es funktioniert jetzt, allerdings muss ich an der Abfragehäufigkeit arbeiten... Die Main-Loop ist definitiv zu schnell - dann läuft mir im zweiten Controller der Stack über (er rechnet zu langsam), Timer0 belegt vom Multiplex, Timer1 von einer Uhr (Softclock mit 32,768kHz) ging mangels Bauteilen nicht, und jetzt lässt die Platine es nicht mehr zu, Timer2 belegt von PWM...

Irgendjemand eine fette Idee?

Gruß Rainer

Von pcprofi am 03.05.2009 09:51

Egal...

Ich hab die PWM-Steuerung rausgemacht und stattdessen den IR-Empfänger mitsamt Timer drangeprügelt. Das ist jetzt draus geworden...

Von TheBug am 03.05.2009 10:57

Hm, wo ist denn da der Kerko an der Stromversorgung des Microcontrollers?

Von pcprofi am 03.05.2009 12:46

Ich wusste, dass es irgendeiner merkt...

Ich hab ihn vergessen Wink

Der 7805 hat aber welche, und so lang sind die Leiterbahnen ja auch nicht - jedenfalls funktioniert es trotzdem sehr zuverlässig und genau. Auch der /RESET hat keinen externen Pullup-R - hat auch noch kein Problem gemacht...

Und beim Quarz scheint der CKOPT auch auszureichen... Läuft jedenfalls sehr sauber die ganze Geschichte...

Gruß Rainer

Von TheBug am 03.05.2009 22:18

Ist wie aus einem Hochhaus zu springen: Die ersten Stockwerke gibt es noch kein Problem...

Das hat nichts mit sauber funktionieren zu tun, sondern mit bisher Glück gehabt. Direkt ran an die Pins von Chip 100nF Kerko nachlöten, sonst kommen irgendwann böse Überraschungen.

Anzeige: