Forum: Compiler & IDEs UART Library ohne Interrupts


von Andy S (Gast)


Lesenswert?

Kennt jemand eine UART Library für AVRs, die keine Interrupts verwendet?
Also so auf die schnelle konnte ich in google nichts finden.

lg andy

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Kennst du AVR-GCC-Tutorial/Der UART? Da sind die Grundfunktionen für 
einzelne Zeichen und Strings beschrieben. FIFO-Puffer, Ringpuffer fehlt 
allerdings noch.

von Andy (Gast)


Lesenswert?

Stefan B. schrieb:
> Kennst du AVR-GCC-Tutorial/Der UART? Da sind die Grundfunktionen für
> einzelne Zeichen und Strings beschrieben.
JAHA.

Ohne Interrupts und ohne Puffern.

Gibt es da nichts fertiges oder muss ich mir jetzt die codestücke 
zusammen kopieren?

lg andy

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

Andy schrieb:
> oder muss ich mir jetzt die codestücke zusammen kopieren?

JAHA.

;-)

von Stefan B. (stefan) Benutzerseite


Lesenswert?

JAHA

Es ist nie auszuschliessen, dass jemand eine solche UART-Polling Library 
mit Buffer geschrieben hat.

Viel Sinn macht es IMHO nicht. Der dafür nötige zyklische Aufruf der 
Pollingfunktionen im Userprogramm ist - selbst wenn man das im Timer 
macht - einer UART-Interrupt Library unterlegen.

von Karl H. (kbuchegg)


Lesenswert?

Andy schrieb:

> Gibt es da nichts fertiges oder muss ich mir jetzt die codestücke
> zusammen kopieren?

Vielleicht findet sich ja noch jemand, der die 3 MINUTEN Zeit erübrigen 
kann, damit deine Tastatur geschont wird.

von Andy (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Vielleicht findet sich ja noch jemand, der die 3 MINUTEN Zeit erübrigen
> kann, damit deine Tastatur geschont wird.

vielleicht, wer weiß

von Oliver (Gast)


Lesenswert?

Wobei die übliche Gegenfrage bei so etwas immer lautet:

WARUM?

Wofür brauchst du eine UART-lib ohne Interrupt?

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Oliver schrieb:
> Wobei die übliche Gegenfrage bei so etwas immer lautet:

Die typische Gegenfrage, die sich mir im Laufe des Treads aufgedrängt 
hat, die ich mir aber verkniffen habe, wäre gewesen:
Kannst du eigentlich schon alleine aufs Klo, oder muss die Tante zum 
abputzen mitkommen?

Weils wahr ist. Manchmal frägt man sich schon ....

von Andy S (Gast)


Lesenswert?

Oliver schrieb:
> Wofür brauchst du eine UART-lib ohne Interrupt?
Es macht scheinbar Probleme mit dem Empfangen von Zeichen vom VRBOT 
Modul
-->http://www.veear.eu/Forums/tabid/236/forumid/8/threadid/293/scope/posts/threadpage/4/Default.aspx

Karl heinz Buchegger schrieb:
> Kannst du eigentlich schon alleine aufs Klo, oder muss die Tante zum
> abputzen mitkommen?

hahahahahahaha, da Karl is wieda ma luthtig gege?


lg andy

von Johann L. (gjlayde) Benutzerseite


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Andy S schrieb:
> Oliver schrieb:
>> Wofür brauchst du eine UART-lib ohne Interrupt?
> Es macht scheinbar Probleme mit dem Empfangen von Zeichen vom VRBOT
> Modul

mit Sicherheit nicht

Ganz im Gegenteil, ganz im Gegenteil
Der Typ, der dort den Rat gegeben hat auf ungebuffert umzustellen ... 
ich weiß nicht was er raucht, aber er sollte besser aufhören damit.

von m. keller (Gast)


Lesenswert?

Wenn man lustig ist und z.B. ein kleinen "Scheduler" verwendet und auf 
Teufel komm raus, alles über den Scheduler laufen lassen möchte kann man 
auch eine lib ohne Interrupts nehmen.

Aber es macht selten Sinn und ist vor allem sehr schnell selbst getippt. 
Die Zeit in der auf Antworten hier gewartet hast, hätte locker gereicht 
eine einfache Funktion mit Ringbuffer usw zu schreiben und zu testen!

von Udo S. (urschmitt)


Lesenswert?

Andy S schrieb:
> Es macht scheinbar Probleme mit dem Empfangen von Zeichen vom VRBOT
> Modul
> -->http://www.veear.eu/Forums/tabid/236/forumid/8/thr...

Prust,
wenn ich den letzten Eintrag da richtig lese, dann sagt der Typ, daß es 
Probleme geben kann wenn man noch Daten im Empfangspuffer stehen hat, 
die von einer vorherigen Kommunikation stammen.
Deswegen soll man ungepufferte Kommunikation benutzen.
und du setzt noch einen drauf indem du auch noch blockierende Funktionen 
fürs Lesen und Schreiben benutzen willst.
Schon Klasse.

Die Frage ist doch wohl warum stehen da noch Daten von vorher drin.
Eine intelligentere Lösung wäre das Löschen des Puffers vor der nächsten 
Kommunikation. Und/oder dem vollständigen Lesen der Daten, schliesslich 
haben diese Daten wohl auch einen Sinn.
Aber dazu müsste man wohl selbst denken statt Code zusammenzukopieren, 
ach so das ist ja auch schon zu viel Arbeit.

Die Lösung mit dem ungepufferten Lesen ist natürlich Sonderklasse, frei 
nach dem Motto: "Was ich nicht weiß, macht mich nicht heiß".

Gruß beim Popcorn essen, ich hol jetzt ein Bier :-)

