реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ADC on Stellaris
mstumbra
сообщение Apr 14 2010, 22:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 14-04-10
Пользователь №: 56 652



Имеется плата "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
}
Go to the top of the page
 
+Quote Post
mstumbra
сообщение Apr 15 2010, 14:05
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 14-04-10
Пользователь №: 56 652



Тему можно закрывать, вопрос решен.
Господа, не попадайтесь больше в туже ловушку, что и я:
при просмотре регистров Debugger'ом IAR сам выполняет их чтение. Соответственно после вычитывания IAR'ом, FIFO считался пустым. Если закрыть "view Register" - данные можно получать.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016