

Oleg_IT
Свой-
Content Count
936 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Everything posted by Oleg_IT
-
Просьба помочь в выборе процессора. Основные требования: два канала АЦП (от 10 бит), частота оцифровки на оба канала не менее 100 кГц, Изернет, и главное требование, как можно меньше габариты. Всё что нахожу слишком большое, от 100 ног.
-
Так как Вы описали инициализацию работает, но выигрыш во времени не впечатлил, Atmega48, 10МГц, с запуском АЦП в обработчике внешнего прерывания от начала входного импульса на INT0 до начала прерывания АЦП 66,8 мкс, а тоже время с автоматическим запуском составляет 46,4 мкс. По поводу |= или =. В данном случае это эквивалентно, т.к. регистры по умолчанию равны 0. Но |= всё таки правильнее, это нужно, что бы не повреждать те биты которые нужны для других целей.
-
Есть такой код #include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> //#include "PortDefine.h" #include "avrlibdefs.h" #include "avrlibtypes.h" //#define USE_INT0 union { uint16_t ADC_Data; uint8_t ADC_Bute[2]; } Data; #ifdef USE_INT0 ISR (INT0_vect) { ADCSRA |= (1 << ADSC); } #endif // USE_INT0 ISR (ADC_vect) { PORTD |= 1; Data.ADC_Data = (unsigned short)inb(ADCL) | (unsigned short)(inb(ADCH) << 8); PORTD &=~ 1; } int main( void ) { // ADC ADMUX |= (1 << REFS0) | (1 << MUX0) | (1 << MUX2); // ADC5, AVCC ADCSRA |= (1 << ADEN) | (1 << ADATE) | (1 << ADIE); ADCSRB |= (1 << ADTS1); DDRC = 0; PORTC = 0; #ifdef USE_INT0 EICRA |= (1 << ISC01) | (1 << ISC00); EIMSK |= (1 << INT0); #endif // USE_INT0 DDRD = 0x03; PORTD = 4; sei(); ADCSRA |= (1 << ADSC); while (1) { PORTD ^= 2; } return 0; } По идеи он должен запускать оцифровку по внешнему сигналу, но этого не происходит. Если я открываю строку //#define USE_INT0 всё работает правильно, но при этом теряется время. Строку инициализации EICRA убирал из под ифа, не помогает. Может я чего в инициализации упускаю.
-
Работа с платой csr8670
Oleg_IT posted a topic in Rf & Microwave Design
Кто работал с платой csr8670 помогите, пока жду лицензию хочется начать уже работать, время поджимает. Не могу найти драйвер для конвертера USB<->SPI для Windows 7, есть только Winows 8. Среда разработки под этот чип BlueLabPro-2.71.exe? Установщик требует Cygwin, он обязателен, с Cygwin64 тоже будет работать? -
LPC2478. Работает один канал с синхронизацией по таймеру через MAT0.1. Сейчас возникла необходимость подключить ещё два канала АЦП. По мануалу получается, что это, оцифровка n каналов, возможно при аппаратном сканировании, но тогда синхронизация по таймеру не доступна. Возможно осуществить последовательное оцифровывание n каналов с синхронизацией по таймеру и как это сделать?
-
Вопрос с адаптацией программатора AS3M решен на компьютере с Windows XP. После установки драйвера версии 5.29, программа CP210xSetIDs корректно распознала программатор, и значение PID было успешно изменено на 0xEA60. После этих действий программатор заработал на Windows 7. Проблема была в том, что я пропустил важную рекомендацию "...тогда можно запустить Windows через кнопку F8 и выбрать режим ”Disable Driver Signing” mode..."
-
Микросхемы USB card reader.
Oleg_IT replied to Oleg_IT's topic in Микросхемы
Спасибо. Да, что значит правильно задать вопрос, без chip не ищет. -
Микросхемы USB card reader.
Oleg_IT posted a topic in Микросхемы
Подскажите какие фирмы производят микросхемы USB card reader? -
Спасибо за подробный ответ. Я специально поднимаю тему именно здесь, может у кого будут такие же проблемы. Хотелось бы ещё уточнить, почему не ставится драйвер по инструкции ASISP_drivers_installation_win7_32-bit_64-bit.pdf. Как я писал в предыдущем своём сообщении окна с выбором файла slabvcp.inf, страница 2 инструкции, нет. Автоматически при первом включении система нужный драйвер не находит, компьютер подключён к интернету.
-
для инсталяции драйвера предлогается выбрать файл slabvcp.inf в директории Silabs_win_XP_win7, но такого диалога у меня нет, негде выбирать, есть только выбор директории, сам файл в этой директории есть.
-
Список всегда был пуст В Win XP драйвера ставились сразу и программатор работал без сбоев.
-
Усилители с цифровым управлением
Oleg_IT posted a topic in Микросхемы
Помогите найти усилители с цифровым управлением, по I2S, SPI, ... -
Так я так и делал, в программе CP210xSetIDs которая меняет PID список пустой, ни какие апдейты не помогают.
-
Перешёл Windows XP на Windows 7 64 бит. Программатор AS3M, пытаюсь поставить для него драйвер, со странички http://www.as-kit.com/AS-tools.soft/asisp_soft.html запускал всё что там есть, Windows упорно не видит драйверов, есть только неопознанное устройство "Ar...". В программе CP210xSetIDs список пустой. Как всё-таки поставить драйвер?
-
Это фактически и есть прекращение производства, они технологию не выкидывают, а убирают в дальний угол склада и что бы её там найти и достать нужны большие затраты.
-
Можно примерно сказать через сколько лет выпуска "какой то момент времени" может наступить?
-
У Ti не могу найти информацию о сроках окончания выпуска продукции, например OMAP-L138 вышел достаточно давно, стоит ли его закладывать в новые разработки?
-
Делаю для нулевого таймера (всё беру из примеров) T0IR = 1; VICVectAddr = 0; Или ещё что-то нужно? Обнулял конкретный номер прерывания VICVectAddrX = 0;, прерывание возникает только один раз. __irq void Timer0 (void) { T0IR = 1; T0EMR |= (1 << 1); // MAT0.1 P1[29] // VICVectAddr4 = 0; VICVectAddr = 0; } Примерчик бы рабочий
-
Не нужны они мне. Почти весь код беру из примеров, наверное пока не до конца со всем разобрался. Вот потому и прошу правильные примеры.
-
Может получится с примером? Спасибо, снять уровень получилось. У меня какая-то общая проблема с прерываниями, включил прерывание от нулевого таймера и они всё забивают.
-
Нужно набрать отсчеты АЦП в буфер и передать их по изернет. С изернет всё нормально, а когда включаю АЦП прерывания от него забивают всё и не дают выполняться основному циклу, передача по изернет соответственно встаёт. И ни какой синхронизации АЦП и таймера нет. Инициализирую таймеры Для изернета, взято из примера T1MCR = (3 << 0); T1MR0 = TCNT - 1; T1TCR = 1; Для АЦП PINSEL3 |= (3 << 26); T0MCR = (1 << 4); // MR1: Reset T0MR1 = 0x00100000; T0EMR = (1 << 1) | // MAT0.1 P1[29] (3 << 6); // T0TCR = 1; На выходе P1.29 имею меандр, частота управляется (T0MR1). Инициализирую АЦП, взято из примера PCONP |= (1 << 12); AD0CR = ( 0x01 << 0 ) | /* SEL=1,select channel 0~7 on ADC0 */ ( ( Fpclk / ADC_Clk - 1 ) << 8 ) | /* CLKDIV = Fpclk / 4000000 - 1 */ ( 1 << 16 ) | /* BURST = 1, BURST */ ( 0 << 17 ) | /* CLKS = 0, 11 clocks/10 bits */ ( 1 << 21 ) | /* PDN = 1, normal operation */ ( 0 << 22 ) | /* TEST1:0 = 00 */ ( 4 << 24 ) | /* MAT0.1 */ ( 1 << 27 ); /* EDGE = 1 */ /* If POLLING, no need to do the following */ AD0INTEN = 0x1FF; /* Enable interrupts */ install_irq( ADC0_INT, (void *)ADC0, HIGHEST_PRIORITY ); Процедура прерывания АЦП, взято из примера __irq void ADC0 (void) { IENABLE; /* handles nested interrupt */ val = AD0DR0; // Read A/D Data Register SendBuff[NumSBuff][cnt] = ((val >> 5) & 0x3FF); // Extract AD00 Value cnt++; if (cnt == SENDLEN) { cnt = 0; BuffFull = 1; NumSBuff ^= 1; } IDISABLE; VICVectAddr = 0; } С АЦП данные идут правильные, проверил в отладчике. BURST и нулём и единицей делал, запрещал MAT0.1 выходить наружу (PINSEL3 &=~ (3 << 26); ). Ни чего не помогает. Прерываний или вообще нет или они всё забивают. Дайте пример правильной инициализации АЦП и таймера. Ещё одно. Таймер для АЦП программирую для инверсии выхода T0EMR = (3 << 6);, следовательно, частота таймера должна быть в два раза больше необходимой частоты отсчёта, т.к. запуск АЦП программируется только на спад или фронт. А как программно изменить состояние MATx.x не знаю?
-
LPC2478. Запуск АЦП по таймеру.
Oleg_IT posted a topic in ARM, 32bit
Нужно набрать отсчеты АЦП в буфер и передать их по изернет. С изернет всё нормально, а когда включаю АЦП прерывания от него забивают всё и не дают выполняться основному циклу, передача по изернет соответственно встаёт. И ни какой синхронизации АЦП и таймера нет. Инициализирую таймеры Для изернета, взято из примера T1MCR = (3 << 0); T1MR0 = TCNT - 1; T1TCR = 1; Для АЦП PINSEL3 |= (3 << 26); T0MCR = (1 << 4); // MR1: Reset T0MR1 = 0x00100000; T0EMR = (1 << 1) | // MAT0.1 P1[29] (3 << 6); // T0TCR = 1; На выходе P1.29 имею меандр, частота управляется (T0MR1). Инициализирую АЦП, взято из примера PCONP |= (1 << 12); AD0CR = ( 0x01 << 0 ) | /* SEL=1,select channel 0~7 on ADC0 */ ( ( Fpclk / ADC_Clk - 1 ) << 8 ) | /* CLKDIV = Fpclk / 4000000 - 1 */ ( 1 << 16 ) | /* BURST = 1, BURST */ ( 0 << 17 ) | /* CLKS = 0, 11 clocks/10 bits */ ( 1 << 21 ) | /* PDN = 1, normal operation */ ( 0 << 22 ) | /* TEST1:0 = 00 */ ( 4 << 24 ) | /* MAT0.1 */ ( 1 << 27 ); /* EDGE = 1 */ /* If POLLING, no need to do the following */ AD0INTEN = 0x1FF; /* Enable interrupts */ install_irq( ADC0_INT, (void *)ADC0, HIGHEST_PRIORITY ); Процедура прерывания АЦП, взято из примера __irq void ADC0 (void) { IENABLE; /* handles nested interrupt */ val = AD0DR0; // Read A/D Data Register SendBuff[NumSBuff][cnt] = ((val >> 5) & 0x3FF); // Extract AD00 Value cnt++; if (cnt == SENDLEN) { cnt = 0; BuffFull = 1; NumSBuff ^= 1; } IDISABLE; VICVectAddr = 0; } С АЦП данные идут правильные, проверил в отладчике. Дайте пример правильной инициализации АЦП и таймера. Ещё одно. Таймер для АЦП программирую для инверсии выхода T0EMR = (3 << 6);, следовательно, частота таймера должна быть в два раза больше необходимой частоты отсчёта, т.к. запуск АЦП программируется только на спад или фронт. А как программно изменить состояние MATx.x не знаю? -
OMAP+Linux+Qt5
Oleg_IT posted a topic in Предлагаю работу
Требуется создать/настроить среду работы пользовательских программ написанных на Qt5. Подробности и условия по почте. -
Не совсем так, приведённый пример исключение, типичное время между ACK и FIN ~1с. Программа в ARM получает статус TCP_STATE_CONNECT, проходит проверка tcp_check_send(soket_tcp); и посылает буфер данных, которые до PC не доходят, а вместо них приходит FIN.
-
Да, на время я не посмотрел, по факту все эти строки вываливаются почти одновременно, вот меня это и сбило. Пока не пойму где тормозить может, в открытом коде ни каких задержек нет.