|
ADC AT91SAM7S256, Вопросы |
|
|
|
Aug 29 2012, 17:54
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Запускаю АЦП  . Сделал программный старт с программным ожиданием конца завершения. Работает  . Пытаюсь сделать то же самое, но с прерыванием от АЦП - глухо  , прерывания нету. Может где-то с инициализацией намутил, не знаю. CODE //------------------------------------------------------------------------------ /// Interrupt handler for the ADC. Signals that the conversion is finished by /// setting a flag variable. //------------------------------------------------------------------------------ void ADCC0_IrqHandler(void) { dword status; // SR reg status = ADC_GetStatus(AT91C_BASE_ADC);
// Switch LED LED_Toggle(0); if (ADC_IsChannelInterruptStatusSet(status, ADC_CHANNEL)) { conversionDone = 1; } // if } // ADCC0_IrqHandler
//------------------------------------------------------------------------------ /// Configure the ADC //------------------------------------------------------------------------------ void ConfigureAdc(void) { dword shtim, startup, prescal, trgSel; dword intMode; AT91C_BASE_PMC->PMC_PCER = (1UL << AT91C_ID_ADC); // разрешить тактовую для ADC AT91C_BASE_ADC->ADC_CR = AT91C_ADC_SWRST; // reset ADC
// TRGSEL==0 - запуск по нарастанию TIOA0 (TC0) // TRGEN==1 - разрешить hw triggers // LOWRES==1 - 8-бит режим // SLEEP==0 - Normal mode // SHTIM==2 - Tracking time = (SHTIM + 1) / ADCclock = 3/48MHz=0.0625mks // PRESCAL==2 - ADCclock = MCK / [(PRESCAL + 1)*2] = 48MHz/((2+1)*2) = 48/6=8MHz // STARTUP==0x0F - Startup Time = [(STARTUP + 1)*8] / ADCclock = ((15+1)*8)/48MHz = 16*8/48=2.67 mks shtim=2; startup=0x0F; prescal=0x02; trgSel=0; ADC_CfgModeReg (AT91C_BASE_ADC, (shtim << 24) | (startup << 16) | (prescal << 8) | (AT91C_ADC_SLEEP_NORMAL_MODE << 5) | (AT91C_ADC_LOWRES_10_BIT <<4) | (trgSel << 1) | AT91C_ADC_TRGEN_DIS); // Включить канал 7 // set ADC_CHER ADC_EnableChannel ( AT91C_BASE_ADC, ADC_CHANNEL ); // Разрешить прерывание в самом ADC // set ADC_IER ADC_EnableIt(AT91C_BASE_ADC, 1<<ADC_CHANNEL);
// Установка прерывания // intMode -> AIC_SMR - intMode=AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL; IRQ_ConfigureIT(AT91C_ID_ADC, intMode, ADCC0_IrqHandler); // Set AIC_IECR IRQ_EnableIT(AT91C_ID_ADC); } // ConfigureAdc
В прерывании переключается светодиодик. Но он молчит. Хотя в других местах он срабатывает. Подскажите кто может. Полный проект под ИАР прикладываю. Спасибо.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
 |
