Hi, bin MSP Neueinsteiger. Habe vorher nur mit Atmel programmiert und war volllll zufrieden. Aber der Strom und die Spannung ..... nun, habe mir bei reichelt ein MSP430FET bestellt mit MPS-430PM64 und 2 Controllern F149. Wollte diese nun mal mit einer LED zum blinken bekommen, aber ..... geht nicht. Habe den internen RC-Oszilator eingeschalten, aber .... Habe leider keine Ahnung was ich verkehrt gemacht haben könnte. Externe Spannung keine, aber brauch ich ja auch nicht!?! Kann mir jemand helfen? oder einen Tipp geben? gruß micha
poste mal was du gemacht hast ;-) hast du dir schon die examples angeschaut? Gruß m@is
hi, ne leider hab ich dies nicht gemacht. Werd ich aber. Hier mal mein Quellcode! //Target 149 device #include <msp430x14x.h> #include <msp430def.h> unsigned char Timer; void clock_init() { //DCO=0x07 DCOCTL=0xE0;//DCO.2,DCO.1,DCO.0 BCSCTL2=0x00; BCSCTL1=0x80;//XT2OFF } void port_init() { P1OUT=0x00; P1DIR=0x01; //Pin 1 ist auf Ausgang der rest ist Eingang P1IES=0x00; P1IE=0x00; P1SEL=0x00; //alle anderen Ports sind auch Initialisiert, hier aber weg gelassen } void timera_init() //Clock source=ACLK //Divider=4 //TIMACLK=8,192KHz //Frequency=99,9Hz ( 10,01mS) { TACTL=0x00; //stop timer //channel0 TACCTL0=0x4110;//TACCM0.0,TACAP0,TACCIE0 TACCR0=0x52; TAR=0x0000;//clear timer counter TACTL=0x196;//TASSEL.0,TAID.1,TAMC.0,1,TAIE } //call this routine to initialise all peripherals void init_devices(void) { //stop errant interrupts until set up DINT(); //disable all interrupts ME1=0X00; //disable sfr peripherals ME2=0X00; IE1=0x00; //disable sfr interrupts IE2=0x00; //watchdog initialisation including nmi function WDTCTL=0x5A00 | 0x80;//HOLD //initialise other peripherals clock_init(); port_init(); timera_init(); ME1=0x00; ME2=0x00; IE1=0x00; IE2=0x00; EINT(); //re-enable interrupts } //interrupt handlers #pragma interrupt_handler timera_0_isr:TIMERA0_VECTOR void timera_0_isr(void) { Timer++; } //main code entry point void main(void) { init_devices(); //insert your functional code here... Timer = 0x00; while(1) { if(Timer = 0x64) //alle 100ms wechsel des Ports { Timer = 0x00; P1OUT |= 0x01; } } } das wars nun, ist eigentlich nicht weiter kompliziert. mit dem builder alles erstellen lassen, deshalb sind die Komentare so. eigentlich wollte ich nur PORT1 benutzen. Pin0 und Pin1. ->Pin1 ist Ausgang der Rest Eingang (Pin1 = Anode, Pin0 = Katode) ->der Pin1 soll immer zwischen High und Low schalten. um zu sehen ob ich schon was bewegt habe. Halt der erste Schritt an einem neuen Controller. Hab leider nur ein Multimeter zum Messen meiner Schantaten. -> ne Spannung messe ich nicht und blinken tut auch nichts. gruß micha
Du schaltest P1.0 alle 100ms ein, wo setzt Du ihn wieder zurück? Warum legst Du den zweiten Anschluß Deiner LED auf einen Port und schaltest ihn nicht gegen Masse? Hab Dir noch das Beispiel LED's von gcc gezippt. Gruß m@is
Danke, hab mein Problem gefunden. Habe einen Denkfehler drin gehabt. Wollte das er automatisch läuft, aber das funzt nicht. Mit dem NoIce Debugger geht die ganze sache, da er ja die Spannung darüber bekommt usw. Habe auch die LED auf der Platine genutzt, d.h. die am PortPin 1.0 gruß micha
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.