mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Baudrate geringfügig ändern


Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe ein DALI-Device realisiert. Nun habe ich gelesen, dass ein 
DALI-Device eine Baudrate von 1080 Baud bis 1320 Baud als korrekt 
einstufen muss. Da alle getesteten Control-Devices aber immer eine 
Baudrate von fast genau 1200 Baud lieferten, konnte ich diese Toleranz 
nicht prüfen. Da ich aber unbedingt normkonform sein will, muss ich 
diese Toleranz auch testen. Hat irgendwer eine Idee wie ich das 
bewerkstelligen könnte?

mfg

Autor: berner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine 8Bit Uart kann theoretisch nur mit Signalen klarkommen, die maximal 
0.5* 1/(8Bit+Spartbit+Stoppbit) = 5% Abweichung in der Baudrate haben. 
(0.5 deshalb, wenn man davon ausgeht, dass in der Mitte des Bits 
gesampelt wird.

Deine Anwendung fordert 11.1% Fehler.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Posch schrieb:
> Hat irgendwer eine Idee wie ich das bewerkstelligen könnte?
Funktionsgenerator als Taktquelle für dein DALI-Device?
Dann kannst du deine Empfangs-Baudrate relativ zur Sende-BR ändern.

Nachdem der Beschreibung leider nicht zu entnehmen ist, welcher uC oder 
was auch immer in diesem DALI-Device verbaut ist und was das Ding tut, 
kann nicht mehr zum Thema gesagt werden...

EDIT:
> Eine 8Bit Uart kann theoretisch nur mit Signalen klarkommen, die maximal
> 0.5* 1/(8Bit+Spartbit+Stoppbit) = 5% Abweichung in der Baudrate haben.
Man kann die Baudrate ohne weiteres ausmessen und das Timing 
entsprechend anpassen. 1200, 2400, 9600 usw. sind keine 
Naturkonstanten... :-o

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Berner:
Ich arbeite auch nicht mit der UART, sondern hab die Kommunikation 
selbst implementiert. Funktioniert einwandfrei!

@Lothar:
Ich verwende einen ATMega328p bei 20MHz. Das Ding folgt einfach den 
Befehlen lt. DALI DeviceType 0.

lg

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich verwende einen ATMega328p bei 20MHz.
Also: FG als Taktquelle anschliessen und eine Frequenz von 18MHz 
einstellen, dann hast du relativ die Baudrate des Control-Devices um 10% 
erhöht. Das selbe mit 22MHz, dann ist dein Control-Device relativ um 10% 
zu langsam (Das Übertakten dürfte der uC anstandslos mitmachen).

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann doch den internen R/C-Generator zur Laufzeit verändern. Da 
nimmste einen Uhrenquarz an TOSC1 und TOSC2 und misst über Timer2 den 
Controllerspeed um 8MHz herum und verstellst OSCCAL mit den Werten, die 
die von Dir gewünschte Abweichung ergeben. Damit kannst Du auch Sweeps 
programmieren.

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Travel Rec:
Irgendwie hab ich das nicht ganz verstanden. Wozu brauch ich einen 
Uhrenquarz an den TOSC-Pins. Kannst du mir das ein bisschen genauer 
erklären, bitte?

Das mit dem Frequenzgenerator fällt leider auch aus - meiner schafft nur 
max. 5MHz. Ich möchte das ganze aber gerne bei 20MHz testen, da meine 
ganzen Einstellungen auf dieser Frequenz basieren.

lg

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Posch schrieb:

> Irgendwie hab ich das nicht ganz verstanden. Wozu brauch ich einen
> Uhrenquarz an den TOSC-Pins. Kannst du mir das ein bisschen genauer
> erklären, bitte?

RC-Oszillator als Hauptoszillator verwenden. Den kannst du in einem 
weiten Bereich über das Kalibrierungsregister variieren.

Damit du aber dabei auch weiss, was gerade als Frequenz rauskommt, 
kannst du den Uhrenquarz an den Timer hängen um nachzumessen.

> Das mit dem Frequenzgenerator fällt leider auch aus - meiner schafft nur
> max. 5MHz. Ich möchte das ganze aber gerne bei 20MHz testen, da meine
> ganzen Einstellungen auf dieser Frequenz basieren.

Der interne Osz geht nicht bis 20MHz und der 28pinner hat keine 2 
externen Takte. Bischen flexibel muss der Mensch also sein. Teste die 
Kommunikation bei niedrigerer Frequenz. Oder bau dir einen externen 
einstellbaren RC-Oszillator für um die 20MHz - nur brauchst du dann noch 
was Drittes um dessen Frequenz nachzumessen.

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du schreibst doch dass du UART selbst implementiert hast,
dann kannst du doch auch irgendwelche timer/schleifen anders einstellen 
sodass der gewünschte Fehler entstehT?

Autor: John-eric K. (mockup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder einen FTDI FT232 nehmen, der macht in Verbindung mit HTerm z.B. 
auch Krumme Baudraten.

Gerade getestet.

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber mit einem FTDI kann ich doch das DALI-Protokoll nicht mehr nutzen, 
oder?

Autor: LeonidMüller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Konformität nach IEC 62386 kann nur durch die beschriebenen 
Testmethoden überprüft werden, wobei dabei alle Prüfungen eingehalten 
werden müssen.
Das Einhalten der Baud-Rate ist meiner erfahrung nach das geringste 
Problem dabei.

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@LeonidMüller:
Ja, aber die restlichen Kriterien habe ich größtenteils erfüllt (habs 
prüfen lassen). Nur die Baud-Rate muss ich noch hinkriegen und 
t_rise/t_fall funzt noch nicht ganz.

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie könnte ich eigentlich t_rise und t_fall beeinflussen? Einfach einen 
C an die Pins? Ginge das?

Autor: LeonidMüller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas Posch
Mich wundert das sehr, aus eigener Erfahrung kann ich sagen dass der 
"Rest" das schwierige ist.
Darf man fragen um welchen Gerätetyp es sich handelt? Welche 
Unterstandards wurden implementiert?

Andreas Posch schrieb:
> Wie könnte ich eigentlich t_rise und t_fall beeinflussen? Einfach einen
>
> C an die Pins? Ginge das?

Prinzipiell schon, nur müssen nach 101 die Eingangsparameter eingehalten 
werden.

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, den C nehm ich nach den Tests wieder raus. Dann passen die 
Eingangsparameter. Ich habe zunächst einmal DeviceType 0 implementiert.

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibts sonst noch Ideen, wie ich den Baudraten-Test durchführen könnte?

Autor: LeonidMüller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Posch schrieb:
> Ja, den C nehm ich nach den Tests wieder raus. Dann passen die
>
> Eingangsparameter. Ich habe zunächst einmal DeviceType 0 implementiert.


... dann passt aber diene Flankensteilheit nicht, oder hab ich dich 
falsch verstanden?


Mögliche Testquellen sind (ausser den "genormten") Funktionsgenerator, 
eigene Schaltung...

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, die Norm sieht Flanken von 10µs bis 100µs vor. Jetzt hab ich in 
etwa 10µs. Damit ich aber auch die 100µs testen kann, brauche ich einen 
C, den ich nach den Tests wieder rausnehme.

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.