von Peter D. (peda)


Lesenswert?

Wenn es nicht nur super einfache Programme sind, macht sich ein FIFO 
immer bezahlt. Ansonsten kriegt man ruchzuck Timingprobleme.

Beitrag "AVR-GCC: UART mit FIFO"


Peter

von Andy S. (Gast)


Lesenswert?

Udo Schmitt schrieb:
> und du setzt noch einen drauf indem du auch noch blockierende Funktionen
> fürs Lesen und Schreiben benutzen willst.
Nein, wenn du die 3. Zeile springdt, dann kommst du drauf dass ich das 
nicht war. Der Name von ihm steht links weiter uben im Katerl.

Udo Schmitt schrieb:
> Aber dazu müsste man wohl selbst denken statt Code zusammenzukopieren,
> ach so das ist ja auch schon zu viel Arbeit.

Gut, dass wird da ab zu mal Komiker haben, sonst wär ja das ganze 
langweilig.

Udo Schmitt schrieb:
> ich hol jetzt ein Bier :-)

Das einzig vernünftige.

Karl heinz Buchegger schrieb:
> mit Sicherheit nicht

Mit welcher Begründung nicht wäre jetzt wiederrum interessant.
Weil wenn sich der ppscher nicht auskennt und die drauf kommen dann 
schickens den n canelli oder so und der kennt sich aus.

Mein Programm ist oerfekt, also an mir kann es theoretisch nicht liegen.
Entweder hat es was mit der Doku oder krutzifuchsss^^

Udo Schmitt schrieb:
> Eine intelligentere Lösung wäre das Löschen des Puffers vor der nächsten
> Kommunikation.

Ich sehe keine Funktion in uart.h (peter fluerry) die das kann. Dh um 
einmal das machen zu können müsste ich mich zu 100% mit seinem 
Kaudawelsch auskennen.
Das wird sehr viel Zeit in Anspruch nehmen, weiß nicht ob ich diese 
Lösung für die vernünftigste halten soll, aber danke für den Tipp.

lg andy

von Karl H. (kbuchegg)


Lesenswert?

Andy S. schrieb:

