Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: RS232 fehler durch die Funktion Serial_Init Kategorie: Programmierung C (von PeterS - 6.05.2006 12:01)
Als Antwort auf Re: RS232 fehler durch die Funktion Serial_Init von FrankT - 6.05.2006 11:01
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128
Hallo,

wir haben für Zeitmessungen Timer 2 immer im 10ms Interrupt laufen, die Werte kann man mit
Timer_TickCount() abfragen. Das TImer 2 immer aktiv im Hintergrund läuft, ist auch dokumentiert.

Der Interpreter kannfür die Verarbeitung  von  1ms Timings manchmal zu langsam sein, es kommt drauf an
was alles in der Interrupt routine läuft.

Gruss Peter

> > Hallo Frank,
> > danke für den Tip; es fuxt. Aber es ist doch schade und scheint ein echter BUG im Interpreter zu sein. ich
> > habe extra einen MAX3232 für die RS232 eingebaut, um die �bertragung zu züchten und dann darf man
> > gar nicht ... Angeregt durch Deinen Tip habe ich mal die ganzen divider der seriellen Schnittstelle aus-
> > probiert. Die stimmen alle nicht bis auf den für 38400 B. Der nächste ist 279 (könnte 4800B sein); 535
> > (könnte 2400B sein) dann kommt 791 (sind wir locker bei 1200B) und 1000 funktioniert auch; da sind wir
> >  im sub-Sekundenbereich. Wirklich schade, aber vielleicht gibts demnächst ein geiles Update.
>
> Das habe ich bei seriellen Bibliotheken schon öfter gesehen. Die nutzen immer die Toleranz bis zum k... aus.
> Wenn man dann mit nem modernen (USB-) Seriellen AnschluÃ? kommt geht nix. 115kBaud funzt bei mir aber
> auch einigermaÃ?en mit Hyperterminal (nicht mit GtkTerm) und wenn ich die erste Ã?bertragung verwerfe - denn
> bei der kommt nur Müll an. Offenbar prüfen heutige Terminalprogramme keine Framing-Errors mehr :(
>  
> > Die Geschichte mit der Rückkehr probiere ich jetzt aus und unterrichte über das Ergebnis.
> > Aber noch ein Problemchen: Ich habe versucht mit dem Timer 1 eine Systemzeit zu implementieren (1ms).
> > Mit der Verwendung der Interruptquittung funktioniert das auch, d.h. überfahrene Interrupts werden gezählt,
> > so dass man später die Zeit richtig stellen kann. Nur, die Zeit stimmt eben nicht! Ich habe also durch den
> > Timer 0 40KHz erzeugt (T=25µs) und Timer 1 zum Zähler vergewaltigt und, blubs, es geht. Mir scheint, da
> > ackern noch eine ganze Menge Intr. im Hintergrund und kein Sch.. hat das dokumentiert. Da kannste
> > suchen wie Schneewitchen, Hi!
>
> Ich hab den TimerInt mit 10ms laufen, aber mei mir kommt es auch nicht so auf die genaue Zeit an, sondern
> auf das Verhältnis zu den anderen Me�werten. Dann pa�t schon.
> Es fehlt halt einfach eine asm Anweisung...


    Antwort schreiben


Antworten: