Forum: Mikrocontroller und Digitale Elektronik XC167 - Timer Problem


von Tobias Faiß (Gast)


Lesenswert?

Hallo zusammen,
ich schreibe gerade an einem in Assembler geschriebenes 
Reaktionszeitprogramm für den XC167CI.
Entwickelt wird mit Keil µVision 3 Eval.

Sobald ich versuche den Timer zu initialisieren bzw. zu starten, will 
dieser jedoch nicht starten.
Quellcode sieht wie folgt aus:

main PROC NEAR ; Start Hauptprogramm

startWarte:
movb P1H, #00h
taster:
movb rl3, DP1H
cmpb rl3, #01h
jmp cc_ne, taster

mov T2CON, #0284h
mov T2IC, #044h
mov T2, #0FFFFh


movb rl3, #00h
movb DP1H, rl3

call pause

movb P1H, #11111111b
bset IEN
bset T2R

stopWarte:
cmp r4, #00h
jmp cc_eq, goError
movb rl3, DP1H
cmpb rl3, #01h
jmp cc_ne, stopWarte

bclr T2R

movb rl3, #00h
movb DP1H, rl3

call zeitumrechnung

endeMain:
jmp cc_uc, endeMain

goError: call error


main ENDP Ende Hauptprogramm


----

Im Debug-Mode innerhalb von keil wird der Timer zwar initialisiert, aber 
sobald der Debugger über den "bset T2R" Befehl hinweggeht, bleibt der 
Status des Timers nach wie vor auf "Stopped" bzw. fängt nicht an zu 
zählen...

Kann mir dort jmd vllt weiterhelfen, wo der (denk-)fehler steckt?? Wäre 
super :)

Vielen Dank im Voraus

Gruß

Tobias

von Microman (Gast)


Lesenswert?

Hallo Tobias,

überprüfe doch bitte mal wie das Disable-Bit im SYSCON3 Register für die 
GPT Einheit steht. Vielleicht ist der Wert falsch. (User's Manual 6-58)

Gruß
Microman

von Tobias Faiß (Gast)


Lesenswert?

Hallo Microman,
erstmal danke für die Hilfe :)

Inwiefern kann ich dieses Bit überprüfen? Soweit ich weiß, wird beim 
Reset bzw beim Startup das Register mit nem Standardwert gesetzt 
(9FD0h). Laut User Manual 6-6 müssten dabei auch die GPT enabeld 
werden...

Danke nochmals für die Hilfe!

Gruß

von Microman (Gast)


Lesenswert?

Hallo,

das ist soweit korrekt! Dachte nur falls Du den Registerwert im Startup 
oder so änderst, könnte da ja vielleicht was schief gegangen ist. Poste 
doch mal ein Bild was Dir der Keil Debugger beim T2 anzeigt. Ich 
verwende in meinem Projekt auch Keil mit dem XC167. Ich könnte dann 
deine Settings mal bei mir laden und schauen was bei mir passiert.

Gruß

Microman

von Tobias Faiß (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Microman,
wäre super, wenn du das ausprobieren könntest!
Verwendest du auch Assembler?

Bisher habe ich kein Startup-File eingebunden, da ich (siehe div. andere 
threads) keine wirkliche Dokumentation gefunden habe, wie ich unter 
Assembler das Startup einbinde bzw. es zum laufen bekomme...
Wäre super, wenn du da weiterhelfen könntest :)

Danke im Voraus

Gruß Tobias

von Microman (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Tobias,

habe deine Settings bei mir mal geladen und der Timer läuft wie sollte. 
Habe Dir mal einen Screenshot von meine Einstellungen angehängt. Kannst 
die ja mal mit deinen vergleichen. Der große Unterschied ist aber, dass 
Du anscheinend den Simulator verwendest und ich es mit einer realen 
Hardware ausprobiert habe. Leider habe ich keine Erfahrungen mir dem 
Simulator sondern nur via OCDS Dongle mit realer Hardware.
Aber vergleich doch mal und melde Dich doch hier wieder.

Gruß
Microman

von Tobias Faiß (Gast)


Lesenswert?

Hallo Microman,
bisher habe ich nur im Keil programmiert, weil ich kein entsprechendes 
Dokument gefunden habe, das erklärt, wie ich Programme bzw. die 
Startup-Datei initialisieren/konfigurieren muss, damit es auf der 
Hardware funktioniert (Benutze den XC167 von Phytec). Deswegen benutze 
ich auch primär den Debug-Modus aus Keil :)
Da es ja bei dir einwandfrei funktioniert, müsste es wohl an den 
Settings liegen... Hast du mir evtl einen Tipp, wie ich das Board 
"richtig" initialisieren muss bzw lauffähig bekomme mit der 
Startup-Datei? Ein Beispielprogramm wäre auch schon klasse... Ich 
vermute sehr stark, das bei der Initialisierung irgendwo der Hund 
begraben ist...

Danke nochmals fürs Helfen! Ist echt klasse! :)

Gruß

von TManiac (Gast)


Lesenswert?

Hi,

es gibt ein Register in welchem die ganzen Einheiten de-/aktiviert 
werden ( weiß den Namen leider nicht aus dem Kopf). Ich habe mit einem 
XC161 programmiert, bei dem eigentlich auch laut Voreinstellung die 
CapComs aktiv sein sollten und habe mich gewundert warum mein µC nicht 
das macht was er sollte. Bis ich mal den Inhalt des besagten Registers 
auf die LEDs gelegt habe. Da war die CapCom2 deaktiviert. Ich habe 
glaube da war irgend was noch deaktiviert. Bin mir aber nicht mehr so 
sicher.

Gruß, TManiac

von Microman (Gast)


Lesenswert?

Hallo Tobias,

hast du immer noch dein Problem? War leider in letzter Zeit sehr 
beschäftigt, Sorry! Melde dich doch kurz.

Microman

von Tobias (Gast)


Lesenswert?

Hi!
Ja, ich hab in der Zwischenzeit versucht weitere Startup-Dateien zu 
"bauen" bzw. in meine Assemblerprogramme zu integrieren - ohne Erfolg...
bin mittlerweile ziemlich ratlos, is wie nach ner nadel im heuhaufen zu 
suchen :-/

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.