> Karl heinz Buchegger schrieb:
>> mit Sicherheit nicht
>
> Mit welcher Begründung nicht wäre jetzt wiederrum interessant.

Weil dir der Interrupt-Betrieb garantiert, dass du kein einziges Zeichen 
von der Gegenstelle verpasst, solange die Interrupts generell nicht 
allzulange gesperrt sind und es zu keinem Buffer Overflow kommt.

Ganz im Gegensatz zum Pollingbetrieb. Einmal zulange nicht hingesehen 
und schon verpasst dein Programm die Hälfte.


> Mein Programm ist oerfekt, also an mir kann es theoretisch nicht liegen.

Der war gut.
Dein Programm ist alles andere als perfekt.

>> Eine intelligentere Lösung wäre das Löschen des Puffers vor der nächsten
>> Kommunikation.
>
> Ich sehe keine Funktion in uart.h (peter fluerry) die das kann.

Und?
Sowas kann man schreiben.

> Dh um
> einmal das machen zu können müsste ich mich zu 100% mit seinem
> Kaudawelsch auskennen.

Ah geh.
So eine Funktino hast du in 0 Komma Nox geschrieben.

> Das wird sehr viel Zeit in Anspruch nehmen,

Ja.
Ich hab schon gelernt, das dir grundsätzlich erst einmal alles zu schwer 
ist und zu lange dauert und überhaupt. Dafür bist du aber auch der 
größte, beste und schönste Programmierer, den die Welt je gesehn hat.


void clearUart()
{
  while( uart_getc() != UART_NO_DATA )
    ;
}


Fertig. Ob die Konstanten jetzt genauso heissen oder anders weiß ich 
nicht mehr. Ist aus dem Gedächtnis geschrieben und ich such mir jetzt 
nicht die Fleury Lib raus um dir diesen 3 Zeiler korrekt zu machen

> müsste ich mich zu 100% mit seinem
> Kaudawelsch auskennen.

Wenn jemand wie du, mit deinem Kentnisstand, den Fleury Source Code 
'Kauderwelsch' nennt, dann ist das schon fast eine persönliche Beleidung 
an Peter.
Es ist genau diese deine Attitüde, warum dir hier immer weniger Leute im 
Forum helfen. 0-auskennen, nix wissen, aber eine große Klappe und sich 
selbst als den Superchecker hinstellen. Das funktioniert bei 15-jährigen 
Mädchen, die fallen auf sowas noch rein. Aber in einem Technikerforum 
bist du mit so einem Verhalten ganz schnell unten durch.

von Udo S. (urschmitt)


Lesenswert?

Andy S. schrieb:
> Udo Schmitt schrieb:
>> Aber dazu müsste man wohl selbst denken statt Code zusammenzukopieren,
>> ach so das ist ja auch schon zu viel Arbeit.
>
> Gut, dass wird da ab zu mal Komiker haben, sonst wär ja das ganze
> langweilig.
Wenn ich und vor allem Karl Heinz Komiker sind wegen der gemachten 
Aussagen, dann kriegst Du aber den Oskar für Komik und oder Faulheit, 
wenns den denn gäbe.

Andy S. schrieb:
> Udo Schmitt schrieb:
>> Eine intelligentere Lösung wäre das Löschen des Puffers vor der nächsten
>> Kommunikation.
>
> Ich sehe keine Funktion in uart.h (peter fluerry) die das kann. Dh um
> einmal das machen zu können müsste ich mich zu 100% mit seinem
> Kaudawelsch auskennen.
> Das wird sehr viel Zeit in Anspruch nehmen, weiß nicht ob ich diese
> Lösung für die vernünftigste halten soll, aber danke für den Tipp.
Ich habe auch geschrieben, daß man einfach alle noch vorhandenen Daten 
weglesen könnte, aber wahrscheinlich was alles zu lesen auch schon zu 
viel Arbeit.

