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

Alhen

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о Alhen

  • Звание
    Частый гость
    Частый гость
  • День рождения 10.06.1967

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 878 просмотров профиля
  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 при каждой посылке и приеме.
×
×
  • Создать...