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
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
Hi! BDM (background debug mode) interface nannte sich der Anschluss, habe es eben gerade in einem anderen Beitrag gelesen. MFG Uwe
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.