Andy S. schrieb:
> Weil wenn sich der ppscher nicht auskennt und die drauf kommen dann
> schickens den n canelli oder so und der kennt sich aus.
Aha, die kennen sich aus.....ROFL muss ich mich jetzt verneigen?

Andy S. schrieb:
> Mein Programm ist oerfekt, also an mir kann es theoretisch nicht liegen.
> Entweder hat es was mit der Doku oder krutzifuchsss^^
RoflRofl, der Superduperprogrammierer, aber einen 3Zeiler um einen 
Ringpuffer direkt zu leeren oder wie Karl Heinz oben einfach den Puffer 
leerlesen ist doch zuuuuuu viiiiil Arrrbeiiit und dauert so lange. Schon 
klar da reicht ein Bier nicht.

Hach ist das wieder toll hier.
Viel Erfolg weiterhin, ich denke Du hast noch Raum zum verbessern ;-)
lG Udo

von Andy S. (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Der war gut.
> Dein Programm ist alles andere als perfekt.

Schau bitte genauer rein, dann findest du unter anderem diese Zeile:
1
uart_putc(ARG_ACK); //get arguments (groupindex)
2
3
      while(uart_getc() & UART_NO_DATA); //solange keine Daten von der UART verfügbar sind tue nichts.
4
      wortposition = uart_getc() - ARG_ZERO;  //Empfangenes decodieren.
5
      sprintf(buffer_str,"%i",wortposition);

Karl heinz Buchegger schrieb:
> Wenn jemand wie du, mit deinem Kentnisstand, den Fleury Source Code
> 'Kauderwelsch' nennt, dann ist das schon fast eine persönliche Beleidung
> an Peter.

So ist das überhaupt nicht gemeint.
Gemeint war: Wenn ich einen komplizierten Code schreibe und du ihn 
nutzen willst, jedoch drauf kommst dass du etwas ein bisschen anderes 
haben willst, dann versuchst du das minimale zu ändern.
Trotzdem musst du wissen wie das ganze Zusammenspiel ist.

Karl heinz Buchegger schrieb:
> 0-auskennen, nix wissen, aber eine große Klappe und sich
> selbst als den Superchecker hinstellen.

Bei dir weiß ich jetzt nicht was ernst gemeint ist und was nicht, aber 
ok wenn das deine Meinung ist dann werde ich mich damit abfinden. Ich 
möchte die überhaupt nichts beweisen.

Karl heinz Buchegger schrieb:
> Aber in einem Technikerforum
> bist du mit so einem Verhalten ganz schnell unten durch.

Danke für den Tipp, glaube aber das sagst du mir nicht zum ersten mal.

Udo Schmitt schrieb:
> aber wahrscheinlich was alles zu lesen auch schon zu
> viel Arbeit.

hahahahha.

Udo Schmitt schrieb:
> Aha, die kennen sich aus.....ROFL muss ich mich jetzt verneigen?

Naja, also ich sage, laut mein Coding müsste alles hinhaun. Wenn 
allerdings nicht dann gehe ich dorthin wo ich das Modul gekauft habe und 
da rechnet man damit, dass der Support stimmt.

Udo Schmitt schrieb:
> der Superduperprogrammierer, aber einen 3Zeiler um einen
> Ringpuffer direkt zu leeren oder wie Karl Heinz oben einfach den Puffer
> leerlesen ist doch zuuuuuu viiiiil Arrrbeiiit und dauert so lange. Schon
> klar da reicht ein Bier nicht.

Wenn du die meinen Code anschgeschaut hättest, dann wüstest du, dass der 
Ringpuffer geleert wird.

Da reicht kein Bier bei solchen Diskussionen!

lg andy

von Oliver (Gast)


Lesenswert?

Andy S. schrieb:
> Wenn du die meinen Code anschgeschaut hättest, dann wüstest du, dass der
> Ringpuffer geleert wird.

Und wo genau ist dann das Problem, das überhaupt erst zu deiner Anfrage 
hier geführt hat?

Oliver

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.