|
|
  |
Проблемы с STM8 |
|
|
|
Aug 30 2010, 09:55
|
Группа: Новичок
Сообщений: 10
Регистрация: 25-08-05
Пользователь №: 7 965

|
Цитата(sonycman @ Aug 30 2010, 12:49)  А если найдутся, следующая ревизия тоже Z будет, или ZA?  К наименованию добавят букву А и выпустят ревизию Y уже этого наименования. Но это маловероятно.
|
|
|
|
|
Dec 3 2010, 17:39
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180

|
немного войну начал, штудирую PDF на stm8s903k3 USART1 какое у него прерывание? в документах DocID15590 Rev 4 стр 37, DocID15590 Rev 5 стр39. IRQ17, IRQ18 не описаны, но похоже как раз них должен быть. На сайте ужасный бардак, STVD "sttoolset.exe" не удалось скачать. по старым ссылкам на сегодня уже недоступен, по новым его еще нет в продаже.
|
|
|
|
|
Apr 30 2011, 23:35
|
Группа: Новичок
Сообщений: 1
Регистрация: 29-04-11
Пользователь №: 64 701

|
Цитата(ведущий_специалист @ Jul 19 2010, 21:37)  Всем спасибо за ответы....Разобрался сам. Надо перед стоп было ставить NACK А подскажите, пожалуйста, поподробнее...Я тоже в том же месте
|
|
|
|
|
May 6 2011, 21:55
|

Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 29-10-09
Из: брежнев
Пользователь №: 53 292

