Vous êtes sur la page 1sur 2

#define _TM4C123GH6PM_H_

#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>
#include "inc/hw_memmap.h"
#include "inc/hw_ints.h"
#include "inc/hw_types.h"
#include "inc/tm4c123gh6pm.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/timer.h"
#include "driverlib/interrupt.h"
#include "driverlib/adc.h"
#include "driverlib/debug.h"
#include "driverlib/pin_map.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "utils/uartstdio.c"
#include <string.h>

//-----Variables---------/

uint32_t sample[8];
int MX;
int MY;
int MZ;

volatile uint8_t Status;


volatile uint8_t EJEX;
volatile uint8_t EJEY;
volatile uint8_t EJEZ;

void ADC (void);


void config (void);
void InitConsole(void);

//------metodos-----------/

void config (void){


SysCtlClockSet(SYSCTL_XTAL_16MHZ|SYSCTL_SYSDIV_2_5);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
}

void ADC (void){


SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
//Habilita modulo ADC
GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_1);
//Se configura como tipo ADC
ADCSequenceConfigure(ADC0_BASE, 0 , ADC_TRIGGER_PROCESSOR, 0);
//disparo y secueciador
ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH0);
//ADC, Secuenciador, Step,Se escribe para cada posicion del vector,ultima posicion
(canal)
ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_CH1);
ADCSequenceStepConfigure(ADC0_BASE, 0, 2, ADC_CTL_CH2|ADC_CTL_IE|ADC_CTL_END);
//ADC_CTL_IE interrupcion, ADC_CTL_END bandera
ADCSequenceEnable(ADC0_BASE, 0);
}
void InitConsole(void){
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); //Habilita el PUERTO
A
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1); //Habilita UART0
GPIOPinConfigure(GPIO_PC4_U1RX); //configura los
pines del UART0
GPIOPinConfigure(GPIO_PC5_U1TX);
UARTClockSourceSet(UART1_BASE, UART_CLOCK_PIOSC); //se configura el
reloj interno
GPIOPinTypeUART(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5); //configura pines
tipo UART
UARTStdioConfig(1, 38400, 16000000); //Puerto, Baudrate,
Reloj
}

int main(void){
InitConsole();
config ();
ADC ();
while(1){
ADCIntClear(ADC0_BASE, 0); //limpiar int
ultimo numero secuenciador
ADCProcessorTrigger(ADC0_BASE, 0); //disparo de
procesador(lo pone en ejecucion),ultimo numero secuenciador
while(!ADCIntStatus(ADC0_BASE, 0, false)){ }
ADCSequenceDataGet(ADC0_BASE, 0, sample); //numero centro
secuenciador

//------Se reciben los datos del secuenciador-----/


//Se convierte a numeros de 8bits
MX = sample[1];
EJEX=MX>>4;
MY=sample[0];
EJEY=MY>>4;
MZ=sample[2];
EJEZ=MZ>>4;
UARTprintf("%3d\n", EJEX,EJEZ);
SysCtlDelay(80000000 /50); //se puede cambiar para que envie datos mas
rapido(~200)
}
}

Vous aimerez peut-être aussi