Forum: Mikrocontroller und Digitale Elektronik HC12-Kompakt->Anfänger-> diverse Probleme


von djmax66 (Gast)


Lesenswert?

Hallo Zusammen,
ich muss für ein Studienprojekt einen HC12 (MC68HC812A4) programmieren. 
Dazu habe ich ein HC12compakt Board. Als Entwicklungsumgebung nutze ich 
den Codewarrior von Metrowerks. Jetzt bin ich dabei einige Sachen 
auszuprobieren. Habe aber kaum Erfolg. Es geht um ein LED-Blink-Programm 
(also quasi "Hallo Welt" auf dem Mikrocontroller :) )
1. Problem:
Zum Übertragen des Codes auf den HC12 benutze ich das Monitorprogramm 
TwinPeeks, welches auf dem Board standardmäßig vorhanden ist. Ich lade 
das Programm in den Speicher in die Page 80. Direkt nach der Übertragung 
schaue ich mir den Speicherbereich an, und es sind Daten da. Nach 
Spannung weg und wieder dran, stehen im Speicherbereich nur "F". Der 
HC12 ist zum Programmieren im Normal Narrow Single Mode. Obwohl nur F im 
Speicher stehen, scheint das Programm zu laufen. (Mode: Normal, Wide, 
Expanded). Aber nur ein-oder zweimal. Dann passiert bei Spannung an nix 
mehr...
Ist es ok, dass ich mein Programm ich Speicher nicht mehr finde!? Wenn 
ja, wo ist es hin?

2. Problem
Ich habe ein Programm geschrieben, dass x-mal bis FFFF zählt und 
anschließend den Ausgang für die LED togglen soll.

for (i = 0; i<10; i++)
{
   for (j = 0; j<0xFFFF; j++)
  {}
}
ioPORTE ^= bPTE7;

Das Verhalten: Für x=10, sehr schnelles blinken. Für x=100, LED bleibt 
aus. Für x=5 ab und zu ein kurzes aufflackern der Led.
Außerdem verändert sich das Verhalten der LED mit der Zeit. Zum Beispiel 
kurze Intervalle, dann lang, LED mal heller mal dunkler... Keine 
Regelmäßigkeit erkennbar. Der Watchdog ist aus.
Woran könnte das liegen?
Ein Verdacht wäre meine Spannungsversorgung. Ich habe ein einfaches 
Steckernetzteil für 12VDC die ich dann mit einem ML 7805A auf 5V 
umwandle. Ist diese Spannung stabil genug? Oder muss da ein "richtiges" 
Netzteil her?

3. Problem
Ich habe bislang keine Möglichkeit mir anzuschauen, was auf dem HC12 
passiert. Gibt es Möglichkeiten auf dem HC12 die Programme Schritt für 
Schritt alufen zu lassen und dabei die Register und den Speicher sich 
anzuschauen? also einfach gescheit zu debuggen? Ich habe schon einen 
HC12-Simulator gefunden, der akzeptiert allerdings nur s19-Dateien, 
Codewarrior erzeugt aber sx...

Ich bin wirklich jede Hilfe, jeden Tipp oder Hinweis dankbar! Ich bin am 
verzweifeln mit dem Sch****-Ding.

Vielen Dank im Vorraus!

Max

von Uwe (Gast)


Lesenswert?

Hi!
zu 1
<in den Speicher in die Page 80
Ist Page 80 im EEprombereich? Ist TwinPeeks nicht Adressorientiert? Wenn 
du es ins Ram schreibst verdunstet es natürlich.
zu 2, nicht mein Fachgebiet
zu 3 Brauchst du nicht für TwinPeeks auch eine .s19 Datei?
für Debug ist das ODB (nannte sich das so?)vorgesehen, ist so ähnlich 
wie JETAG und es gehört, glaube ich, noch irgendwelcher Schnickschnack 
dazu.

Mehr kann ich dir jetzt aus dem Ärmel aber auch nicht sagen.

Viel Erfolg, Uwe

von Uwe (Gast)


Lesenswert?

Hi!
BDM (background debug mode) interface nannte sich der Anschluss, habe es 
eben gerade in einem anderen Beitrag gelesen.

MFG Uwe

von Max G. (djmax66)


Angehängte Dateien:

Lesenswert?

Hallo nochmal!

Vielen Dank Uwe, für deine Antworten!
Ich habe ein Beispielprogramm vom unserem Laboringenieur bekommen, dass 
auch läuft und dass ist ein *.sx-File.

Aber hier tun sich gerade immer neue Abgründe auf.
Also: Das Beispielprogramm ist in Assembler geschrieben (auch mit 
Codewarrior). Ist dieselbe Funktionalität, wie auch mein Bespielprogramm 
haben soll.
Da ich in C programmieren will, hat mir eben dieser Laboringenieur ein 
leeres Projekt für C zur Verfügung gestellt, in dem aber alle Register 
und ISR und so weiter schon angelegt sind. Also eigentlich müsste ich 
nur meine Funktionen reinschreiben und das Ding sollte laufen.
ABER: Diese Library passt zum HC12 aber nicht zum HC12compact-Board. Die 
prm-Dateien unterscheiden sich. In dem Projekt was ich verwenden soll, 
fehlen die hälfte der Einträge dort. Und die Speicherbereiche sind 
anders definiert.
Ich habe probiert die prm-Datei in meinem Projekt auf den Stand aus dem 
Beispielprojekt zu bringen. Da meckert aber der Linker, dass eine 
"Absolute Section" sich mit dem neuen Interruptvector überschneidet. 
Meine neue Frage ist, wo diese Sections eingerichtet werden. Problem ist 
die Startadresse des Interruptvectors. Oder kann ich den einfach 
verschieben?
Ich habe die prm-Dateien mal angehängt. Außerdem habe ich so eine ganz 
wirre Start12.c in dem Projekt, die ich allerdings gar nicht verstehe... 
Gibt es eine Start-Datei in c für den HC12-compact?
Ich hoffe mir kann jemand helfen.

Vielen Dank schonmal!

Viele Grüße
Max

von StinkyWinky (Gast)


Lesenswert?

Ich denke nicht, dass sich die Startadresse der Vektoren verschieben 
lässt. "Sections" sind in Deinem Fall wohl identisch mit den "Segments".
Die Start12.c dient unter anderem dazu, die statischen Variablen zu 
initialisieren.

Hast Du schon mal mit einem Oszilloskop das Blinken der LED analysiert?

von Max G. (djmax66)


Lesenswert?

Hallo nochmal,

also es gibt Fortschritte.
Ich musste die Deklaration des Interruptvektors aus der PRM-Datei 
herausnehmen. Jetzt werden der Vektor automatisch mit diesen statischen 
Segmenten verknüpft.
Und dann das andere Problem war, dass diese Start-up-Routine zu lange 
gedauert hat. So hat der Watchdog zugeschlagen, bevor er gelöscht wurde. 
Daher dieses undefinierte Flimmern...
Jetzt hoffe ich mich endlich dem wahren Zweck meines Programmes widmen 
zu können.
Ein Super-Gefühl für einen Freitag :)

Vielen Dank für eure Unterstützung. Ich werde mich aber sicher nochmal 
melden.

Viele Grüße
Max



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.