Перейти к содержанию
    

Alhen

Свой
  • Постов

    160
  • Зарегистрирован

  • Посещение

Весь контент Alhen


  1. Спасибо за подсказку, я действительно вызываю ручной код из Stateflow, посмотрел как можно воспользоваться настройками Additional Building Information получается я там могу указать путь до папки с кастомным кодом и затем указать имена файлов с сорсом. Но результат тот же, в сгенерированном коде тот же #include файла с абсолютным путем. Что касается coder.cinclude, то буду пробовать. Настораживает что #include это "плохо-плохо", пока не понимаю почему, просто я вижу в примерах подобные юзкейсы.
  2. Подскажите пожалуйста как решить проблему вставки (#include) относительного пути кастомного кода в Simulation Target при генерации C кода модели т.е. Simulink/Model Explorer/ Model Configuration / Simulation Target Insert custom C code in generated: Source file #include "d:\project\source\example.c" так вот указать относительный путь типа #include "..\source\example.c" никак не получается не работает((
  3. Была такая проблема, по моему из-за русской учетной записи пользователя и/или пробелов между составным именем папки в файловом пути.
  4. А чем плох готовый классический buck LM2576HV-ADJ (HV до 60V)?
  5. Выбор варианта с трансформатором питания был достаточно мучительным компромисом. Что привлекает в этом варианте, так это "честная" гальваническая развязка от сети, т.к. за ним идет процессор с аналоговыми измерительными каналами без гальванической изоляции. Этот вариант просматривался в нескольких аналогичных успешных изделиях, в том числе китайских, а они то, считать умеют. Ситуация такая что, и немецкий EI60 при 10-15евро, тоже вариант.
  6. Чтобы подвести черту под темой, при 32В на вторичке выставил нагрузку 0.15А после выпрямительного моста и конденсатора 470.0 гоняю схему 3 часа, температура железа 43.6 градуса (Fluke179) в помещении 21 градус. Условия при которых была температура, которую рукой нельзя было терпеть, отличались от этих. Тогда, я брал ту же мощность, но с одной обмотки 16В при 0.3А. Пока меня это устраивает, реальное железо потребляет в основном в два раза меньше, 0.15А - это пиковое потребление. Но понятно, что с этим трансформатором конструкцию по питанию расширять нельзя. Буду искать такой же, но без крыльев....))) Спасибо за помощь
  7. Мощность ТП-115-К9 20Вт с учетом коэфф. 0.6 - получается 12Вт, в нагрузку идет 32Вх0.15А = 4.8Вт. Получается всего двухкратный запас. Спасибо за подсказку, источники питания не самая моя сильная сторона))
  8. Получается что, для этих маломощных трансформаторов высокая температура, типа 80 градусов на корпусе, это хоть и предельная, но допустимая температура. Я то, "измерял" температуру пальцем)) Попробую снова прогнать схему с измерением температуры, может на самом деле все нормально. Спасибо!
  9. Такой эксперимент я делал, без моста, просто на баласт, реостатом выставил 0.7А, испытания прекратил через 40 минут, потому что все идет к тому же сильному нагреву. Хотя честно сказать по динамике нагрева, учитвая нагрузку почти в номинал, все было нестколько лучше. Проблема остается с практической схемой, что можно было бы добавить/убавить? Пока мысли подобрать трансформатор с большей номинальной мощностью и другого производителя, например: Hahn EI60 но это другие цены и сроки
  10. Про резистор не понял, у меня вторичка идет на выпрямительный мост, после моста конденсатор 470.0 это что, перед мостом резистор параллельно обмоткам, а какой номинал? Поясните пожалуйста))))
  11. Запитал схему от ТП-115-К9 (2х12В,0.8A) с двух обмоток, после выпрямления, получил 32V DC под нагрузкой 0.15A (приблизительно 19% от номинала), поставил на "длительный" прогон, через два часа к трансформатору нельзя было притронуться!!! С номинальной нагрузкой нагревается, гораздо быстрее. Я планировал использовать его в закрытом корпусе с круглосуточной работой. Больше всего меня бесит, что по документации у меня пятикратный запас, а на деле четыре платы опытных образцов в помойку. WTF?
  12. Чувствую себя идиотом, но с утра еще раз спокойно все подключил и вуаля, все работает , более того стали отображаться изменения счетчика TIM4->CNTR в дебугере, чего я ни разу не видел на родной для кита L-ке, думал что это такой глюк. Если проанализировать что пошло не так вчера вечером, 1) я так понял что дискавери не раздает питание и SWIM заругался не найдя чип; 2) после того как я подкинул питание, программатор уже не "захотел" что-либо искать. Возможно, помогла бы перезагрузка. Ну, это так гипотеза для тех, кто возможно столкнется с чем-либо подобным. Благодарю Xenia за ответ, очень важно знать что, то с чем ты борешься принципиально возможно, и действительно у меня IAR с сервис паком 1.30.2.
  13. Решил прошить двадцатиногую STM8S103F2P6, думал что SWIM он и в африке и на дискавери L один и тот же. Неужели принципиально невозможно прошить, или это проблемы драйвера и версии IAR 1.30? Уже решился покупать ST-LINK, но пока он придет... Подскажите пожалуйста, стоит ли бороться с дровами или версиями?
  14. Спасибо за пример, для меня очень кстати. Мне тоже нужен microSD через SDIO для STM32F103VCT6. Осваивать SD карту, я начал по тому же принципу по которому "ищут не там где потерял, а там где светлее", т.е. через SPI, уж очень много по этой теме информации. А вот с SDIO маловато. :rolleyes: В моем приложении требуется по возможности избегать прерываний (по крайней мере не трогать Systick), в вашем проекте disk_timerproc задушен, а SDIO обробатывается по прерыванию, интересно, можно ли SDIO сделать полингом? А кто-нибудь пробывал делать стейт-машины для SD карт?
  15. STM32 SPI

    Благодарю за рабочий код, действительно все заработало, с меня пиво :beer: Я разобрался в чем была промашка, надо было назначить выходы в режиме альтернативной функции. GPIOA->CRL |= GPIO_CRL_MODE7; // Выход MOSI PA.7 (50 MHz) GPIOA->CRL &= ~GPIO_CRL_CNF7_0; // Push-Pull GPIOA->CRL |= GPIO_CRL_CNF7_1; // с альтернативной функцией !!!!!! Позволю себе выложить весь код тестовой программы в том же стиле. Такой "долбеж" по регистрам неизбежен на начальном этапе освоения камня, есть ощущение проникновения в сакральный смысл регистров #include "stm32f10x.h" u8 temp; void main() { RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // Разрешить тактирование порта A. RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // Тактирование альтернативных функций GPIO. GPIOA->CRL |= GPIO_CRL_MODE7; // Выход MOSI PA.7 (50 MHz) GPIOA->CRL &= ~GPIO_CRL_CNF7_0; // Push-Pull GPIOA->CRL |= GPIO_CRL_CNF7_1; // с альтернативной функцией !!!!!! GPIOA->CRL &= ~GPIO_CRL_MODE6; // Вход MISO PA.6 GPIOA->CRL &= ~GPIO_CRL_CNF6_0; // GPIOA->CRL |= GPIO_CRL_CNF6_1; // with Pull-Up GPIOA->CRL |= GPIO_CRL_MODE5; // Выход SCK PA.5 (50 MHz) GPIOA->CRL &= ~GPIO_CRL_CNF5_0; // Push-Pull GPIOA->CRL |= GPIO_CRL_CNF5_1; // с альтернативной функцией !!!! GPIOA->CRL |= GPIO_CRL_MODE4; // Выход NSS PA.4 (50 MHz) GPIOA->CRL &= ~GPIO_CRL_CNF4; // Push-Pull General Purpose GPIOA->BSRR = GPIO_BSRR_BS4; // AFIO->MAPR &= ~AFIO_MAPR_SPI1_REMAP; //Сбрасываем REMAP для SPI на PA4-7 RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; SPI1->CR1 &= ~SPI_CR1_SPE; //Запрещаем SPI перед изменениями настроек SPI1->CR1 |= SPI_CR1_BR_0; //Задаем скорость SPI1->CR1 |= SPI_CR1_BR_1; SPI1->CR1 |= SPI_CR1_CPOL; //Задаем режим SPI1->CR1 |= SPI_CR1_CPHA; // SPI1->CR1 &= ~SPI_CR1_DFF; //Формат данных 8 бит SPI1->CR1 &= ~SPI_CR1_CRCEN; //Запрет CRC SPI1->CR1 &= ~SPI_CR1_CRCNEXT; //Отключение передачи CRC SPI1->CR1 &= ~SPI_CR1_RXONLY; //и прочих не fullduplex настроек SPI1->CR1 &= ~SPI_CR1_SSM; //на всякий случай.. SPI1->CR1 &= ~SPI_CR1_SSI; SPI1->CR1 &= ~SPI_CR1_LSBFIRST; //MSB вперед SPI1->CR1 |= SPI_CR1_MSTR; //В режиме Мастер SPI1->CR1 &= ~SPI_CR1_BIDIMODE; SPI1->CR1 &= ~SPI_CR1_BIDIOE; SPI1->CR1 |= SPI_CR1_SPE; // Включаем SPI while(1) { while (SPI1->SR & SPI_SR_BSY); while (!(SPI1->SR & SPI_SR_TXE)); SPI1->DR = 0x55; // Передача данных while (SPI1->SR & SPI_SR_BSY); while (!(SPI1->SR & SPI_SR_RXNE)); temp = SPI1->DR; // Чтение принятых данных } } Кстати, пошагово в отладчике программа не проходит проверку на RXNE и попадает в бесконечный цикл. Видать, где-то, RXNE успевает сброситься. Сам кусок кода с записью и чтением я взял на форуме ST здесь Автор утверждает, что у него код работает только в этом порядке, хотя в мануале RM0041 не рекомендуют проверять BSY при каждой посылке и приеме.
  16. STM32 SPI

    Это от безисходности и злобы :rolleyes:
  17. STM32 SPI

    Второй день пытаюсь вызвать к жизни SPI1 или 2 на STM32VLDISCOVERY. Перерыл интернет и даташит до тошноты. Не пойму что не так: RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // Разрешить тактирование порта B. RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // Тактирование альтернативных функций GPIO. //Настройки GPIO GPIOB->CRH |= GPIO_CRH_MODE15_1; // Выход MOSI PB.15 GPIOB->CRH &= ~GPIO_CRH_MODE15_0; // 2MHz GPIOB->CRH &= ~GPIO_CRH_CNF15; // Push-Pull GPIOB->CRH &= ~GPIO_CRH_MODE14; // Вход MISO PB.14 GPIOB->CRH &= ~GPIO_CRH_CNF14_0; // GPIOB->CRH |= GPIO_CRH_CNF14_1; // Pull-Up GPIOB->ODR |= GPIO_ODR_ODR14; // GPIOB->CRH |= GPIO_CRH_MODE13_1; // Выход SCK PB.13 GPIOB->CRH &= ~GPIO_CRH_MODE13_0; // 2MHz GPIOB->CRH &= ~GPIO_CRH_CNF13; // Push-Pull GPIOB->CRH &= ~GPIO_CRH_MODE12; // Вход NSS PB.12 GPIOB->CRH &= ~GPIO_CRH_CNF12_0; // GPIOB->CRH |= GPIO_CRH_CNF12_1; // Pull-Up GPIOB->ODR |= GPIO_ODR_ODR12; //Настройки SPI2 RCC->APB1ENR |= RCC_APB1ENR_SPI2EN; //Разрешаем тактирование SPI2 SPI2->CR1 &= ~SPI_CR1_SPE; //Отключаем SPI перед изменением настроек SPI2->CR1 |= SPI_CR1_BR_0; //Задаем скорость SPI2->CR1 |= SPI_CR1_BR_1; // SPI2->CR1 |= SPI_CR1_CPOL; //Задаем режим SPI2->CR1 |= SPI_CR1_CPHA; // SPI2->CR1 &= ~SPI_CR1_DFF; //Формат данных 8 бит SPI2->CR1 &= ~SPI_CR1_CRCEN; //Запрет CRC SPI2->CR1 &= ~SPI_CR1_CRCNEXT; //Отключение передачи CRC SPI2->CR1 &= ~SPI_CR1_RXONLY; //и прочих не fullduplex настроек SPI2->CR1 &= ~SPI_CR1_SSM; //на всякий случай.. SPI2->CR1 &= ~SPI_CR1_SSI; // SPI2->CR1 &= ~SPI_CR1_LSBFIRST; //MSB вперед SPI2->CR1 |= SPI_CR1_MSTR; //В режиме Мастер SPI2->CR1 &= ~SPI_CR1_BIDIMODE;// SPI2->CR1 &= ~SPI_CR1_BIDIOE; // SPI2->CR2 &= ~SPI_CR2_SSOE; // Запретить выход SS // (на входе задан высокий уровень) SPI2->CR1 |= SPI_CR1_SPE; // Включаем SPI ..... //Пробная прием-передача u8 temp; while (SPI2->SR & SPI_SR_BSY); while (!(SPI2->SR & SPI_SR_TXE)); SPI2->DR = 0x55; // Передача данных while (SPI2->SR & SPI_SR_BSY); while (!(SPI2->SR & SPI_SR_RXNE)); temp = SPI2->DR; // Чтение принятых данных ....... При отладке видно, что все настройки устанавливаются как прописано в коде, а в регистр DR данные 0x55 так и не записывается. На ногах процессора молчок. Тоже самое делал и для SPI1 с учетом бита альтернативной распиновки. Наверное, если взять библиотеку с функциями инициализации все бы заработало, но хочу вот так через "stm32f10x.h". Помогите пожалуйста разобраться.
  18. C камнем f100 у Keil проблема при эмуляции перифирии, возьмите 103-й.
  19. Atmega128 & Nut/os

    Проблема решилась, в протеусе надо было изменить настройки времени доступа и т.д. в Advanced Properties на SRAM 6264. Поменял все установки на 10нс и все заработало.
  20. Atmega128 & Nut/os

    Набрел по ссылкам на Nut/Os с известной многим ethernut, решил попробовать и прикрутить ось к меге, благо хорошее описание имеется http://www.ethernut.de/en/iccavr/ Но так как самой железки на руках не имеется, то просто в Proteus-е нарисовал М128 + SRAM 64k. Собрал библиотеки и приложение из примеров (uart и multithread), скормил coff протеусу, запустил и ... вижу что мега дрыгает адрес/данными ногами, ну там ALE и прочее, но на USART-е тишина. Запустил отладчик на АВРСтудии, вижу что настройки USART0 меняются, но в регистр данных ничего не падает. Помогите пожалуйста!
  21. У меня проблема с компиляцией простейшей тестовой программки для STM32 Discovery под IAR-ом V6.2. Код нормально компилился под 5.5, но после установки 6.2 ругается: Error[Pe337]: linkage specification is incompatible with previous «__WFI»……и т.д. Эта ошибка появляется для проекта С++, под С ошибки другого характера. Помогите побороть пожалуйста! (может это как-то связано с CMSIS?)
  22. При заказе в Китае печатных плат без монтажа они выдали следующие коды ТНВЭД Custom code is: 8534009000 for double side boards. 8534001000 for mulitlayer board.
  23. Я наблюдаю подобное поведение при работе с USB модемом huawei E1550 (оператор Beeline Казахстан). При передаче данных по GPRS (1 раз в минуту) модем становится "глухим" и не принимет входящих SMS. Эффект носит 100% устойчивый характер. Сейчас борюсь с этим периодически отправляя ATD на произвольный номер (все равно модем отвечает NO CARRIER). Пока данный workaround помогает (на столе), но все это настолько некрасиво и тупо и как это будет работать в "поле" при длительной эксплуатации не понятно.
  24. Вот пример из жизни: Call Ready AT+CREG?+CREG: 0,1 OK AT+CSTT="internet.beeline.kz","beeline","beeline" OK AT+CIICR OK AT+CIFSR 10.203.148.52 AT+CDNSORIP=0 OK AT+CIPSTART="TCP","xx.xxx.xx.xxx","80" OK CONNECT OK AT+CIPSEND > GET http://xxxxxx.xxx/getdata.php?data=27 HTTP/1.0 SEND OK HTTP/1.1 200 OK Date: Fri, 16 Oct 2009 02:54:56 GMT Content-Type: text/html; charset=windows-1251 Connection: close Server: Apache Cache-Control: max-age=0 Expires: Fri, 16 Oct 2009 02:54:56 GMT <HEAD><TITLE>Get data</TITLE></HEAD> <BODY>27</BODY> CLOSED
  25. Я дико извиняюсь, оказывается я пользовался старым мануалом SIM300D_ATC_V1.06
×
×
  • Создать...