Forum: Projekte & Code Gepuffertes interruptgesteuertes Senden


von wb1 (Gast)


Angehängte Dateien:

Lesenswert?

Ist eventuell von Interesse

von Michael (Gast)


Lesenswert?

Also ich sag Dir mal, wie es ist: Dein Code ist grauenhaft !

Wozu wird 'merker' in einem Register gehalten, um angeblich CPU-Takte
zu sparen, um ihn dann doch wieder zu pushen oder z.B. 'hilfszelle'
irgendwo im RAM abzulegen. Als Merker würde TXIE völlig reichen.

Puffer umsortieren ? Warum das denn ?
Der Text ist durch fehlende Formatierung äußerst unleserlich, was
eigentlich schon frech ist.

Erfahrene Programmierer werdem sich bei den Kommentaren wie
"" Kritisch sind zu große Puffer bei hohen sendegeschwindigkeiten und
hohem Datenaufkommen
; Bei zu großem Puffer kann das umsortieren des Puffers länger dauern
als der Sendevorgang ""
gleich zur DEL-Taste begeben.

Anfänger werden mit dem schlechten Beispiel auf den Holzweg geführt.
Vielleicht machst Du einen 2. Anlauf, vielleicht auch dann mit
Ringpuffer, wie er schon überall verwendet wird.

von wb1 (Gast)


Lesenswert?

Magst ja recht haben.
Auf den Ringpuffer bin ich garnicht gekommen.
Damit müßte eigentlich noch mehr Rechenzeit frei werden
Allerdings sehe ich auch hier, das der Ringpuffer volläuft.
Das umsortieren entfällt aber.
Werde mich mal ranmachen.

TXIE allein reicht nicht, UDRE müßte die Lösung bringen.
Der Zustand im Moment des Interrupts ist nicht voraussehbar.
Ein Rücksetzen von TXIE könnte zur Blockade führen.

Ich dachte, ich bin hier in einer Hobbyumgebung, das erfahrene
Programmierer das Forum nutzen ist natürlich möglich.

Auf den Holzweg wollte ich niemanden führen. Betrachte es doch einfach
als meinen eigenen geistigen Erguß.

Ich gelobe Besserung

von wb1 (Gast)


Angehängte Dateien:

Lesenswert?

Hier der Ringpuffer.
Noch nicht voll ausgetestet.
Wo siehst du Verbesserungsmöglichkeiten?

von Michael (Gast)


Lesenswert?

Es tut mir leid, aber der Text ist ohne jegliche Formatierung; ich
weigere mich, ihn näher anzusehen.

Programmierfehler gibt es immer. Es ist aber, glaube ich, im Sinne
aller Interessenten, hier lauffähigen und getesteten Code zu bekommen.
Sieh Dir dich 'mal die anderen Beiträge in dieser Codesammlung an.

von wb1 (Gast)


Angehängte Dateien:

Lesenswert?

Der getestete Ringpuffer zum seriellen Senden.
Nach der Assemblierung ist die Formatierung im Listfile vorhanden.

von wb1 (Gast)


Angehängte Dateien:

Lesenswert?

Nun hat sich doch noch ein Fehler in der Flusssteuerung eingeschlichen

.if flusssteuerung = 1
sbrc xl,2      ;ist der Sendepuffer zu voll?
rjmp xonsenden    ; nein
lds xl,puffer    ;stelle den Fuellstand des Puffers fest
cpi xl,low(empfangsunterbrechung)

; ++++++++++ fehler >>brlo xonsenden richtig: brlo senden5,
brlo senden5    ; nicht zu voll,

lds xl,puffer+1
cpi xl,high(empfangsunterbrechung)
breq xoffsenden    ; zu voll, sende als naechstes Zeichen XOFF

.endif

Bitte berichtigen.

von Gerwin Plako (Gast)


Lesenswert?

Hi, und weiß wer was drüber ???

von Thorsten (Gast)


Lesenswert?

Hast du eigentlich keine Tabulator-Taste?

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.