|
Недавно взялся за изучение микроконтроллеров STM8. На данный момент читаю документацию (programming manual)
там на странице 14 написано:
Global configuration register (CFG_GCR): The global configuration register is a memory mapped register. It controls the configuration of the processor. It contains the AL control bit: ● AL: Activation level If the AL bit is 0 (main), the IRET will cause the context to be retrieved from stack and the main program will continue after the WFI instruction. If the AL bit is 1 (interrupt only active), the IRET will cause the CPU to go back to WFI/HALT mode without restoring the context. This bit is used to control the low power modes of the MCU. In a very low power application, the MCU spends most of the time in WFI/HALT mode and is woken up (through interrupts) at specific moments in order to execute a specific task. Some of these recurring tasks are short enough to be treated directly in an ISR, rather than going back to the main program. In this case, by programming the AL bit to 1 before going to low power (by executing WFI/HALT instruction), the run time/ISR execution is reduced due to the fact that the register context is not saved/restored each time.
Что я (с помощью переводчика) перевел как: Глобальный регистр конфигурации. Расположен в памяти программ. Управляет конфигурацией процессора. Состоит из бита AL. Когда AL = 0 (основные), возврат из прерывания контекст восстанавливает из стека и продолжает выполнение программы после инструкции WFI.
Когда AL = 1, (только активные прерывания) после команды IRET ЦПУ идет обратно WFI/HALT режим через сохранение контекста.
Этот бит используется для режима энергосбережения ЦПУ. Для очень малопотребляющих приложений, в этом случае MCU проводит большую часть времени в способе WFI/HALT и пробуждается (через перерывы) в определенные моменты, чтобы выполнить определенную задачу. Некоторые из этих возвращающихся задач достаточно короткий, чтобы рассматриваться непосредственно в ISR, вместо того, чтобы возвратиться к главной программе. В этом случае, программируя AL = 1, контекст не будет восстанавливаться, и как следствие, длительность обработчика уменьшится.
В связи с этим вопросы: 1) Для чего используется этот бит (из перевода это не очень ясно)? 2) Что такое ISR? 3) Чем отличается сохранение контекста при AL = 0/1? 4) Связано ли это (и как) с приоритетом прерываний?
Сообщение отредактировал skef - May 6 2011, 22:58
--------------------
на любой элемент найдется мощность, которая его сожжет.
|
|
|
|
|
May 8 2011, 18:14
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(skef @ May 7 2011, 01:55)  Глобальный регистр конфигурации. Расположен в памяти программ. Управляет конфигурацией процессора. Состоит из бита AL. Когда AL = 0 (основные), возврат из прерывания контекст восстанавливает из стека и продолжает выполнение программы после инструкции WFI.
Когда AL = 1, (только активные прерывания) после команды IRET ЦПУ идет обратно WFI/HALT режим через сохранение контекста.
Этот бит используется для режима энергосбережения ЦПУ. Для очень малопотребляющих приложений, в этом случае MCU проводит большую часть времени в способе WFI/HALT и пробуждается (через перерывы) в определенные моменты, чтобы выполнить определенную задачу. Некоторые из этих возвращающихся задач достаточно короткий, чтобы рассматриваться непосредственно в ISR, вместо того, чтобы возвратиться к главной программе. В этом случае, программируя AL = 1, контекст не будет восстанавливаться, и как следствие, длительность обработчика уменьшится.
В связи с этим вопросы: 1) Для чего используется этот бит (из перевода это не очень ясно)? 2) Что такое ISR? 3) Чем отличается сохранение контекста при AL = 0/1? 4) Связано ли это (и как) с приоритетом прерываний? Ну, ISR (Interrupt Service Routine) - Процедура Обработки Прерываний (ПОП). Обычно в тех случаях, когда требуется уменьшить потребляемую мощность используются инструкции WFI/HALT, после выполнения которых процессор впадает в "спячку". "Разбудить" процессор можно по сигналам прерываний. И обычно после обработки прерывания процессор возвращается к основной программе. Однако если все действия программы выполняются в ПОП, то после завершения ПОП целесообразно вернуть процессор снова в состояние "спячки", а не в основную программу. Для этой цели и используется бит AL. Если процессор после выхода из ПОП снова "засыпает, то сохранение контекста в ПОП становится уже ненужным. О приоритете прерываний в данном случае ничего не говорится, поэтому, на мой взгляд, с приоритетом прерывания это никак не связано. По-моему, так. Или нет?
|
|
|
|
|
Jul 18 2011, 16:35
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Странно, переношу проект с discovery на сделанное железо на STM8S105k6t6c. Эффект такой-же, больше года назад - порты на вывод не включаются. Кристаллы новые, и коллеги вроде их используют. Питание портов на 5V Что-то тут в консерватории  -------------------------------------- Разобрался - RTFM. Забыл принудительно включить верхние транзисторы.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Aug 17 2011, 07:21
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(SasaVitebsk @ Aug 17 2011, 09:53)  На кристалле имеется генерация на кварце ... О, а я так и не запустил генерацию на кварце. Отправил на встроенном генераторе. Сыровато все для того, чтобы сляпать проект за неделю, ИМХО, тем более не читая документацию, а следуя общей логике. Взять те же GPIO - после сброса работает только pull-down. Ну не бред ли? Сообщение об испорченном файле вываливалось и у меня на 105 кристалле. Кристалл должен отлежаться пару минут без питания. Похоже, причина, как в MSP430 с его фальшивыми сообщениями о пережигании защитной перемычки - в каких-то внутренних перезарядах и некорретностях поддержки JTAG. Ну а в целом по поводу отладки - действительно, родной Дискавери работал более стабильно. Но если добиться перелома в проекте, то отладка особенно и не нужна. Можно жить. Но лучше бы я STM32 заложил.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Aug 18 2011, 19:55
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Dog Pawlowa @ Jul 18 2011, 20:35)  Странно, переношу проект с discovery на сделанное железо на STM8S105k6t6c. Эффект такой-же, больше года назад - порты на вывод не включаются. Кристаллы новые, и коллеги вроде их используют. Питание портов на 5V Что-то тут в консерватории  -------------------------------------- Разобрался - RTFM. Забыл принудительно включить верхние транзисторы. Насчет портов (верхних транзисторов) чуть подробнее можно?
|
|
|
|
|
Aug 18 2011, 20:11
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(_Bill @ Aug 18 2011, 22:55)  Насчет портов (верхних транзисторов) чуть подробнее можно? Конечно! После сброса они выключены и даже если вывод включить на выход, то это будет выход в режиме в режиме открытого стока. Код инициализации для портов, работающих на светодиоды, подключенные между выводом и землей: Код #define GPIO_PULL_ON(x,y) P##x##_CR1 |=(u8)y; #define GPIO_OUTPUT(x, y) P##x##_DDR |= (u8)y
GPIO_OUTPUT(C, PIN_LEDS); GPIO_PULL_ON(C, PIN_LEDS); После сброса DDR=0 и CR1=0.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Aug 19 2011, 03:39
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Dog Pawlowa @ Aug 19 2011, 00:11)  Конечно! После сброса они выключены и даже если вывод включить на выход, то это будет выход в режиме в режиме открытого стока. Код инициализации для портов, работающих на светодиоды, подключенные между выводом и землей: Код #define GPIO_PULL_ON(x,y) P##x##_CR1 |=(u8)y; #define GPIO_OUTPUT(x, y) P##x##_DDR |= (u8)y
GPIO_OUTPUT(C, PIN_LEDS); GPIO_PULL_ON(C, PIN_LEDS); После сброса DDR=0 и CR1=0. Спасибо! Я это знаю. Просто я думал, что есть нечто особенное, чего я не знаю.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|