www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 Atmel AVRs hintereinander an einem COM-Port


Autor: Mathias G. (rodiboki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hat jemand schon mal 2 oder mehr AVRs an einem COM-Port (RS-232) 
geschaltet?


PC-COM -> 1.ATMEGA 8 -> 2.ATMEGA 8 -> PC-COM
MAX-232 für die Pegelanpassung zwischen PC-COM und AVRs
Beide Atmels haben eine kleine Steuersoftware drin.
Jeder Atmel hat einen andere kleinen Befehlssatz mit einer ganz kleinen 
Hilfe. Jeder Befehl fängt mit '#' an...
In der Software der beiden wird auf '#' geprüft ansonsten werden die 
Daten von dem Serial In zum Serial Out geleitet.
Das Problem was ich habe ist, wenn ich die hilfe im ersten Atmel aufrufe 
und er gibt diese aus, diese geht zum 2.Atmel, da im Hilfetext kein 
Befehl mit '#' steckt wird dieses weiter zurück zum Terminal(PC) 
gegeben. Nur im 2. Atmel verhaspelt er sich.
Die Serialbuffer sind IN und OUT bei beiden Atmels auf 254 Byte, der 
Hilfetext ist kleiner inklusiv $0A und $0D (also 230 Bytes)...

Ich verwende Bascom AVR und arbeite mit der Hardware UART in den AVR's.

Kann das sein, wenn ein AVR über Daten sendet, probleme hat gleichzeitig 
Daten zu empfangen ?

--
Mathias
(Rodiboki)

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann das sein, wenn ein AVR über Daten sendet, probleme hat gleichzeitig
> Daten zu empfangen ?

Der AVR nicht. Möglicherweise aber Bascom.

Autor: Bernd T. (bastelmensch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Kaiser wrote:
>> Kann das sein, wenn ein AVR über Daten sendet, probleme hat gleichzeitig
>> Daten zu empfangen ?
>
> Der AVR nicht. Möglicherweise aber Bascom.

Da frag ich mich doch gleich mal warum Bascom, das getrennt auf zwei 
Controllern läuft, damit Probleme haben soll wenns die 2 Hardware UARTs 
nicht haben...

Autor: Mathias G. (rodiboki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd T. wrote:
> Andreas Kaiser wrote:
>>> Kann das sein, wenn ein AVR über Daten sendet, probleme hat gleichzeitig
>>> Daten zu empfangen ?
>>
>> Der AVR nicht. Möglicherweise aber Bascom.
>
> Da frag ich mich doch gleich mal warum Bascom, das getrennt auf zwei
> Controllern läuft, damit Probleme haben soll wenns die 2 Hardware UARTs
> nicht haben...
!?!?! Hä
Bascom selber läuft nicht auf den Controllern...
...
?!?!?!

Vielleicht habe ich einiges nicht genau erklärt...

Beide Atmels beinhalten ein Programm, was ich mit Bascom 
geschrieben/programmiert habe. Am Atmel kann ich über den Hardware UART 
ein Terminal (PC) anschließen (mit MAX232 dazwischen u.s.w.). Das 
Programm von mir im Atmel hat einen kleinen Befehlssatz, weil ich damit 
was steuern und abfragen möchte. Mit einem Befehl kann ich eine kleine 
Hilfe aufrufen, um zu sehen welche Befehle mein Programm im Atmel 
versteht.
Die Programme in den Atmels haben einen unterschiedlichen Befehlssatz, 
damit klar ist welcher angesprochen wird.

Also habe ich beide Atmels in Reihe geschaltet:
PC (TX) - > 1. Atmel Chip Hardware UART RX
1. Atmel Chip Hardware UART TX -> 2. Atmel Chip Hardware UART RX
2. Atmel Chip Hardware UART TX -> PC (RX)
also eine Art Loop

Wenn mein Programm im Atmel den Befehl nicht kennt bzw. Text kommt, so 
soll er den Befehl/Text über den UART zum nächsten Atmel schicken.
Das Problem was ich habe ist, wenn ich mit meinem Befehl die Hilfe vom 
1. Atmel aufrufen möchte, muss der zweite diesen Text nur weitergeben, 
da er darin kein Befehle erkennt. Dieser Hilfetext ist nur ca 230 Byte 
lang(inklusive LF und CR in jeder Zeile), also kürzer, als die Buffers 
der Hardware UART aufnehmen können. Trotzdem verhaspelt sich der 2. 
Atmel beim weitergeben des Textes/Daten.
Bei Befehlen, die nur mit wenigen Bytes an Informationen antworten ist 
alles klar.
Da ich im Programm immer auf CR warte und dann weitergebe, habe ich den 
verdacht, daß in dem Moment, wo der Print-Befehl im 2. Atmel ausgeführt 
wird die Daten zum PC zu senden keine Daten vom 1. Atmel annehmen kann, 
bzw. umgekehrt, das beim Empfang von Daten die Absendung gestört wird, 
wegen Interrupt.

--
Mathias (Rodiboki)

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> da er darin kein Befehle erkennt. Dieser Hilfetext ist nur ca 230 Byte
> lang(inklusive LF und CR in jeder Zeile), also kürzer, als die Buffers
> der Hardware UART aufnehmen können.

Die UARTS haben wohl kaum 230 Byte Hardwarepuffer.

Das Problem liegt in deinem Programm und kannst den Fehler hier beliebig 
oft und beliebig lang beschreiben, ohne das Programm wird ihn keiner (*) 
finden.


(*) Absolute Überchecker ausgenommen, aber arbeiten die mit Bascom? 
(SCNR)

Autor: bascom looser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'#' hihi das ist keine echte hartware uart.
Aber bascom fragen sollteste hier lieber nicht stellen,dann wirste hier 
gesteinigt   und verbrannt.Dafür gibt es andere foren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.