Jump to content

    

1kvi1

Участник
  • Content Count

    36
  • Joined

  • Last visited

Everything posted by 1kvi1


  1. Магнитола стандартная, флешка самодельная. по второму случаю поступает iPod, но у него есть дополнительная передача названий треков по линиям управления. Интересует возможность передачи названии треков, потока звука и управляющих команд по шине USB, то есть по одному кабелю. Может кто-нибудь знает о таких протоколах или классах устройств?
  2. Доброго времени суток! Возникла задача защищенного воспроизведение аудио-файлов автомагнитолами с самодельной USB-флешки. Подобно тому как это выполняется с iPod, если магнитола поддерживает такую функцию. Как я понимаю должен быть какой-то протокол или стандарт описывающий рабоу таких устройств - задача ведь вроде бы стандартная. Кто может подсказать информацию? Заранее спасибо!
  3. под DOS'ом работает - это мне известно. нужно точно узнать о том как работает драйвер windows: использует таблицу стандартных скоростей, чтобы установить значения регистров? использует формулу, чтобы установить необходимое значение регистров? То есть позволяет ли устанавливать произвольные значения скорости? Дело в том, что проблема проявляется не со всем железом.
  4. Всем удачного дня! Возникла проблема - не удается передать данные на скорости 50бит\с внешнему устройству. Проблема была и раньше, но сейчас нужно разобраться почему так происходит. ВОзникает вопрос - умеют ли современные последовательные порты работать на скоростях ниже 300б/с? Почему не удается передать байты в микроконтроллер? Притом что 2 микроконтроллера на тех же настроек друг с другом работают.
  5. Всем добрый день! Озадачился такой же задачей и вот что мне удалось найти. http://www.powerint.com/sites/default/file...Files/di152.pdf По моему то что нужно
  6. Внимательное чтение документации помогло определить проблему. Дело в том что флаг ошибки переполнения ORE при разрешенном прерывании RXNEIE также вызывает прерывание. Поэтому постоянно срабатывало прерывание и сбросить его можно только прочитав данные. Всем спасибо, проблема решена - оказалась проще чем можно себе представить.
  7. К сожалению, описанные выше ситуации, когда флаг запроса на прерывания не успевает сбрасываться до выхода из прерывания не подходит для моего случая. Так как в моем исходнике вставлены инструкции включения-выключения светодиодов, которые вносят необходиму задержку перед выходом из прерывания. В документации PM0056 Programming manual с сайта st натолкнулся на следующий текст пункт 4.3.10 Ensure software uses correctly aligned register accesses. The processor does not support unaligned accesses to NVIC registers. See the individual register descriptions for the supported access sizes. A interrupt can enter pending state even it is disabled. Before programming VTOR to relocate the vector table, ensure the vector table entries of the new vector table are setup for fault handlers, NMI and all enabled exception like interrupts. For more information see Section 4.4.4: Vector table offset register (SCB_VTOR) on page 134. Интересует строка A interrupt can enter pending state even it is disabled. Правильно ли я понял что прерывания могут произойти даже если они запрещены?
  8. Доброго времени суток! Возникла задача определения факта подключения отладчика и его использования. В библиотеках stm и в примерах ничего подобного не нашел. Единственная мысль - флаг SHCSR->MONITORACT, но явного описания нет. У кого есть опыт решения подобной задачи? Ножек не хватает, поэтому на SWD Интерфейсе сидит светодиод, который желательно использовать если отладчик не подключен. Заранее спасибо!
  9. "spurious interrupt" - да был такой опыт с nxp arm7. Сейчас как раз вспомнил как не мог разобраться с причинами глюков. Проверил документацию для ядра Cortex-M3 на предмет "spurious interrupt". Ничего не нашел - где можно еще прочитать про тонкости работы NVIC? По всем признакам это как раз "spurious interrupt" - причин для их вызова нет, но они есть.
  10. ТО что флаги автоматически сбрасываются - это мне известно, учел - и за комментировал их сброс. Другое дело что чтение происходит лишь после анализа флага. Почему может пере запускаться прерывание если флаги состояния для которых разрешено прерывание все сброшены? Прерывания на передачу сброшены. Флаги TC TXE взведены, но прерывание отключено по ним.
  11. Добрый день! Возникла следующая интересная проблема. По ходу выполнения прошивки в какой то момент происходит зацикливание программы на прерывании от USART1. То есть выполняется запуск обработчика прерываний с частотой примерно 100 кГц. Основная программа успевает сделать несколько инструкций после чего снова происходит прерывание. При этом если остановить обработку прерывания отладчиком и походить по инструкциям нормальный ход программы восстанавливается. Прерывания разрешены только на прием, флаг готовых данных не взведен. В регистре NVIC->ICSR указывается что активное прерывание от usart1. С чем может быть связанно такое поведение? Осциллографом контролировал линию - стабильная единица на обоих линиях. Стабильно повторяется. Прерывания по приему не запрещается и разрешено постоянно. void USART1_IRQHandler (void) { VD3R_ON; VD3G_ON; if (USART_GetITStatus(USART1,USART_IT_TXE)) { // USART_ClearITPendingBit(USART1,USART_IT_TXE); } if (USART_GetITStatus(USART1,USART_IT_RXNE)) { // USART_ClearITPendingBit(USART1,USART_IT_RXNE); unsigned char receive_char=USART_ReceiveData(USART1); if (!modemmode) { } VD3R_OFF; VD3G_OFF; }
  12. проблема с ST-Link

    После удаления виртуальных приводов, встроенный процессор в дисковери плате стал определяться. Спасибо за подсказку! Такой вопрос - отладчик от платы stm32vl discovery будет работать с внешним stm32l? С внешним stm32l - работает, только что добился подключения. Всем спасибо за информацию! Очередная проблема с st-link. st-link utility исправно читает и прошивает микросхему, то есть работает и железо и отладчик. Не удается прошить процессор при использовании iar 6.30. То есть если отлаживать без загрузки отображается текущее состояние регистров - видно что работает. Если попросить загрузить прошивку и отладить - отображает окно programming flash memory и ничего не делает. На форуме ранее была информация о возможности смены iar 6.10 на iar 6.30 чтобы решить эту проблему. Но мне не помогло. Как прошить процессор из-под iar'а?
  13. проблема с ST-Link

    Скачал версию 2.1 - не помогло. STLinkUSBDriver.dll v4.2.2.0 - старая или новая? Есть ссылка на решение проблемы в atollic'е? Виртуальный диск нужно удалить который появляется при подключении платки или все остальные?
  14. проблема с ST-Link

    такая же ситуация - STM32 ST-LINK Utility.exe v2.2.0 - не видит st-link'а встроенного в stm32vldiscovery iar 6.10 видел но не прошивал, скачал iar 6.30 - также перестал видеть что делать? где взять старую библиотеку?
  15. Добрый день! Вопрос по j-link pro, доступный в продаже по ссылке http://jtag.su/index.php?option=com_conten...=8&Itemid=1 есть ли у кого-нибудь опыт работы с устройством? Будет ли работать SWD для STM32? Сомневаюсь так как в описании какие-то непонятки насчет SWD, да и на корпусе в явном виде не написанно Также - определяется ли это устройство как полная копия оригинала, то есть будет ли обновление? Всем спасибо!
  16. Можно более подробно - про уровни приоритетов прерываний? Как правильно инициализировать? Сделал как в примерах, но ничего не помогает... Который день мучаюсь с прерываниями первого последовательного порта в STM32L.
  17. Всем доброго времени суток! Проковырялся уже два дня - не удается инициализировать последовательный порт USART1 в stm32l152cbt6. GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB, ENABLE); RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB,DISABLE); // Èíèöèàëèçèðóåì ïîñëåäîâàòåëüíûé ïîðò. /* Enable UART clock */ RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1,DISABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_APB2PeriphClockLPModeCmd(RCC_APB2Periph_USART1,ENABLE); USART_DeInit(USART1); // GPIO_PinAFConfig(GPIOA, GPIO_Pin_8, GPIO_AF_USART1); /* Connect PXx to USARTx_Tx */ GPIO_PinAFConfig(GPIOA, GPIO_Pin_9, GPIO_AF_USART1); /* Connect PXx to USARTx_Rx */ GPIO_PinAFConfig(GPIOA, GPIO_Pin_10, GPIO_AF_USART1); /* Connect PXx to USARTx_Rx */ // GPIO_PinAFConfig(GPIOA, GPIO_Pin_11, GPIO_AF_USART1); /* Connect PXx to USARTx_Rx */ // GPIO_PinAFConfig(GPIOA, GPIO_Pin_12, GPIO_AF_USART1); VD3G_ON; /* Configure USART Tx as alternate function push-pull */ /* Configure USART Rx as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); // GPIO_SetBits(GPIOA,GPIO_Pin_9|GPIO_Pin_10); VD3G_OFF; // Èíèöèàëèçèðóåì ïåðåäåñêðèòèçàöèþ 8õ. USART_OverSampling8Cmd(USART1,ENABLE); // Èíèöèàëèçàöèÿ îäèíî÷íîãî òåñòèðîâàíèÿ ëèíèè ïðèåìíèêà. USART_OneBitMethodCmd(USART1,ENABLE); USART_ReceiverWakeUpCmd(USART1,DISABLE); USART_InitStructure.USART_BaudRate = baudrate; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* USART configuration */ USART_Init(USART1, &USART_InitStructure); /* Enable USART */ USART_Cmd(USART1, ENABLE); /* Enable the USART Receive interrupt */ USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); /* Enable USART Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); Здесь уже добавил все что только можно, но не работает. Симптомы следующие - после вызова PinAFConfig начинает нарастать напряжение на выводах rx tx в течение примерно 10-20мкс. Далее напряжение падает в ноль и все. Постоянно ноль на обоих выводах. Судя по ходу программы - порт работает и куда то передает байты, так как прерывания выполняются и видимость работы есть. Устройство периодически ложится спать в режимах sleep и stop, но во время выполнения процедуры инициализации такого нет. Также используется усб - соседние линии совмещенные с RTS/CTS порта. Но для эксперимента все отключил и выполнил инициализацию сначала прошивки - не помогло. Порт рабочий - прошивка через него шьется, если выводы инициализировать на цифровой вход подтянутый к единице - логическая единица на обоих. То есть выводы снаружи ничем не нагружены. Заранее спасибо за подсказку!
  18. основная моя мысль по поводу iar'а следующая: он позволяет выполнять эмуляцию 32 регистров общего назначения вместо 8 регистров, то есть отказывается от использования банков как я понимаю - такая тактика должна позволить минимизировать расходы памяти для размещения локальных переменных в стеке, что должно положительно сказаться на расходах памяти и быстродействии так ли это? может ли iar делать код подобный варианту для AVR'а(32 регистра для и аппаратный+программный стек)?
  19. использую C8051F342 - 256 RAM+4096XRAM вся забита под завязку Очень много локальных переменных типа unsigned long - причем для каждой из них компилятор выделяет 4 байта в XRAM Меня интересует вопрос - делает ли так же IAR?
  20. У iar'а как обстоят дела с локальными переменными? У меня проблема с оперативной памятью - полностью забита. Пишу новую функцию, объявляю локальную переменную, а он пишет что оперативка кончилась.
  21. Лучше чем Keil среды для разработки программ для МК51, скорее всего, не найти. А вы пробовали? Конкретно про iar что-нибудь знаете? Оптимизация 4 не помогает, ибо используется уже 8-я... Может кто по существу что-нибудь напишет? Неужели никто iar'ом не пользовался?
  22. Вариант с стабильной максимальной частотой и сном при простое - подходит для большинства задач. Другое дело в следующей ситуации устройство ждет нажатия кнопки и спит, кнопку нажали - взвели флаг и снова спать, кнопку отпустили - работаем Зачем запускать осциллятор на 16 МГц чтобы взвести флаг? Ведь можно от внешнего часового кварца (уже есть и постоянно включен) работать и не тратить лишнего времени... Операционная система тут не участвует - задача сама легла спать, сама проснулась - как Freertos'у сообщить что прошло уже 10 секунд, а не 10 милисекунд как она считает (тактовая частота была выключена), и что пора все задачи разбудить давно... Уважаемые ГУРУ - есть вопрос - большая просьба - дайте на него ответ, не нужно спрашивать почему вопрос возник...
  23. Добрый день! Вопрос по freertos - как правильно реализовать динамическое изменение тактовой частоты и частоту смены задачи в STM32. Интересует следующий момент - есть две задачи первая меняет по заданным событиям тактовую частоту, вторая мигает светодиодом. Период мигания задается функциями vTaskDelayUntil. В общем задачу можно определить так - нужно стандартными механизмами системы обеспечивать временные интервалы при динамически меняющейся тактовой частоте. Первая мысль которая приходит в голову - определить макросы configCPU_CLOCK_HZ и configTICK_RATE_HZ как переменные, при изменении тактового сигнала менять переменные и вызывать повторно prvSetupTimerInterrupt(), сбрасывать текущее значение счетчика системного таймера. Устройство с батарейным питанием, большую часть времени спит. Диапазон тактовой частоты от 32кГц до 16МГц. Не хотелось бы модифицировать исходники, может быть есть стандартное решение?
  24. Доброго времени суток! Интересует опыт использования iar'а для С51, точнее эффективность компилятора по сравнению с Keil. Собственно проблема следующая: keil для локальных переменных выделяет память статически, причем линкер при определенных условиях может обеспечить совместное использование этой памяти разными процедурами. Данное свойство приводит к большому расходу памяти, что нежелательно. У iar'а есть опция эмуляции 32-х регистров общего пользования, позволяет ли эта опция минимизировать потребление памяти локальными переменными? Опыта работы с C51 к сожалению мало, подобная работа keil'а с локальными переменными была для меня настоящим сюрпризом - память неожиданно кончилась без видимых причин... Всем заранее спасибо!
  25. 10 МБ/с как уже написали не получится из-за максимальной скорости Full speed. На подобном микроконтроллере можно достичь например следующих параметров: На основе Silabs C8051F342 и NAND-памяти при частоте микроконтроллера 48МГц при реализации Mass Storage получилась скорость чтения 500КБ/с, записи 400кБ/с.