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

А если найдутся, следующая ревизия тоже Z будет, или ZA? :)

 

К наименованию добавят букву А и выпустят ревизию Y уже этого наименования. Но это маловероятно.

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


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

День добрый.

Проблема с приоритетами прерываний.

Нужно, чтоб прерывание от PORTD срабатывало в прерывание от TIM1_OVF.

Строками

 

ITC_SetSoftwarePriority(ITC_IRQ_PORTD, ITC_PRIORITYLEVEL_2);

ITC_SetSoftwarePriority(ITC_IRQ_TIM1_OVF, ITC_PRIORITYLEVEL_1);

 

установить приоритет ITC_IRQ_PORTD выше чем в ITC_IRQ_TIM1_OVF не удается.

Для проверки в TIM1_UPD_OVF_TRG_BRK_IRQHandler сделал while(1);

а в EXTI_PORTD_IRQHandler(void) так и не попадаю.

Компил Cosmic.

Посоветуйте что-то.

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


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

Судя по ERRATA-м (0_о OMG! WTF! сколько там ошибок!) у них ревизии идут в обратном алфавитном порядке (см. таблицу Product evolution) :

1. Z

2. Y

3. X

....

 

 

PS Особенно меня забавляет строчка "Not fixed (no fix planned)"

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


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

немного войну начал, штудирую PDF на stm8s903k3 USART1 какое у него прерывание?

в документах DocID15590 Rev 4 стр 37, DocID15590 Rev 5 стр39.

IRQ17, IRQ18 не описаны, но похоже как раз них должен быть.

На сайте ужасный бардак, STVD "sttoolset.exe" не удалось скачать.

по старым ссылкам на сегодня уже недоступен, по новым его еще нет в продаже. :cranky:

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


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

Всем спасибо за ответы....Разобрался сам. Надо перед стоп было ставить NACK

А подскажите, пожалуйста, поподробнее...Я тоже в том же месте :)

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


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

Недавно взялся за изучение микроконтроллеров 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

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


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

Глобальный регистр конфигурации.

Расположен в памяти программ. Управляет конфигурацией процессора. Состоит из бита 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. Если процессор после выхода из ПОП снова "засыпает, то сохранение контекста в ПОП становится уже ненужным. О приоритете прерываний в данном случае ничего не говорится, поэтому, на мой взгляд, с приоритетом прерывания это никак не связано. По-моему, так. Или нет?

 

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


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

Да вроде так. По крайней мере, я на р.коте ~так же ответил :-)

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


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

Странно, переношу проект с discovery на сделанное железо на STM8S105k6t6c.

Эффект такой-же, больше года назад - порты на вывод не включаются.

Кристаллы новые, и коллеги вроде их используют.

Питание портов на 5V

Что-то тут в консерватории :(

 

--------------------------------------

 

Разобрался - RTFM. Забыл принудительно включить верхние транзисторы.

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


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

Работаю с одним заказчиком с 2001 года. За это время ни разу не срывал сроки. Это получило и оборотную сторону ... Они стали всё меньше времени выделять на проект + затягивать с изготовлением железа + уменьшать размер вознаграждения ...

На последний проект было выделено неделя ... Микроконтроллер был заложен новый .... перспективный .... короче наслушался я победоносных реляций ... stm8s208s6 ...

Купил дискавери ... собрал простенький (свой) проект на IAR1.3 ... вошёл в отладку ... отладил... успокоился ... отломал дискавери ...

Написал сам проект на 208 ... приступил к отладке ....

Три дня - у меня уже всё в мыле ... проклинаю всё на свете ...

====

Проект компилится ... при попытке входа в отладчик пишет что файл повреждён либо имеет неправильный формат ... Понятно что с файлом всё Ок. В симулятор с этим файлом всё прекрасно входит .... При этом st-link довольно долго мигает и потом загорается светодиод на постоянку ... Если выйти из IAR, то светодиод гаснет.

ST programmer при попытке залить hex файл делает примерно тоже - мигает светодиод... зажигается на постоянку... приложение вываливается без всяких сообщений, как будто я его закрыл ... Такое происходит даже если я просто хочу изменить адреса программирования ...

Для простоты картины собрал минимальный проект где трудно ошибиться ... ~250 байт - всё тоже самое ... Также себя ведёт и ST шный отладчик ...

Сегодня подкину 105 кристал из дискавери, но думаю что с ним всё будет работать ...

====

Грядёт дикая буча ... В пятницу приезжает заказчик из украины (заказчик моего заказчика )))) ). Конечно, мне собственно пофигу, но просто очень неприятно ... это же я посоветовал КРАСИВЫЙ кристалл применить... Понятно что сейчас делают кроссплату по-быстрому либо с stm32 либо с at90can128 - я им на выбор предложил ...

====

Кто что может подсказать ... Особенно меня интересует есть ли люди работавшие с stm8s208 кристаллами. У меня ревизия X.

Могу попробовать отладить без отладчика, хотя будет очень сложно ... Киньте ссылку на загрузчик по COM ...

====

Ещё один момент меня настораживает ... На кристалле имеется генерация на кварце ... Сие мне непонятно ...

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


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

На кристалле имеется генерация на кварце ...

О, а я так и не запустил генерацию на кварце. Отправил на встроенном генераторе.

 

Сыровато все для того, чтобы сляпать проект за неделю, ИМХО, тем более не читая документацию, а следуя общей логике.

Взять те же GPIO - после сброса работает только pull-down. Ну не бред ли?

 

Сообщение об испорченном файле вываливалось и у меня на 105 кристалле. Кристалл должен отлежаться пару минут без питания. Похоже, причина, как в MSP430 с его фальшивыми сообщениями о пережигании защитной перемычки - в каких-то внутренних перезарядах и некорретностях поддержки JTAG.

 

Ну а в целом по поводу отладки - действительно, родной Дискавери работал более стабильно. Но если добиться перелома в проекте, то отладка особенно и не нужна.

 

Можно жить. Но лучше бы я STM32 заложил.

 

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


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

О, а я так и не запустил генерацию на кварце. Отправил на встроенном генераторе.

Мне конечно должно быть приятно, но только я её не запускал ... Она у меня на чистом кисталле ...

Отсюда и вопрос .... откуда и как она там появилась ....

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


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

Странно, переношу проект с discovery на сделанное железо на STM8S105k6t6c.

Эффект такой-же, больше года назад - порты на вывод не включаются.

Кристаллы новые, и коллеги вроде их используют.

Питание портов на 5V

Что-то тут в консерватории :(

 

--------------------------------------

 

Разобрался - RTFM. Забыл принудительно включить верхние транзисторы.

Насчет портов (верхних транзисторов) чуть подробнее можно?

 

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


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

Насчет портов (верхних транзисторов) чуть подробнее можно?

Конечно!

После сброса они выключены и даже если вывод включить на выход, то это будет выход в режиме в режиме открытого стока.

 

Код инициализации для портов, работающих на светодиоды, подключенные между выводом и землей:

 

 

#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.

 

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


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

Конечно!

После сброса они выключены и даже если вывод включить на выход, то это будет выход в режиме в режиме открытого стока.

 

Код инициализации для портов, работающих на светодиоды, подключенные между выводом и землей:

 

 

#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.

Спасибо! Я это знаю. Просто я думал, что есть нечто особенное, чего я не знаю.

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


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

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

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

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

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

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

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

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

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

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