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

Не стартует программа STM8 при прошивке

Есть проблема.

Работаю в W7 и IDE ST Visual Develop (COSMIC).

Если зашиваю прошивку в Debug режиме, и нажимаю кнопку Start, то все нормально пускается и при выходе из этого режима, тоже замечательно работает. При прошивке из под ST Visual Develop или ST Visual Programmer, прошивка не стартует, если выдернуть отладчик из платы и передернуть питание платы. Стартует только в том случае, если не отключая отладчик от платы, вынуть USB шнур отладчика из порта компьютера, при подключенном отладчике к плате.

Пробовал Rlink и Stlink. Может, кто уже решал подобную проблему, у меня поиском найти не получилось.

 

 

Ну и сразу спрошу заодно, может, ткнет кто меня носом в обсуждение этого вопроса. Меня интересует правильная работа с сигналом отключения передатчика после окончания передачи, при использование half duplex работы RS485 (двухпроводная линия). Как я понял у этого микроконтроллера на любое прерывание (по передатчику) по UART осуществляется переход по одному и тому же вектору. Вот сделал такое решение, в принципе заработало, но как то коряво со стороны смотрится.

 

#ifdef _COSMIC_
@far @interrupt void UART2_TX_IRQHandler(void)
#else /* _RAISONANCE_ */
void UART2_TX_IRQHandler(void) interrupt 20
#endif /* _COSMIC_ */
{
   /* In order to detect unexpected events during development,
      it is recommended to set a breakpoint on the following instruction.
   */

   if(!IsPktSend)
   {
if(OutBuff2Ptr.rd == OutBuff2Ptr.wr)
{
        UART2_ITConfig(UART2_IT_TXE, DISABLE);
        //UART2_GetITStatus(UART2_IT_TXE);

        //UART2_GetITStatus(UART2_IT_TC);

       /* Очистка флага "передача завершена" */
       /* не нашел в библиотеке команду как его очищать */
       UART2->SR = (u8)~(UART2_IT_TC);
       UART2_ITConfig(UART2_IT_TC, ENABLE);

       IsPktSend = 1;
 }
 else
 {
       UART2_SendData8(Uart2OutBuff[OutBuff2Ptr.rd++]);
       if(OutBuff2Ptr.rd >= sizeof(Uart2OutBuff)) 
	OutBuff2Ptr.rd = 0;
  }	
      }
      else
      {
if(UART2_GetITStatus(UART2_IT_TC))
{

                    TX_EN_OFF();
       UART2_ITConfig(UART2_IT_TC, DISABLE);
       UART2->SR = (u8)~(UART2_IT_RXNE_OR);
       UART2_ITConfig(UART2_IT_RXNE_OR, ENABLE);
       IsPktSend = 0;
}
      }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и сразу спрошу заодно, может, ткнет кто меня носом в обсуждение этого вопроса. Меня интересует правильная работа с сигналом отключения передатчика после окончания передачи, при использование half duplex работы RS485 (двухпроводная линия). Как я понял у этого микроконтроллера на любое прерывание (по передатчику) по UART осуществляется переход по одному и тому же вектору. Вот сделал такое решение, в принципе заработало, но как то коряво со стороны смотрится.

 

Зайдите по ссылке http://kazus.ru/forums/showthread.php?t=20861, там есть про УАРТ и довольно подробно. У меня под ИАРом проблем с запуском не было, шил и ST Visual Programmero'ом. Где-то видел обсуждение такой же проблемы, но не запомнил, где...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прочитал весь казус не нашел как решить проблему с программированием. Помогает только закрытие stvp, тогда проц запускается. Есть предположение, что это связано с рестартом контроллера по SWIM, программа после прошивки просто не ресетит контроллер в режиме отладки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Используйте, для сброса дебагер (я использую эклипс, но это не важно, пропишите внешнюю тулзу):

 

C:/Tools/STMicroelectronics/Toolset/stvd/gdb7.exe --quiet --command=mcu/stm8l151k6.ini

 

сам ини файл

 

define emulator-reset-port-mcu
target gdi -dll swim\stm_swim.dll -stlink3 -port $arg0 -mcuname $arg1
mcuname -set $arg1
end

emulator-reset-port-mcu usb://usb stm8l151k6
quit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...