www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hardware Handshaking


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie kann ich ein Hardware Handshaking durchführen?
Wenn die auf dem UART empfangenen Daten verarbeitet werden, soll der PC
keine Daten senden können.

Muss ich dazu nur T2IN des MAX232 mit CTS verbinden und T2Out an einen
I/O-Pin?

Wartet der PC automatisch vor den Senden des nächten Bytes, bis der µC
bereit ist oder muss ich das softwaretechnisch lösen?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habs noch nie gebraucht, da die Verarbeitung der Daten i.a.
wesentlich schneller geht als sie durch den Flaschenhals UART
reintröpfeln. Mit einen Rx-Interrupt und einem Ringbuffer ist man
eigentlich immer schnell genug. Evtl. problematisch ist das Schreiben
der Daten in einen EEPROM, da dieser ziemlich langsam ist, ebenso
lösbar.
Braucht dein Programm wirklich zu lange, um die Daten "online" zu
verarbeiten, kannst du genausogut die Baudrate runtersetzen, der
Endeffekt ist (fast) der gleiche zu RTS/CTS - die effektive
Übertragungsrate geht runter, und zwar soweit, bis dein Prozessor
mithalten kann.
Lange Rede- kurzer Sinn, man kann mit Handshake arbeiten, muss es aber
nicht. Schreib mal genauer, warum du meinst, es zu brauchen.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Bytes, die ich empfange schreibe ich in einen externen RAm Baustein
(I²C Bus). Wenn die beiden zuletzt empfangen Daten #13, #10 waren wird
der Befehl ausgewertet. Diese Auswertung geschieht immer noch im
Interurpt.
Meine Baudrate beträgt: 9600 BPS

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im Rx-Interrupt solltest du gar nichts verarbeiten, einfach nur im
internen RAM ablegen, Schreibpointer erhöhen, Anzahl der empfangenen
Bytes erhöhen, fertig. Auswertung im Hauptprogramm (if (rec_bytes
>0)...
Bei 9600 Baud hast du über 1ms Zeit pro Byte - war bei deinen Proz. die
Gewerkschaft da? Du hast 4000 Takte zwischen 2 Bytes, das sollte doch
genügen. Weiter 10% Luft gibts, wenn du den Sender auf 2 Stopbits
setzt, das hilft auch oft.
Ansonsten sehe ich noch nicht, wo bei dir das Zeitproblem entsteht.

Autor: Kai Schilling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mein Tread vom Sim Bug war grad drüber , also

eep_r_wait_s:sbic  EECR, 0                     ; bit cleared?
             rjmp  eep_r_wait_s
             .
             ret

ist wohl geeignet .

Ich arbeite problemlos mit 9600 bis 115200 baud .

Wichtig ! Denkt an eure Quarze , zu große Toleranzen bei der
Generierung der Baudrate könnte Probleme geben , viele Gegenstationen
sind da nicht so tolerant. Also am besten nen ordentlichen Quarz 1.8432
, 3.6864 , 7.3728  oder 11.059 (kann fast jeder alte 8515 ab ) ,das
ergibt mit den passenden Teilerfaktoren ( siehe AT90S8515.pdf page 58
o.ä. ) brauchbare Baudraten mit %Error = 0.0

-üblicher Standart f=7.3728 ,UBRR= 47 ergibt saubere 9600 Baud

MfG Kai

Autor: Kai Schilling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry...das war glaube ich die falsche Transferrichtung

darf der AVR dem PC nicht sagen wenn er genug hat ?
Oder ist die Verbindung ausschließlich unidi PC-->MCU ?

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.