Hallo Forum,
ich hab mich dazu durchgerungen, meinen Dimmercode neu zu schreiben.
Jetzt kommt es aber vor, das der MSP in der neuen Version nicht
startet, wenn ich ihn mit Spannung versorge. Erst, wenn ich ihn über
den Compiler starte, rennt er los. In meiner alten Version lief er auch
ohne Compiler. Ich hab dann zum testen das alte Programm noch mal
eingespielt, danach gab es keine Probleme: Einschalten --> läuft aber
mit der neuen Version: Einschalten --> läuft nicht.
Ich schätze mal, das es an der Initialisierung liegt. Jedoch ist die
weitgehend identisch. Ich hab in der neuen Version einige Routinen
ausgelagert. Darunter auch die Initialisierung. Hier mal der Code:
alte Routine (läuft):
1
#include<msp430x12x2.h>
2
#include"i2c.c"
3
4
voidmain(void);
5
voidSchieberegister(int);
6
voidwait_zykl(unsignedint,unsignedint);
7
voidDisplay(int);
8
voidControl_Word(int,int);
9
voidDisp_Zeit(int,int);
10
voidDisp_Charmap(char*);
11
volatileintMenue,enc_delta;//
12
13
voidmain(void)
14
{
15
WDTCTL=WDTPW+WDTHOLD;// watchdog aus
16
P1DIR=0x08;// Definieren der E/As
17
P2DIR|=0xFF;// Set P2 to output direction
18
P3DIR|=0x83;// Set P3 to output direction 3.0, 3.1 3.7
19
=OutRestInput
20
P1OUT=0x00;// initialisieren der Ausgänge
21
P2OUT=0x00;
22
P3OUT=0x00;
23
24
// Starten des Quarzes
25
BCSCTL1|=XTS;// ACLK = LFXT1 = HF XTAL
26
do
27
{// pruefroutine, ob 8 Mhz-oszillator schon
28
stabilist
29
IFG1&=~OFIFG;// OSCFault flag loeschen (zeigt
30
oszillatorfehleran)
31
for(i=0xFF;i>0;i--);// warten, ob es wieder gesetzt wird
jedoch springt er hier gar nicht erst hin. Irgendwie hängt der sich
vorher schon auf. Debuggen ist nicht möglich, weil mit Compiler läuft
das Programm... Ohne jedoch nicht.
Kann das an dem POR liegen ? ich dachte der wäre beim 1232
standartmässig aktiviert. Weis jemand Rat ?
Gruß
Thomas
Sorry, hab ich vergessen zu erwähnen. Das hab ich schon mit
verschiedenen Möglichkeiten versucht. Bevor die mcu_init Routine
aufgerufen wird hab ich mit P2OUT = 0xff versucht die P2 Ausgänge zu
schalten, das klappt schon nicht. Das funktioniert auch nicht, wenn
"P2OUT = 0xff" vor der "Status" Routine gesetzt wird.
Also ich hab das gefühl, das die Main Routine nicht aufgerufen wird.
Diese ist aber unter den Options bei Debugger --> Setup --> Run to
(Häkchen gesetzt) "main" eingetragen.
(Die Status Routine gibt den Wert an ein Schieberegister (HC164) aus).
gruß
Thomas
Ich hab das gerade mal versucht. Hab die Zeile
void main(void);
wieder reingenommen und direkt am Anfang der Main Routine mit
WDTCTL = WDTPW + WDTHOLD;
den Watchdoch abgeschaltet.
Dies bringt jedoch keine Änderung. Der MSP lässt sich nur im Debugger
oder über den Reset Pin starten. Ich gehe doch richtig in der Annahme,
das eine Externe Einschalt-Reset-Logik nicht notwendig ist, oder ?
Müsste ich sonst den Reset Pin nach dem Einschalten kurzzeitig auf Low
ziehen ? Achso, der ist natürlich über einen 5k1 Wiederstand an Plus
angeschlossen.
gruß
Thomas
Hiho,
mal ne dumme Frage. Hast Du alle ISR's implementiert? Du enablest ja
einige (Flanke, Watchdog). Nicht, dass in der Vectortabelle FF's
stehen. Dann geht er natuerlich irgendwann in den Wald...
Ich gehe davon aus, das ich das getan habe :)
Es sind 3 ISR`s vorhanden: Watchdog, TimerA und Port1
er geht ja nicht irgendwann in die Wicken, sondern fängt gar nicht erst
an, was zu machen... Und mit Debugger (IAR) läuft das ja...
kann dann hinterher den JTAG abziehen und der läuft weiter.
Ohne läuft es auch, ich muss halt einmalig nur den Reset machen...
ich schicke am besten mal den gesamten code als Anhang.
gruß
Thomas
die Routinen folgen gleich...
Hmmm, hast Du einen Kondensator am Reset-Pin gegen Masse?
Der Controller sollte beim Einschalten wenigestens kurz mal ein Low
sehen.
Anbei mal die Beschaltung von Standard-Olimex-Boards.
ich werde das mal probieren... ist aber lötarbeit :)
dies würde jedoch nicht erklären, warum das Programm_alt läuft und das
Programm_neu nicht.
gruß
Thomas
Sorry, ich muss diesen Beitrag jetzt doch noch mal nach oben holen, da
ich leider noch keine Lösung gefunden habe.
vielleicht kann mir jemand noch einen Tip geben, was ich noch probieren
kann ?
danke
Thomas
mal ordentliche header-files schreiben und kein .c's includieren ->
schlechter Stil... zu deinem Problem habe ich leider keine Antwort
parat... is scho komisch, check das morgen mal durch... schönen sa
abend...