Halloo Leute, ich habe in paar Tage micro_klausur und ich bin am üben, aber ich verstehe nicht viele von was ich mache.. kann jemandem mich bitte helfen..? was ist in diese Beschreibung gefragt? ich meine hier mit dem 400 Machinenzyklen.. was ist das? wie soll ich es programieren? danke im voraus Lg yves ;Beschreibung: Programmierung „Serieller Watchdog“ Der 80c515c soll zur Überwachung eines zweiten Mikrocontrollers eingesetzt werden.Hierzu sind die beiden Controller über die serielle Schnittstelle miteinander verbunden.Die Schnittstelle soll in Mode 1 (1 Startbit, 8 Datenbits, 1 Stoppbit)mit einer Baudrate von 9,6kBaud betrieben werden.Zur Takterzeugung wird ein 10MHz-Quarz verwendet.Schreiben Sie ein Programm in Assembler, welches zyklisch überprüft,ob im Zeitintervall von 50ms ein serieller Empfang stattgefunden hat. Bleibt der Empfang aus,soll der Reset-Pin des zu überwachenden Mikrocontrollers für 400 Maschinenzyklen auf 0-Pegel gezogen und die Überwachung gestoppt werden.Der Reset-Pin des zu überwachenden Controllers ist an P1.0 des 80c515c angeschlossen.Ist die Überwachung nicht aktiv, kann Sie jederzeit über einen seriellen Empfang gestartet werden.
:
Verschoben durch Admin
umsonst angemeldet, falsches forum, keinen plan vom studiengang... und in 5 jahren wundern, dass man ned eingestellt wird - gleich danach gegen den ingenieurmangel wettern.
Berechung Timer 0 Reloadwert: T_overflow = 50ms Bei 0,6µs pro Zählschritt entspricht dies somit 50000µs / (400*0,6µs) = 208,333333 Zählschritten. ... gewählt(209) TL0 = 0x0D1h TH0 = 0x00 Ist die Berechnung so richtig?
Hier der Ablaufplan, Yves:
1 | ->Schnittstellen initialisieren |
2 | ->Timer so einstellen, dass er nach 50ms überläuft. |
3 | ->Endlosschleife: |
4 | -> Wurde im Timer-Überlauf ein Zeichen empfangen? Wenn nicht, dann aus der -> Endlosschleife springen! |
5 | ->Ende Endlosschleife |
6 | -> |
7 | ->Es wurde aus der Endlosschleife gesprungen, also kein Zeichen empfangen! |
8 | ->400 Takte lang den Reset-Pin des anderen Controllers auf LOW ziehen (z.B. mit einem Timer, oder Reset LOW setzen, dann 399 nop's, dann Reset HIGH setzen, oder auch mit einer Schleife, die 400 Takte benötigt) |
9 | -> Auf seriellen Empfang warten: Dann wieder zurück zur Endlosschleife! |
10 | |
11 | ->Im Timer-Überlauf: Prüfen, ob ein Zeichen empfangen wurde! |
Dein Programm soll im Grunde überprüfen, ob der andere Controller noch lebt! Gibt er kein Lebenszeichen mehr von sich (innerhalb von 50ms wurde kein Zeichen empfangen), so soll er neu gestartet werden. Das geschieht dadurch, dass der Reset-Pin des überwachten Controllers für einige Zeit auf LOW gezogen wird. Diese Zeit wurde in der Aufgabe als "400 Takte" vorgegeben. Gibt er danach wieder ein Lebenszeichen von sich, wird die Überwachung fortgesetzt!
@ Michael M. (ad-rem) >400 maschinenzyklen = 400 clock cycles = 400 takte. Nöö, keinesfalls, erst recht nicht beim 8051.
Falk Brunner schrieb: > @ Michael M. (ad-rem) > >>400 maschinenzyklen = 400 clock cycles = 400 takte. > > Nöö, keinesfalls, erst recht nicht beim 8051. grade nochmal nachgeschaut. ein NOP braucht auch auf dem 8051 einen takt. bei 400 NOPs hab ich sprünge und verzweigungen mal weggelassen.
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.