Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

Сообщение Serj_K »

a5021, спасибо, включение тактирования AWU помогло. Регистр стал записываться!! Причём, сначала его нужно сбросить, а потом записать в нужное состояние. Бипер заработал.
Реклама
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

У меня с этим бипером другой феномен -- работает без всякого шаманства с флешем и переопределением альтернативных функций, хотя вроде не должен. Так и не разобрался с этим. Работает, ну и хорошо.
Реклама
Родился
Сообщения: 1
Зарегистрирован: Пн дек 09, 2013 23:26:21

Сообщение Sander92 »

Уже несколько недель пытаюсь разобраться с данным микроконтроллером, но пока что всё безуспешно.
Может кто подсказать, как подключить к ней что-нибудь( моторчик, или еще один диод...) в простейшем случае.
Нашел в инете много на эту тему, но опыта работы с микроконтроллерами нет вообще. Я всего-лишь программист:(
Если можно -самый простой пример. Допустим моторчик, один контакт - к 32-му порту, второй - к 48-ому.
И какой будет минимальный код на IAR-е, чтобы он закрутился. Буду очень благодарен!
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Вы задаете вопрос о подключение моторчика к сферическому МК в вакууме. Для программиста такая постановка вопроса не характерна.
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

Сообщение The_D »

Почему? Как раз таки для программиста вполне характерно. Виртуальный моторчик и методы работы с ним на виртуальном МК. Всякая фигня типа мощности, напряжения питания и прочая не существенны. Мы же программируем интерфейс!
Реклама
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

В принципе, да! Тогда вот этот код будет точно работать. :)

===
motor->run(FORWARD);
motor->run(BACKWARD);
motor->brake();
motor->stop();
===

И скажите, что нет еще. :)
Реклама
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

Сообщение Serj_K »

Даже на этом сайте есть схемы на СТМ-8, например, не для рекламы, моя первая работа с этим контроллером http://radiokot.ru/circuit/digital/measure/87/
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

И добротная работа, надо заметить. Я про нее впервые узнал вообще на стороннем ресурсе, т.ч. можно сказать, что вас активно цитируют. :-)
Родился
Сообщения: 3
Зарегистрирован: Сб дек 21, 2013 22:21:38

Сообщение nebelnoir »

Коллеги! Расшарьте пожалуйста STVD и STVP, если у кого есть.
На ST проблемы с серваком - скачать их там не получается crying.gif
Грызет канифоль
Аватара пользователя
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО

Сообщение Panda_Y2K »

Посмотрите плз. где туплю???
Счетчик считает, флаг прерывания ставится, в прерывание не попадаю.
Через какое-то время перезагружается.
Прерывания от таймера разрешил

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 Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

может надо добавить (interrupt_handler_t), так работало:

Код: Выделить всё

.....
	{0x82, NonHandledInterrupt}, /* irq12 */
	{0x82, (interrupt_handler_t)TIM2_UPD}, /* irq13 */
	{0x82, NonHandledInterrupt}, /* irq14 */
.....
Грызет канифоль
Аватара пользователя
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО

Сообщение Panda_Y2K »

Неа, не пашет.
Уже задолбался. Может еще что то в проекте ставить нужно для разрешения прерываний?
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

А пошаговая отладка что показывает? Адрес обработчика точно прописан в таблице векторов? Кажется мне что где-то промахнулся с адресами и векторами, и последующая перезагрузка говорит именно об этом.
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО

Сообщение Panda_Y2K »

как то так
Изображение
Вложения
stm_vect.jpg
(241.77 КБ) 1247 скачиваний
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО

Сообщение Panda_Y2K »

Все, победил. Думаю же должно же быть еще что то вроде #asm sei :)
#asm
rim
#endasm
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Контактная информация:
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

Сообщение Serj_K »

Я как-то напоролся на интересный момент при инициализации прерываний.
Сейчас рабочий фрагмент кода в main такой (IAR):

Код: Выделить всё

...
init_lcd();
init_irq();

__enable_interrupt();
...
Но когда размещал __enable_interrupt(); в конце init_irq();, что в принципе логично, то прерывания не включались.
Чудеса.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Вероятно, никаких чудес. Перед инициализацией прерываний вероятно сохраняется состояние прерываний и прерывания принудительно гасятся чтобы во время настройки ничто не помешало даже если вызвать процедуру посреди работающего кода, а перед выходом состояние восстанавливается в том виде как было на входе - т.е. прерывания запрещены. Попробуйте пройтись отладчиком внимательно наблюдая за признаком разрешения прерываний.
Контактная информация:
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

а есть компилер C для stm8? *ну вы поняли*
хочу несколько проектов сравнить скорость/размер на AVR8/STM8

а то assembler навивает грусть-тоску
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Грызет канифоль
Аватара пользователя
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО

Сообщение Panda_Y2K »

Ну Cosmic и кто то уже даже сравнивал, по моему на easyelectronix
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Контактная информация:
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

лучше ссылку на сравнение.

Я в инетах видал примерно такое:
АВР 350 Дмипс
СТМ 439 Дмипс

Но дристоны от жизни сильно оторваны )
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Ответить

Вернуться в «Разные вопросы по МК»