Servus Leute! Blöde Frage, aber irgendwie komm ich nicht drauf! Ich habe ein MSP430F169 Header Board mit JTAG USB TINY und check einfach nicht, wie ich die Software von der IAR Kick Start Umgebung in meinen Prozessor laden kann. Muss doch irgendwie gehen, oder? Ich kann nur compilen und debuggen. So schwer kann das doch nicht sein ... muss doch irgendwo einen Button geben "Load Software in Processor" oder was auch immer!?
hast du in den Projekt Options von Simulation auf FET Debugger umgestellt? schau mal...
Wenn man dann wie oben geschrieben den Debugger ausgewählt hat, wird bei jedem Start des Debuggers das Programm in den Flash geladen. Man sollte aber Suppress Download ankreuzen, damit man bei einem bloßen nachgucken, was der Przessor macht, nicht jedesmal den Flash strapaziert.
stimmt, auf jeden fall ist beim anlegen eines neuen projektes standardmäßig die simulation eingestellt...
ich glaube es funktioniert, zumndest passiert was ! Aber wenn ich einen Port mit 1 belege muss ich da doch gegen Vss auch einen Spannung messen können?
hast du angegeben, dass der entsprechende Portpint ein Ausgang sein soll? PxDIR = ...
Das sollte dann stimmen. Es sei denn, du hast noch P1SEL irgendwie deklariert. Aber auf P1 sind ja keine Zusatzfunktionen, wenn ich mich recht erinnere....
0 schaltet die normale Portfunktion ein. 1 wäre die alternative Funktion, aber da wäre ja eh nur der SMCLK irgendwo...
Nochmal blöde Frage: Liege ich in der Annahme falsch, dass ich das Header Board ohne den zusätzlichen Oszillator Q2 lediglich mit dem JTAG-Anschluss in Betrieb nehmen kann?
Ahsoooo...dann is kein Wunder das nicht läuft. Ich nehme an, du hast gar keinen Quarz drauf, oder? Auf dem original TI Header Board fehlen ja beide Quarze. Also der X1 muss mindestens bestückt sein, sonst läuft natürlich nix los. Im Debugging-Mode wird im Einzelschrittbetrieb auch so das Programm abgearbeitet, aber ohne Quarz läufts nicht. Wenn der 32Khz Quarz an XT1 bestückt ist, müsste das Programm auch so anlaufen. Es sei denn, du schaltest den Takt auf den XT2 um, dann is natürlich auch nix...
Da muss aber ein Oszillator-Widerstand angeschlossen sein. Ganz ohne alles gehts nicht. Der DCO macht ja ähnlich einer PLL eine höhere aus einer niedrigeren Frequenz.
Also ein 32,768 kHz Quarz ist auf dem Header Board drauf. Die Anschlüße dafür sind auf der Platine mit Q1 und Q3 bezeichnet. Den Takt schalte ich gar nicht. Sollte ich den vorher irgendwie schalten?
Ohne Widerstand geht's auch :) Mit dem Widerstand kann man die Genauigkeit erhöhen, aber wenn man nicht gerade UART mit der Kiste machen will, geht es auch so. Nach dem "booten" ist ja kein Register gesetzt, d.h. externe Quarze oder der Widerstand sind nicht eingeschaltet. Somit muss man diese Sachen alle erst einstellen. Und das Einstellen kann man natürlich nur erledigen, wenn der µC auch rennt.
Ich betreibe beispielsweise einen MSP430F122 und einen MSP430F2012 ohne externe Quarze und ohne Widerstand. Mit ein wenig einstellerei geht auch der UART beim F122 problemlos (zumidest bei Zimmertemperatur ;) ).
Also müsste der 32,786 Quarz auf dem Header Board reichen, um den MSP430F169 in Betrieb zu nehmen!? Aber trotzdem kann ich keine Spannung am Ausgang erzeugen, wenn ich z.B. P1.0 auf "1" setze. Oder liegt es an meinem Programm? Aber das hatten wir vorher schon mit P1DIR = 0xFF; usw. In den Controller kann ich, wie es zumindest den Anschein hat, die Software laden, wenn ich den FET-Debugger einstelle. Die Versorgungsspannung des Controllers bekomme ich über den JTAG-Anschluss. Ich kann dabei auch 3,3V zwischen AVcc und AVss bzw. zwischen DVcc und DVss messen Das müsste doch dann gehen, oder?
Hiho, nochmal,der MSP läuft auch ohne Quarz. Ohne jegliches Zutun (ausser natuerlich den Watchdog stoppen), läuft der MSP mit dem internen DCO(ca. 800 kHz) los. Poste mal bitte Dein Programm.
Hast du eingestellt: "Leave Target Running?" Da war doch bei der IAR da irgendwo nan Haken zu setzen, oder so nen Button. Ist der Wachhund gestoppt? Der setzt in der Ausgangskonfiguration alle ~32ms den Prozessor zurück.
So sieht mein Testprogram aus: #include<msp430x16x.h>+ void main(void) { WDTCTL=WDTPW+WDTHOLD; P1DIR = 0xFF; P1OUT = 0x00; while(1) { P1OUT = 0xFF; } }
Das Programm sieht gut aus. Mal eine provokante Frage,nicht persönlich nehmen: Bist Du sicher, dass Du an Pin 1.0 die Spannung misst? Wenn der Debugger läuft, kannst Du auch versuchen, im C-Spy über die Anzeige der Register (Port1) die Direction und den Output mal online zu setzen.
Also ich bin mir eigentlich schon sicher, P1.0 entspricht dem Pin 12 des Header Boards von dort messe ich gegen DVcc. Das müsste doch so sein, oder?
Vielleicht ist es nur ein Schreibfehler von dir, aber du musst gegen DVss messen. DVcc ist die Versorgung P1 hast du ja auf high, d.h. Versorgung gesetzt. Somit hast du dann dort eine Spannung von 0V.
Schreibfehler hab ich eigentlich nicht. Hab beim Compilen und Simulieren keine Fehlermeldungen. Vielleicht bin ich echt zu blöd zum messen :( . Das komische ist, ich habe sowohl gegen DVcc als auch gegen DVss gemessen und hab aber immer 0V. Ich müsste doch dann, wenn P1 low ist eine Spannung von 3,3V gegen DVcc und 0V gegen DVss messen und wenn P1 high ist eine Spannung von 3,3V gegen DVss messen und 0V gegen DVcc messen können. Versorgungsspannung ist auf jeden Fall da: 3,3V Ich könnte echt heulen, dachte das wäre ne Sache von 30 Minuten für den ersten Funktionstest und jetzt häng ich schon fast 'ne Woche drüber und nix geht :(
So viele möglichkeiten was falsch zu machen gibt es doch eigentlich überhaupt nicht :) Hast du dir mal die Code Examples von Texas angeschaut? http://www-s.ti.com/sc/techzip/slac015.zip //******************************************************************* // MSP-FET430P140 Demo - Software Toggle P1.0 // // Description: Toggle P1.0 by xor'ing P1.0 inside of a software loop. // ACLK= n/a, MCLK= SMCLK= default DCO ~800k // // MSP430F149 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // | | // | P1.0|-->LED // // M. Buccini // Texas Instruments Inc. // Feb 2005 // Built with IAR Embedded Workbench Version: 3.21A //******************************************************************* #include <msp430x14x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= 0x01; // Set P1.0 to output direction for (;;) { volatile unsigned int i; P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR i = 50000; // Delay do (i--); while (i != 0); } }
Ok, ich probier das mal aus. Noch ne Frage im Debug Log Fenster erhält man Rückmeldungen beim laden des Programs. Die letzte Meldung heißt bei mir dann Target Reset. Heißt das, dass beim laden meines Programms in den Controller dieser direkt wieder geresetet wird, so dass mein Programm schon gar nicht mehr läuft, wenn ich messe?
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.