Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ADC on Stellaris
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
mstumbra
Имеется плата "EVODBG LM3S9B90" на LM3S9B92 МК'ре.
Пытаюсь поднять АЦП. Столкнулся с тем, что в регистре ADCSSFSTAT поле EMPTY остается 1, даже после получения данных.
Данные в FIFO - появляются, их даже можно получить читая регистр ADC_SSFIFO_R.
Проблема в том, что ф-ия ADCSequenceDataGet()[DriverLib] делает в коде проверку на EMPTY, и соответственно данные не считывает.
Почему в EMPTY не записывается 0 - понять не могу. Надеюсь на вашу помощь.

Код
#include "driverlib\gpio.c"
#include "driverlib\adc.c"
#include "driverlib\sysctl.c"

void main(void)
{
    unsigned long buff[8];
    //
    // Enable GPIO PORT E
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3 | GPIO_PIN_2);
    HWREG(GPIO_PORTE_BASE + GPIO_O_AFSEL) |= GPIO_PIN_3 | GPIO_PIN_2;
    
    //
    // Enable ADC converter;
    // Set ADC Speed.
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC1);  
    SysCtlADCSpeedSet(SYSCTL_ADCSPEED_1MSPS);
    
    //
    // Disable sample sequencers.
    //
    ADCSequenceDisable(ADC1_BASE, 0);
    
    //
    // Configure sample sequencers.
    //    
    ADCSequenceConfigure(ADC1_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);
    
    //
    // Configure steps for ADC1.
    //
    ADCSequenceStepConfigure(ADC1_BASE, 0, 0, ADC_CTL_CH8 | ADC_CTL_END | ADC_CTL_IE);
  
    //
    // Enable sample sequencers.
    //
    ADCSequenceEnable(ADC1_BASE, 0);
    
    //
    // Enable Interrupts.
    //
    ADCIntEnable(ADC1_BASE, 0);
    
    //
    // Trigger ADC.
    //
    ADCProcessorTrigger(ADC1_BASE,0);

    //
    // Wait for interrupt
    //
    while(!ADCIntStatus(ADC1_BASE, 0, false))
    {
    }

    //
    // Get data from FIFO
    //
    ADCSequenceDataGet(ADC1_BASE, 0, &buff); // This function doesn't works, because EMTPY field is 1
    
//    buff = ADC1_SSFIFO0_R;                // Reads Data Direct from FIFO - works
}
mstumbra
Тему можно закрывать, вопрос решен.
Господа, не попадайтесь больше в туже ловушку, что и я:
при просмотре регистров Debugger'ом IAR сам выполняет их чтение. Соответственно после вычитывания IAR'ом, FIFO считался пустым. Если закрыть "view Register" - данные можно получать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.