roboforum.ru

Технический форум по робототехнике.

LPC1111... Вопросы.

Re: LPC1111... как использовать ноги PIO1_3 и PIO0_10?

Michael_K » 12 дек 2010, 21:28

итого:
пусть зряплата инженера 45 тыр. в месяце 22 рабочих дня по 8 часов.
значит час стоит 250 руб.

Потерял два часа, на ровном месте. проблему не решил.
Минус 500 рублей по времени.
Да еще и плату переделывать.

Такая вот арифметика.

Re: LPC1111... как использовать ноги PIO1_3 и PIO0_10?

=DeaD= » 12 дек 2010, 21:30

Да еще учесть налоги, амортизацию раб. места, отпускные - получится не 45тр в месяц, а все 65-75тр легко.

Re: LPC1111... как использовать ноги PIO1_3 и PIO0_10?

Сергей » 12 дек 2010, 21:31

ну знаешь, по моему в этом и заключается профессия инженера :) Иначе было бы совсем просто

Re: LPC1111... как использовать ноги PIO1_3 и PIO0_10?

Michael_K » 12 дек 2010, 21:31

=DeaD= писал(а):Да еще учесть налоги, амортизацию раб. места, отпускные - получится не 45тр в месяц, а все 65-75тр легко.

угу - ну это я для ровного счета :)

Re: LPC1111... как использовать ноги PIO1_3 и PIO0_10?

Сергей » 12 дек 2010, 21:32

Я помню допустил ошибку в дескрипторе USB устройства, но все работало нормально до одного момента. Неделю разбирался.

Re: LPC1111... как использовать ноги PIO1_3 и PIO0_10?

Michael_K » 12 дек 2010, 21:32

Это я к тому, что некоторые тут хотят купить "на копейку пятаков"

Re: LPC1111... Хардварный запуск АЦП

Michael_K » 16 дек 2010, 01:03

Бьюсь об новые грабли...

По даташиту АЦП в LPC1111 может запускаться автоматом от таймера.
Таймер работает правильно (сигнал CT16B0_MAT0 вижу на ноге)
АЦП постоянно вызывает прерывания - то есть только закончилось предыдущее, сразу опять влетает в тот же обработчик. По идее, как я понимаю, бит прерывания должен сниматься при чтении регистра STAT. Не работает.
(Для отладки вывел на ногу многострадального светодиода и тыркаю осциллом).

Код инициализации и хэндлера:

Код: Выделить всёРазвернуть
void ADCInit( void )
{
 
// Enable ADC

   LPC_SYSCON->PDRUNCFG &= ~(0x1<<4);   // Disable Power down bit to the ADC block.
   LPC_SYSCON->SYSAHBCLKCTRL |= (1<<13);   // Enable AHB clock to the ADC. */

//  ADC I/O config

   LPC_IOCON->R_PIO1_1  &= ~0x8F;   
   LPC_IOCON->R_PIO1_1  |= 0x02;   // ADC IN2 - SIGNAL INPUT

// ADC config

   LPC_ADC->CR = ( 0x04 << 0 ) |   // SEL=1,select channel 2 on ADC0 (SIGNAL)
   ( ( 11 - 1 ) << 8 ) |         // CLKDIV = Fpclk / 1000000 - 1
   ( 0 << 16 ) |               // BURST = 0, no BURST, hardware controlled
   ( 0 << 17 ) |               // CLKS = 0, 11 clocks/10 bits
//   ( 1 << 21 ) |               // PDN = 1, normal operation
//   ( 0 << 22 ) |               // TEST1:0 = 00
   ( 6 << 24 ) |               // START = 6 A/D conversion start on CT16B0_MAT0
   ( 1 << 27 );               // EDGE = 1 (CAP/MAT singal rising,trigger A/D conversion)

// Config Interrupt

   NVIC_EnableIRQ(ADC_IRQn);
   LPC_ADC->INTEN = 0x100;      // Enable general interrupt

   return;
}

#define LED_RED()   { LPC_GPIO1->MASKED_ACCESS[0x0110] = 0x0100; }
#define LED_OFF()   { LPC_GPIO1->MASKED_ACCESS[0x0110] = 0x0000; }

void ADC_IRQHandler (void)
{
volatile unsigned int temp;

   temp = LPC_ADC->STAT;               // Read ADC will clear the interrupt
   temp = ( LPC_ADC->DR[2] >> 6 ) & 0x3FF;   // Read ADC value

   LED_RED();
   for(temp=2;temp>0;temp--);
   LED_OFF();

   return;
}


Добавлено спустя 1 минуту 2 секунды:
Re: LPC1111... Вопросы.
Если что, использую Кейл

Добавлено спустя 16 минут 38 секунд:
Re: LPC1111... Вопросы.
Вопрос снят.
Нужно разрешать (оказывается) не глобальное прерывание от АЦП, а прерывание от нужного канала... Дока отвратительная.

Re: LPC1111... Вопросы.

Сергей » 16 дек 2010, 03:12

Доки ужасные, все на скорую руку. По LPC2000 и LPC1700 были намного лучше.

Re: LPC1111... Вопросы.

Виталий » 16 дек 2010, 03:35

Вот мне всегда было интересно. Они же тестируют свои девайсы, значит должны быть тесты, а значит и коды. Почему бы их не выкладывать?

Re: LPC1111... Вопросы.

Сергей » 16 дек 2010, 09:13

Да они и не запаривались вообще, к примеру по целому регистру для каждой ножки микроконтроллера + перемешаны в порядке и не подряд в адресном пространстве.

Re: LPC1111... Вопросы.

Michael_K » 16 дек 2010, 13:31

Будете смеяться, но порядок там все же есть.
Они расположены в порядке нумерации ног на корпусе...

P.S.
Меня телевизор филипс до сих пор в тупик ставит своей "юзабилити"...

Re: LPC1111... Вопросы.

Сергей » 16 дек 2010, 14:32

Смеюсь :) Только вот API не прикрутить нормальное к IOCON.

Re: LPC1111... Вопросы.

Michael_K » 16 дек 2010, 16:27

Ну, честно говоря, API меня волнует в последнюю очередь,
(имхо, нафиг оно не упало в реальных проектах), но неудобно, согласен.
Еще и ноги названы в хеадерах фиг знает как...

Да даже не это напрягает - не работает же по даташиту, сволочь!!!

Re: LPC1111... Вопросы.

Сергей » 16 дек 2010, 16:35

Насчет API конечно он не является приоритетным. Но, к примеру, периферия у LPC2000 и LPC1700 совпадает полностью и ничего переделывать не надо было, я просто код перекинул и все заработало. А здесь же (только с LPC1343) надо было писать заново и разбираться почему не работает.

Re: LPC1111... оверклокинг :)

Michael_K » 30 янв 2011, 02:53

Поигрался тут немножко - случайно завел проц на 108 МГц (глюканул в битиках PLL).
А он взял и заработал... как минимум ядро, память, таймеры, ноги (АЦП и запись во флэш не проверял).
Спокойно лежит вот и работает минут двадцать уже... не греется, не зависает, такты не теряет...


Rambler\'s Top100 Mail.ru counter