Ответов
|
Aug 30 2012, 18:42
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
RabidRabbit, да, похоже, виновата была та ошибка в расчётах. Зеванул я  Поменял, пошло. Инициализация, хоть ручками, хоть через иаровские функции - всё равно. Они делают то же самое  . Теперь возьмусь за автозапуск по таймеру  . PS. Может кто скажет - SAMBA правда всего 100 раз работает?
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Aug 31 2012, 05:30
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(hd44780 @ Aug 30 2012, 22:42)  PS. Может кто скажет - SAMBA правда всего 100 раз работает? Откуда дровишки? GPNVM - давно уже исправили количество циклов перезаписи и Sam-ba то тут причем?
|
|
|
|
|
Aug 31 2012, 07:59
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(DmitryM @ Aug 31 2012, 08:30)  Откуда дровишки? GPNVM - давно уже исправили количество циклов перезаписи и Sam-ba то тут причем? Дровишки фирмовые, с сайта атмел. Те, что идут в комплекте с прогой самбы. Проблем (тьфу-тьфу) с ними у меня пока не наблюдалось GPNVM биты меня на текущем этапе совершенно не волнуют, но я тут не раз читал (например - http://electronix.ru/forum/index.php?showtopic=81665 ), что самба переписывается во флэш всего 100 раз. Я перепрошил её уже наверное раз 30 (точно не считал). По ходу ещё вопрос - прога самбы всё время спрашивает про lock/unlock сектора 0. Что будет, если ему lock не сделать, как она предлагает? Сам ещё не пытался, т.к. у меня ещё по основным вещам некоторая кашица в голове  . JTAG вигглера пока валяется недоделанный в ящике, необходимости во внутрисхемной отладке пока не ощутил  . Поэтому по ходу и спросил. Загрузкой в RAM пока не баловался, не знаю, пойдёт-не пойдёт. Может они уже этти баги и исправили, но микросхема у меня древняя, ревизия А, 2006 года выпуска. Просто 6 лет в коробке провалялась  . Забыл я о ней .... По основной теме. Цитата(RabidRabbit @ Aug 31 2012, 09:21)  Работает отлично, ещё можно DMA зацепить, настраивается очень просто. Вот функции для настройки лично мне изучать лень, ведь даташит всё равно читать  Пример у меня есть - какая-то осциллографическая приставка на USB, там по таймеру старт идёт и программный опрос конца преобразования. DMA, т.е. PDC я ещё не изучал, но мне наверное не понадобится. Вообще моя цель - стерео FFT анализатор (может ещё осциллограмму некую рисовать) для звука. Т.е. мне надо будет цифровать по очереди два канала АЦП - таймер где-то на 22-24 кГц уже получился  . А умеет ли PDC сам переключать ему каналы я пока не знаю. 2 канала разом цифровать вроде нельзя - АЦП то один ... Пока планирую по таймеру запускать преобразование, в прерывании выгребать результат в буфер и перещёлкивать канал. Если можно решить это получше, буд рад любым советам. Дисплей графический есть. Я с ним на авре уже вроде освоился. Спасибо.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Aug 31 2012, 09:28
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(hd44780 @ Aug 31 2012, 11:59)  GPNVM биты меня на текущем этапе совершенно не волнуют Ограничение в 100 циклов перезаписи касалось только GPNVM, Lock-bits and Security. К Sam-ba отношения не имеют, но сами понимаете, если Sam-ba не сможет снять Lock с флэш, то и записать не сможет. В новых кристалах это уже исправлено, в Вашем нужно смотреть errata. Цитата По ходу ещё вопрос - прога самбы всё время спрашивает про lock/unlock сектора 0. Что будет, если ему lock не сделать, как она предлагает? Да не закрывайте флеш, если Вам не надо, это ж биты защиты от перезаписи.
|
|
|
|
|
Aug 31 2012, 09:49
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(DmitryM @ Aug 31 2012, 12:28)  Ограничение в 100 циклов перезаписи касалось только GPNVM, Lock-bits and Security. К Sam-ba отношения не имеют, но сами понимаете, если Sam-ba не сможет снять Lock с флэш, то и записать не сможет. В новых кристалах это уже исправлено, в Вашем нужно смотреть errata. Понял, спасибо. В моём полный комплект этих глюков Цитата(DmitryM @ Aug 31 2012, 12:28)  Да не закрывайте флеш, если Вам не надо, это ж биты защиты от перезаписи. Ясно. Сегодня вечером попробую не лочить его. Вообще радует, что меня эти 100 раз вроде не касаются  .
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
Сообщений в этой теме
hd44780 ADC AT91SAM7S256 Aug 29 2012, 17:54 Genadi Zawidowski Вот тут лежит проект (на который я уже раз сто пок... Aug 29 2012, 18:02 RabidRabbit По поводу
AT91C_BASE_PMC->PMC_PCER = (1UL <... Aug 30 2012, 06:42      hd44780 Цитата(DmitryM @ Sep 1 2012, 10:56) Ну ка... Sep 1 2012, 19:05   RabidRabbit Цитата(hd44780 @ Aug 31 2012, 11:59) Вооб... Aug 31 2012, 10:49    hd44780 Цитата(RabidRabbit @ Aug 31 2012, 13:49) ... Aug 31 2012, 14:31     RabidRabbit Цитата(hd44780 @ Aug 31 2012, 18:31) АЦП ... Sep 1 2012, 16:46 RabidRabbit Цитата(hd44780 @ Aug 30 2012, 22:42) Тепе... Aug 31 2012, 06:21
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|