Gast
#2611452
Dieser Code arbeitet als Zufallszahlengenerator. Aber warum? Am Eingang
des ADC16 (Pin 3 bzw. P1.1 über A4+) liegt eine konstante Spannung von
300 mV an.
#include <msp430x20x3.h>
static unsigned int s;
unsigned int i;
unsigned int ptime = 1; // pulse time
unsigned int btime = 10; // break (pause) time
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer to prevent time out
reset
//clock (DCO) einstellen
BCSCTL1 = CALBC1_16MHZ;
DCOCTL=CALDCO_16MHZ;
//SMCLK ausgeben an Pin6 (P1.4) - nur zu Testzwecken
P1DIR |= 0x10; //P1.4 als output
P1SEL = 0x10; //P1.4 an SMCLK
P1DIR |= 0x01; //set P1.0 to output direction - zur Nutzung der LED an
P1.0
//den AD-Wanlder vorbereiten
SD16CTL = SD16REFON + SD16SSEL_1 + SD16DIV_0; // VREF=1.2V,
Clock=SMCLK, Clock-Divider=1
P1SEL |= BIT3; //interne Referenzspannung an P1.3 (Pin5) ausgeben
SD16INCTL0 = SD16INCH_4 + SD16GAIN_1; //Verwendung von Eingang A4
(P1.1=A4+, P1.2=A4-), keine Verstärkung
SD16AE = SD16AE1; //negative inputs are internally connected to Vss
(GND); P1.1 an A4+
SD16CCTL0 = SD16IE + SD16SNGL; // Interrupt + Single Conversion +
bipolarer Input
_BIS_SR(GIE); //globale Interruptfreigabe
SD16CCTL0 |= SD16SC; //set bit to start conversion; Rücksetzen dieses
Bits erfolgt automatisch
//Endlosschleife, damit der Takt läuft
while(1)
{
};
}
#pragma vector = SD16_VECTOR // Interrupt service routine for
__interrupt void SD16ISR(void) // conversion
{
P1OUT ^= 0x01; // LED toggeln
//for (i = 0; i < 65000; i++);
s = SD16MEM0;
SD16CCTL0 |= SD16SC; //set bit to start conversion; Rücksetzen dieses
Bits erfolgt automatisch
}

