Solar-utrustning med msp430 (2 / 2 steg)
Steg 2: kodning:
Jag gjorde kodning för detta projekt med koden kompositör studio programvara. Här presenterar jag kodar för msp430g2231.
#include "msp430.h"
#define ADC_CHANNELS 2
unsigned int prover [ADC_CHANNELS];
#define LED1 BIT4
#define LED2 BIT6
#define SENSOR_LEFT BIT0
#define SENSOR_GND BIT2
#define SENSOR_RIGHT BIT1
#define SENSOR_GND1 BIT3
#define RED_LED LED1
#define GRN_LED LED2
void ConfigureAdc(void) {
ADC10CTL1 = INCH_1 | ADC10DIV_0 | CONSEQ_3 | SHS_0;
ADC10CTL0 = SREF_0 | ADC10SHT_2 | MSC | ADC10ON | ADC10IE;
ADC10AE0 = SENSOR_LEFT + SENSOR_RIGHT;
ADC10DTC1 = ADC_CHANNELS;
}
void main(void) {
WDTCTL = WDTPW | WDTHOLD;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
BCSCTL2 & = ~ (DIVS_3);
P1DIR = 0; / * som ingångar * /
P1SEL = 0; / * som digitala I/Os * /
P1OUT = 0; / * Ange motstånd som pull-downs * /
P1REN = 0XFF; / * aktiverar nedrullningsbara motstånd * /
P2DIR = 0; / * som ingångar * /
P2SEL = 0; / * som digitala I/Os * /
P2OUT = 0; / * Ange motstånd som pull-downs * /
P2REN = 0XFF; / * aktiverar nedrullningsbara motstånd * /
P1REN & = ~(LED1 | LED2); / * Inaktivera pull-tabs/nedgångar * /
P1DIR | = (LED1 | LED2); / * Konfigurera som oututs * /
P1REN & = ~(SENSOR_GND | SENSOR_GND1); / * Inaktivera pull-tabs/ned * /
P1OUT & = ~ (SENSOR_GND| SENSOR_GND); / * SENSOR_GND bör vara på GND * /
P1DIR | = (SENSOR_GND | SENSOR_GND1); / * SENSOR_GND måste vara en utgång * /
P1REN | = (SENSOR_LEFT| SENSOR_RIGHT); / * aktiverar pull-up på SENSOR * /
P1IN | = (SENSOR_LEFT| SENSOR_RIGHT); / * set motstånd som pull-up * /
ConfigureAdc();
__enable_interrupt();
samtidigt (1) {
__delay_cycles(1000);
ADC10CTL0 & = ~ ENC;
samtidigt (ADC10CTL1 & upptagen);
ADC10SA = (unsigned int) prover.
ADC10CTL0 | = ENC + ADC10SC;
__bis_SR_register (CPUOFF + GIE);
om (prover [0] < samples[1]) {
P1OUT | = RED_LED;
P1OUT & = ~ (GRN_LED);
} else om (prover [0] == samples[1]) {
P1OUT & = ~ (RED_LED);
P1OUT & = ~ (GRN_LED);
} annat {
P1OUT | = GRN_LED;
P1OUT & = ~ (RED_LED);
}
}
}
#pragma vektor = ADC10_VECTOR
__interrupt void ADC10_ISR (void) {
__bic_SR_register_on_exit(CPUOFF);
}
Tack för att titta på