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