Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Texas Instruments => Konuyu başlatan: swearer - 02 Aralık 2015, 17:19:26

Başlık: Tiva C Launchpad ADC Sorunum Yardım
Gönderen: swearer - 02 Aralık 2015, 17:19:26
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ints.h"
#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h" 

bool isAdcReadOk=false;
uint32_t voltage;

void Int_Adc(void)
{
   uint32_t pot[1];
   
   ADCIntClear(ADC0_BASE,3);
   ADCSequenceDataGet(ADC0_BASE,3, pot);
   
   voltage=(pot[0]*0.8);
   
   isAdcReadOk=true;
}

int main(void){
   
   SysCtlClockSet(SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ | SYSCTL_SYSDIV_5);
   
   SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0 /*|SYSCTL_PERIPH_GPIOF*/);
   
  //GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 |GPIO_PIN_2 |GPIO_PIN_3);
   //GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1 |GPIO_PIN_2 |GPIO_PIN_3, GPIO_STRENGTH_12MA, GPIO_PIN_TYPE_STD);
   
   //GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);
   //GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_3, GPIO_STRENGTH_12MA, GPIO_PIN_TYPE_ANALOG);   
   
   ADCHardwareOversampleConfigure(ADC0_BASE, 64);
   
   ADCSequenceDisable(ADC0_BASE,3);
   ADCSequenceConfigure(ADC0_BASE,3,ADC_TRIGGER_PROCESSOR,0);
   ADCSequenceStepConfigure(ADC0_BASE,3,0,ADC_CTL_CH0| ADC_CTL_IE | ADC_CTL_END);
   ADCSequenceEnable(ADC0_BASE,3);
   
   ADCIntEnable(ADC0_BASE,3);
   ADCIntRegister(ADC0_BASE,3, Int_Adc);
   
   IntEnable(INT_ADC0SS3);
   
   while(1)
   {
      ADCProcessorTrigger(ADC0_BASE,3);   
      isAdcReadOk=false;
      while(!isAdcReadOk)
    {
      }
   
    //if(voltage<=1024)   {GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_PIN_1); }
     //else if(1024<voltage<=2048)   {GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,GPIO_PIN_2); }
      //else if(2048<voltage<=4096) {GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_PIN_3); }
         
         
   }
      
}

Yapmak istediğim: 3.3V'u kesme kullanarak pot ile okuyup 0-3300 arası değerler elde etmek. Bu değerlere göre de board üzerindeki R,G veya B ledleri yakmak.
Çalışan kısım: 0-3300 arası değer okumak.
Sıkıntılı kısım: okuduğum bu değere göre belirlediğim aralıkta istediğim ledleri yakamıyorum. pin tanımlamalarında sıkıntı var ama nerede olduğunu çözemedim. hatalarım nerelerde ?

@saucompeng yardımcı olabilir misiniz ?
Başlık: Ynt: Tiva C Launchpad ADC Sorunum Yardım
Gönderen: saucompeng - 03 Aralık 2015, 13:19:16
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ints.h"
#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h" 

bool isAdcReadOk=false;
uint32_t voltage;

void Int_Adc(void)
{
   uint32_t pot[1];
   
   ADCIntClear(ADC0_BASE,3);
   ADCSequenceDataGet(ADC0_BASE,3, pot);
   
   voltage=(pot[0]*0.8);
   
   isAdcReadOk=true;
}

int main(void){
   
   SysCtlClockSet(SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ | SYSCTL_SYSDIV_5);
   
  //GPIO
   SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
   GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 |GPIO_PIN_2 |GPIO_PIN_3);
   GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1 |GPIO_PIN_2 |GPIO_PIN_3, GPIO_STRENGTH_12MA, GPIO_PIN_TYPE_STD);

  //ADC
  SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
   ADCHardwareOversampleConfigure(ADC0_BASE, 64);
   ADCSequenceDisable(ADC0_BASE,3);
   ADCSequenceConfigure(ADC0_BASE,3,ADC_TRIGGER_PROCESSOR,0);
   ADCSequenceStepConfigure(ADC0_BASE,3,0,ADC_CTL_CH0| ADC_CTL_IE | ADC_CTL_END);
   ADCSequenceEnable(ADC0_BASE,3);
   ADCIntEnable(ADC0_BASE,3);
   ADCIntRegister(ADC0_BASE,3, Int_Adc);
   IntEnable(INT_ADC0SS3);
   
   while(1)
   {
ADCProcessorTrigger(ADC0_BASE,3);   
isAdcReadOk=false;
while(!isAdcReadOk);

   
if(voltage<=1024)   
{
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_PIN_1);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,!GPIO_PIN_2);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,!GPIO_PIN_3);
}
else if(1024<voltage<=2048)
{
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,!GPIO_PIN_1);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,GPIO_PIN_2);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,!GPIO_PIN_3);
}
        else if(2048<voltage<=4096)
{
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,!GPIO_PIN_1);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,!GPIO_PIN_2);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_PIN_3);
}     
   }   
}
Başlık: Ynt: Tiva C Launchpad ADC Sorunum Yardım
Gönderen: swearer - 03 Aralık 2015, 13:35:33
çok teşekkürler