Программирование STM8
Re: Программирование STM8
a5021, спасибо, включение тактирования AWU помогло. Регистр стал записываться!! Причём, сначала его нужно сбросить, а потом записать в нужное состояние. Бипер заработал.
Re: Программирование STM8
У меня с этим бипером другой феномен -- работает без всякого шаманства с флешем и переопределением альтернативных функций, хотя вроде не должен. Так и не разобрался с этим. Работает, ну и хорошо.
Re: Программирование STM8
Уже несколько недель пытаюсь разобраться с данным микроконтроллером, но пока что всё безуспешно.
Может кто подсказать, как подключить к ней что-нибудь( моторчик, или еще один диод...) в простейшем случае.
Нашел в инете много на эту тему, но опыта работы с микроконтроллерами нет вообще. Я всего-лишь программист:(
Если можно -самый простой пример. Допустим моторчик, один контакт - к 32-му порту, второй - к 48-ому.
И какой будет минимальный код на IAR-е, чтобы он закрутился. Буду очень благодарен!
Может кто подсказать, как подключить к ней что-нибудь( моторчик, или еще один диод...) в простейшем случае.
Нашел в инете много на эту тему, но опыта работы с микроконтроллерами нет вообще. Я всего-лишь программист:(
Если можно -самый простой пример. Допустим моторчик, один контакт - к 32-му порту, второй - к 48-ому.
И какой будет минимальный код на IAR-е, чтобы он закрутился. Буду очень благодарен!
Re: Программирование STM8
Вы задаете вопрос о подключение моторчика к сферическому МК в вакууме. Для программиста такая постановка вопроса не характерна.
-
The_D
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Пт июл 06, 2012 14:28:17
- Откуда: Россия. г.Смоленск
Re: Программирование STM8
Почему? Как раз таки для программиста вполне характерно. Виртуальный моторчик и методы работы с ним на виртуальном МК. Всякая фигня типа мощности, напряжения питания и прочая не существенны. Мы же программируем интерфейс!
Re: Программирование STM8
В принципе, да! Тогда вот этот код будет точно работать. 
===
motor->run(FORWARD);
motor->run(BACKWARD);
motor->brake();
motor->stop();
===
И скажите, что нет еще.
===
motor->run(FORWARD);
motor->run(BACKWARD);
motor->brake();
motor->stop();
===
И скажите, что нет еще.
Re: Программирование STM8
Даже на этом сайте есть схемы на СТМ-8, например, не для рекламы, моя первая работа с этим контроллером http://radiokot.ru/circuit/digital/measure/87/
Re: Программирование STM8
И добротная работа, надо заметить. Я про нее впервые узнал вообще на стороннем ресурсе, т.ч. можно сказать, что вас активно цитируют. 
Re: Программирование STM8
Коллеги! Расшарьте пожалуйста STVD и STVP, если у кого есть.
На ST проблемы с серваком - скачать их там не получается crying.gif
На ST проблемы с серваком - скачать их там не получается crying.gif
- Panda_Y2K
- Грызет канифоль
- Сообщения: 258
- Зарегистрирован: Пт сен 23, 2011 06:44:41
- Откуда: ЮФО
- Контактная информация:
Re: Программирование STM8
Посмотрите плз. где туплю???
Счетчик считает, флаг прерывания ставится, в прерывание не попадаю.
Через какое-то время перезагружается.
Прерывания от таймера разрешил
stm8_interrupt_vector.c
main.c
Счетчик считает, флаг прерывания ставится, в прерывание не попадаю.
Через какое-то время перезагружается.
Прерывания от таймера разрешил
stm8_interrupt_vector.c
Спойлер
Код: Выделить всё
/* BASIC INTERRUPT VECTOR TABLE FOR STM8 devices
* Copyright (c) 2007 STMicroelectronics
*/
typedef void @far (*interrupt_handler_t)(void);
struct interrupt_vector {
unsigned char interrupt_instruction;
interrupt_handler_t interrupt_handler;
};
@far @interrupt void NonHandledInterrupt (void)
{
/* in order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction
*/
return;
}
extern void _stext(); /* startup routine */
//extern @far @interrupt void TIM4_IRQ_handler (void);
extern @far @interrupt void TIM4_IRQ_handler(void);
struct interrupt_vector const _vectab[] = {
{0x82, (interrupt_handler_t)_stext}, /* reset */
{0x82, NonHandledInterrupt}, /* trap */
{0x82, NonHandledInterrupt}, /* irq0 */
{0x82, NonHandledInterrupt}, /* irq1 */
{0x82, NonHandledInterrupt}, /* irq2 */
{0x82, NonHandledInterrupt}, /* irq3 */
{0x82, NonHandledInterrupt}, /* irq4 */
{0x82, NonHandledInterrupt}, /* irq5 */
{0x82, NonHandledInterrupt}, /* irq6 */
{0x82, NonHandledInterrupt}, /* irq7 */
{0x82, NonHandledInterrupt}, /* irq8 */
{0x82, NonHandledInterrupt}, /* irq9 */
{0x82, NonHandledInterrupt}, /* irq10 */
{0x82, NonHandledInterrupt}, /* irq11 */
{0x82, NonHandledInterrupt}, /* irq12 */
{0x82, NonHandledInterrupt}, /* irq13 */
{0x82, NonHandledInterrupt}, /* irq14 */
{0x82, NonHandledInterrupt}, /* irq15 */
{0x82, NonHandledInterrupt}, /* irq16 */
{0x82, NonHandledInterrupt}, /* irq17 */
{0x82, NonHandledInterrupt}, /* irq18 */
{0x82, NonHandledInterrupt}, /* irq19 */
{0x82, NonHandledInterrupt}, /* irq20 */
{0x82, NonHandledInterrupt}, /* irq21 */
{0x82, NonHandledInterrupt}, /* irq22 */
//{0x82, NonHandledInterrupt}, /* irq23 */
{0x82, TIM4_IRQ_handler}, /* irq23 - tim4*/
{0x82, NonHandledInterrupt}, /* irq24 */
{0x82, NonHandledInterrupt}, /* irq25 */
{0x82, NonHandledInterrupt}, /* irq26 */
{0x82, NonHandledInterrupt}, /* irq27 */
{0x82, NonHandledInterrupt}, /* irq28 */
{0x82, NonHandledInterrupt}, /* irq29 */
};main.c
Спойлер
Код: Выделить всё
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include <iostm8s105.h>
unsigned int i;
@far @interrupt void TIM4_IRQ_handler(void)
{
TIM4_SR=~TIM4_SR;
if (PD_ODR == 0)
PD_ODR = 0xFF;
else PD_ODR = 0x00;
TIM4_SR = 0x00;
return;
}
main()
{
PD_DDR = 0xff; //all line for out
PD_CR1 = 0x01;
PD_CR2 = 0x01;
PD_ODR = 0x00;
//********************TIM4- init**********************
//TIM4 control register
//ARPE - Autoreload preload register 0
//reserved
//reserved
//reserved
//OPM - One pulse mode 0
//URS - Update request Source 1
//UDIS - Update disable 0
//CEN - Counter enabled 1
TIM4_CR1 = 0x05;
//TIM4_IER interrupt enable register
//reserved
//reserved
//reserved
//reserved
//reserved
//reserved
//reserved
//UIE - update interrupt enable
TIM4_IER = 0x01;
//clear counter register
TIM4_CNTR = 0x00;
//TIM4_PSCR - prescaler register
//reserved
//reserved
//reserved
//reserved
//reserved
//PSC2
//PSC1
//PSC0
TIM4_PSCR = 0x00; //no prescaling
//TIM4_ARR - autoreload register
TIM4_ARR = 0x15;
//clear interrupt flag
TIM4_SR = 0;
while (1)
{
i = 0xFFFF;
while(i) {
i--;};
//PD_ODR = 0x00;
// i = 0xFFFF;
//while(i) {i--;};
// PD_ODR = 0xFF;
};
}
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
может надо добавить (interrupt_handler_t), так работало:
Код: Выделить всё
.....
{0x82, NonHandledInterrupt}, /* irq12 */
{0x82, (interrupt_handler_t)TIM2_UPD}, /* irq13 */
{0x82, NonHandledInterrupt}, /* irq14 */
.....- Panda_Y2K
- Грызет канифоль
- Сообщения: 258
- Зарегистрирован: Пт сен 23, 2011 06:44:41
- Откуда: ЮФО
- Контактная информация:
Re: Программирование STM8
Неа, не пашет.
Уже задолбался. Может еще что то в проекте ставить нужно для разрешения прерываний?
Уже задолбался. Может еще что то в проекте ставить нужно для разрешения прерываний?
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Программирование STM8
А пошаговая отладка что показывает? Адрес обработчика точно прописан в таблице векторов? Кажется мне что где-то промахнулся с адресами и векторами, и последующая перезагрузка говорит именно об этом.
- Panda_Y2K
- Грызет канифоль
- Сообщения: 258
- Зарегистрирован: Пт сен 23, 2011 06:44:41
- Откуда: ЮФО
- Контактная информация:
Re: Программирование STM8
как то так

- Вложения
-
- stm_vect.jpg
- (241.77 КБ) 1242 скачивания
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
- Panda_Y2K
- Грызет канифоль
- Сообщения: 258
- Зарегистрирован: Пт сен 23, 2011 06:44:41
- Откуда: ЮФО
- Контактная информация:
Re: Программирование STM8
Все, победил. Думаю же должно же быть еще что то вроде #asm sei 
#asm
rim
#endasm
#asm
rim
#endasm
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Re: Программирование STM8
Я как-то напоролся на интересный момент при инициализации прерываний.
Сейчас рабочий фрагмент кода в main такой (IAR):
Но когда размещал __enable_interrupt(); в конце init_irq();, что в принципе логично, то прерывания не включались.
Чудеса.
Сейчас рабочий фрагмент кода в main такой (IAR):
Код: Выделить всё
...
init_lcd();
init_irq();
__enable_interrupt();
...
Но когда размещал __enable_interrupt(); в конце init_irq();, что в принципе логично, то прерывания не включались.
Чудеса.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Программирование STM8
Вероятно, никаких чудес. Перед инициализацией прерываний вероятно сохраняется состояние прерываний и прерывания принудительно гасятся чтобы во время настройки ничто не помешало даже если вызвать процедуру посреди работающего кода, а перед выходом состояние восстанавливается в том виде как было на входе - т.е. прерывания запрещены. Попробуйте пройтись отладчиком внимательно наблюдая за признаком разрешения прерываний.
-
pcb
- Опытный кот
- Сообщения: 833
- Зарегистрирован: Пт авг 12, 2011 09:14:27
- Откуда: Млечный путь/Земля/РФ/Екатеринбург
Re: Программирование STM8
а есть компилер C для stm8? *ну вы поняли*
хочу несколько проектов сравнить скорость/размер на AVR8/STM8
а то assembler навивает грусть-тоску
хочу несколько проектов сравнить скорость/размер на AVR8/STM8
а то assembler навивает грусть-тоску
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
- Panda_Y2K
- Грызет канифоль
- Сообщения: 258
- Зарегистрирован: Пт сен 23, 2011 06:44:41
- Откуда: ЮФО
- Контактная информация:
Re: Программирование STM8
Ну Cosmic и кто то уже даже сравнивал, по моему на easyelectronix
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
-
pcb
- Опытный кот
- Сообщения: 833
- Зарегистрирован: Пт авг 12, 2011 09:14:27
- Откуда: Млечный путь/Земля/РФ/Екатеринбург
Re: Программирование STM8
лучше ссылку на сравнение.
Я в инетах видал примерно такое:
АВР 350 Дмипс
СТМ 439 Дмипс
Но дристоны от жизни сильно оторваны )
Я в инетах видал примерно такое:
АВР 350 Дмипс
СТМ 439 Дмипс
Но дристоны от жизни сильно оторваны )
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