tiva c series tm4c1294xl

Başlatan berkaycavus, 14 Mart 2015, 20:42:58

berkaycavus

Herkese selamlar tiva c series tm4c1294xl launchpad im var adc uygulaması (işlemcinin içinde bulunan dahili sıcaklık sensöründen veri almak istiyorum ) yapmak istiyorum fakat işlemci while(!ADCIntStatus(ADC0_BASE, 3, false)){} döngüsünde takılıp kalıyor.Keil uvision 5 derleyicisini kullanıyorum . while döngüsünü kaldırdığımda ise  ui32TempValueC değişkeninin ilk değeri dönüyor ve hep aynı değer dönüyor . Bir türlü sıcaklık değerini okuyamıyorum ne terminalden ne de debug işleminde .
Sizce sorun ne olabilir?


#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>

#include "inc/hw_memmap.h"
#include "inc/hw_ints.h"

#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/uart.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/adc.h"
#include "utils/uartstdio.h"
#include "utils/uartstdio.c"

void
InitConsole(void)
{   
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

   
    GPIOPinConfigure(GPIO_PA0_U0RX);
    GPIOPinConfigure(GPIO_PA1_U0TX);
   
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
   
    UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);

    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
    UARTStdioConfig(0, 115200, 16000000);
}


int
main(void)
{
   
    uint32_t pui32ADC0Value;

    uint32_t ui32TempValueC;
    uint32_t ui32TempValueF;

    SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_16MHZ);

    InitConsole();

    UARTprintf("ADC ->\n");
    UARTprintf("  Type: Internal Temperature Sensor\n");
    UARTprintf("  Samples: One\n");
    UARTprintf("  Update Rate: 250ms\n");
    UARTprintf("  Input Pin: Internal temperature sensor\n\n");

   
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
      
    ADCSequenceDisable(ADC0_BASE,3);
      ADCHardwareOversampleConfigure(ADC0_BASE,64);
      ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_TIMER, 1);

   
    ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0);

   
    ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_TS |
                             ADC_CTL_END);

    ADCSequenceEnable(ADC0_BASE, 3);

   
    ADCIntClear(ADC0_BASE, 3);
      IntEnable(INT_ADC0SS3);
    while(1)
    {
       
        ADCProcessorTrigger(ADC0_BASE, 3);

       
        while(!ADCIntStatus(ADC0_BASE, 3, false))
        {
               
        }

       
        ADCIntClear(ADC0_BASE, 3);

       
        ADCSequenceDataGet(ADC0_BASE, 3, &pui32ADC0Value);

       
            ui32TempValueC=147.5 - ((75*(3.3)*pui32ADC0Value) / 4096);
       
        ui32TempValueF = ((ui32TempValueC * 9) + 160) / 5;

       
        UARTprintf("Temperature = %3d*C or %3d*F\r", ui32TempValueC,
                   ui32TempValueF);


       
        SysCtlDelay(100000);
    }
}


berkaycavus

Sorunu buldum arkadaslar bu launchpad te sistem clock u ayarları diğer tiva c series lerden farklıymış .
SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); satırı yerine ,
SysCtlClockFreqSet(SYSCTL_OSC_INT | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_320,16000000); satırı gelmesi gerekiyor.