Hallo, ich bin mir bei den Begriffen aus der MC-Welt noch nicht so ganz sicher, ob ich aller richtig verstanden habe. Wir arbeiten im Studium mit einem MC8051, die Fragen sind aber eher allgemeiner Natur. Ich geb mir meine Antworte teilweise mal gleich selber, vielleicht kann mir jemand sagen, ob ich es richtig verstanden habe ;) Quarztakt/Zyklen ----------------- Der 8051 arbeitet mit einem Quarztakt von 11.0592 MHz und hat pro Quarztakt 12 Zyklen, dh 11059200/12 = 921600 Zyklen pro Sekunde Was mir noch nicht so ganz klar ist, ist der Begriff Zyklus. Ist ein Zyklis die Pegeländerung von Low auf High oder ist ein Zyklus von low->high->low BAUD/BAUD-Rate ---------------- Mir ist noch nicht ganz klar, was in diesem Zusammenhang mit Symbol gemeint ist: 1 Baud ist die Geschwindigkeit, wenn 1 Symbol pro Sekunde übertragen wird Soweit ich verstanden habe, kann ein Symbol aus x Bits bestehen. Aber wo ist festgelegt, wie viele Bits das sind? Ein einfaches Beispiel wäre ja die Übertragung von ASCII-Codes (7 Bit) mit einem Prüfbit (Odd Parity) sind dann diese 7 bit oder 8 bit das Symbol? In unserem Beispiel haben wir über Timer1 eine Baudrate von 1200Bd generiert. Da ist mir auch noch nicht ganz klar, welche Bedeutung der Timer für die Serielle Schnittstelle hat. wird beim Timerüberlauf automatisch der Interrupt für die Schnittstelle ausgelöst? Oder gibt diese der Schnittstelle einen Takt vor, wann er ein anliegendes Signal in den nächsten Buffer-Platz legen soll Fragen über Fragen ;) Vielen Dank erstmal.
Sascha wrote: > BAUD/BAUD-Rate > ---------------- > > Mir ist noch nicht ganz klar, was in diesem Zusammenhang mit Symbol > gemeint ist: > 1 Baud ist die Geschwindigkeit, wenn 1 Symbol pro Sekunde übertragen > wird > > Soweit ich verstanden habe, kann ein Symbol aus x Bits bestehen. Aber wo > ist festgelegt, wie viele Bits das sind? Im Protokoll. Schau mal in der Wikipedia nach RS-232, da wird beschrieben, dass es zwei Pegel gibt. Der eine steht für 1, der andere für 0. Bei GBit-Ethernet ist das anders. Aber das steht immer im jeweiligen Standard. > Ein einfaches Beispiel wäre ja die Übertragung von ASCII-Codes (7 Bit) > mit einem Prüfbit (Odd Parity) sind dann diese 7 bit oder 8 bit das > Symbol? Symbol != Buchstabe. Ein Symbol ist die kleinste Information: Beim RS-232 ist also ein Symbol ein Bit. Zusätzlich zur Parity kommen noch Start- und Stopbit hinzu. Oft brauchst du also 11 Bit pro Charakter, den du übertragen willst. Beim GBit können mehrere Bit pro Symbol übertragen werden, siehe WP.
Ok, also kommt es auf die schnittstelle bzw das jeweilige Protokoll an, aus wie vielen wie Bits (High-Pegel) ein Symbol besteht. Bei der RS-232 also 1 Bit / Signal, d.h. mit Start- und Stoppbit brauche ich 11 Symbole um einen ASCII-Zeichen / s übertragen zu können. Bei 1200Bd wären das also 1200/11 = 109 Zeichen / s Und der Timer? Gibt der an, in welchen Zyklen nach wie viel Zyklen das nächste BIT gelesen wird? Achja, und da war noch die Frage nach dem Zyklus ;) Danke!!
Bei dem "Zyklus" bin ich mir nicht sicher. Aber da schau doch einfach mal genau ins Datenblatt deines Prozessors. Oft steht da, für welche Maschinenbefehle wieviele Zyklen benutzt werden.
Sascha wrote: > Und der Timer? Gibt der an, in welchen Zyklen nach wie viel Zyklen das > nächste BIT gelesen wird? Bei den UARTS wird oft sogar mit einem Vielfachen der Geschwindigkeit gemessen. Z.B. pro Bit dreimal abgetastet. Wenn wenigstens zweimal eine 1 gemeldet wird, wirds wohl eine gewesen sein. Bei RS-232 sind Sende und Empfänger ja nicht synchron. Bei Synchronen Protokollen reicht auch einmal messen.
ok, also prinzipiell ist es schon so, dass pro "Timer-Überlauf" 1 Bit gelesen wird
Die Mikroprozessoren haben UARTS als Peripherie; wie die genau intern arbeiten, weiß ich nicht. Aber um die Timer brauch man sich ja auch nicht zu kümmern. Man stellt die Einstellung richtig ein und gut ist. Ab dann bekommt man fertige Chars raus.
Zyklus: 1 Befehlszyklus = 12 Oszillator- oder Maschinen-Zyklen Ein Zyklus ist eine sich wiederholende Abfolge, d.h. in diesem Fall von dem Moment an, ab der das Signal low wird bis es wieder low wird: LLHHLLHHLL ^ ^ Du kannst auch sagen, dass es die Periodendauer einer Frequenz ist, also so, wie man es in der Schule gelernt hat :) Mittlerweile gibt es natürlich neue Technologien, so dass die 12er-Teilung bei neueren 8051-Derivaten nicht mehr gegeben ist, sondern eine 6er, 4er und bisweilen sogar eine 1er-Teilung möglich ist! Der Timer gibt den Takt für den UART vor, wobei der Takt normalerweise das 16-fache der Baudrate ist. Wie weiter oben bereits gesagt wurde, wird eine 2-aus-3 Auswertung vorgenommen, um Störeinflüsse zu ver(h/m)indern. Somit stimmt es also nicht, dass pro Timer-Überlauf 1 Bit gelesen wird! Guck mal in den Anhang, da steht alles beschrieben, auch die Zyklen usw., und wenn noch Fragen sind, kannst ja nochmal schreiben. Ralf
> Wir arbeiten im Studium mit einem MC8051... Und das Skript wird auf Steintafeln gemeißelt... ;-) > Was mir noch nicht so ganz klar ist, ist der Begriff Zyklus. Ein Zyklus ist ein kompletter, nicht unterbrechbarer Durchlauf der internen Statemachine. Bestehend aus Befehl holen, Befehl interpretieren, Befehl ausführen, Ergebnis ablegen. Damit kann ein "Elementarbefehl" (z.B. Akku löschen) ausgeführt werden. Wenn aber Operanden aus bestimmten Speicherbereichen (z.B. RAM) benötigt werden, sind zusätzliche Zyklen nötig.
Ok, dann danke ich erstmal soweit und danke für die Datei, werd mir das auf jeden Fall mal durchlesen ! [quote]Und das Skript wird auf Steintafeln gemeißelt... ;-)[/quote] Nein, das Skript ist an und für sich auch ganz gut, aber das stand halt nicht drin. Manchmal ist es so, dass die Profs Dinge stillschweigend voraussetzen oder nur in der Vorlesung kurz erwähnen. Leider habe ich aus gesundheitlichen Gründen aber die ersten beiden Vorlesungen zu dem Thema verpasst und stieß im Rahmen der Prüfungsvorbereitung wieder darauf. Vielleicht ist es für die Prüfung auch eher nicht wirklich wichtig, weil man im Prinzip wirklich nur den Timer einstellen muss und die Baud-Rate im Falle einer entsprechenden Aufgabe gegeben hat.Aber ich versuche lieber die Dinge auch halbwegs zu verstehen ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.