www.mikrocontroller.net

Forum: Compiler & IDEs Probleme mit RC-Oscilator


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: m@is (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poste mal was du gemacht hast ;-)

hast du dir schon die examples angeschaut?

Gruß m@is

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: m@is (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei

if(Timer = 0x64)

soll wohl ein == statt = stehen.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
je genau, sorry.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.