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


von Mathias G. (rodiboki)


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)

von Andreas K. (a-k)


Lesenswert?

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

Der AVR nicht. Möglicherweise aber Bascom.

von Bernd T. (bastelmensch)


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...

von Mathias G. (rodiboki)


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)

von Thomas B. (yahp) Benutzerseite


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)

von bascom looser (Gast)


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.

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.