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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

так то же самое можно и в одном файле. Покажите текст, пока не оч понятно, в чем проблема.
Реклама
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт дек 23, 2010 00:12:10

Сообщение virusss »

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

;выключение питания АЦП
ADC_PWR_OFF MACRO
	bres ADC_CR1,#0
	MEND
	
	#ifidn __STM8S105k__
	#include "ADC1.inc"
	#endif ; __STM8S105k__

	#ifidn __STM8S103f__
	#include "ADC2.inc"
	#endif ; __STM8S103f__

EOF
Вот так получилось. Приходится использовать внешние файлы. Если вместо #include вставить текст макросов то остальное игнорируется компилятором.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Может нужно #ifdef ?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

дык это, показывайте то, что не работает, а не то, что работает.
и да, зачем вам #ifidn?
ЗЫ а, это ассемблер. Сказали бы сразу)
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт дек 23, 2010 00:12:10

Сообщение virusss »

Всё, разобрался. #ifdef не работает почему-то, #ifidn всё работает в одном файле.
Так компилируется:

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

;выключение питания АЦП
ADC_PWR_OFF MACRO
	bres ADC_CR1,#0
	MEND
	
	#ifidn __STM8S105k__
ADC_CH MACRO CH
;порт на вход
	bres PB_DDR,#CH
;выбор канала
	mov ADC_CSR,#CH
	MEND
	#endif ; __STM8S105k__
так не получается:

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

;выключение питания АЦП
ADC_PWR_OFF MACRO
	bres ADC_CR1,#0
	MEND
	
	#ifdef __STM8S105k__
ADC_CH MACRO CH
;порт на вход
	bres PB_DDR,#CH
;выбор канала
	mov ADC_CSR,#CH
	MEND
	#endif ; __STM8S105k__
Реклама
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

чот странное. Должно быть наоборот.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

virusss, ассемблер родной ? А стоит ли? От Cosmic даже АСМ лучше...
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт дек 23, 2010 00:12:10

Сообщение virusss »

Где найти информацию на русском по ассемблеру от Cosmic?
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Занятие эмбеддом, подразумевает однозначное знание языка.
Тем более что вы избрали тернистый путь одиночки - кодинга на асме чипа, имеющего массу примеров на С ,с архитектурой под С заточенную.
К тому же практически все переводное полная чушь.
Грызет канифоль
Сообщения: 264
Зарегистрирован: Пн июн 05, 2017 10:27:45

Сообщение MAX 10092012 »

Подскажите есть ли разница stm8s003f3p6 или stm8s103f3p6 ,у меня прошивка под stm8s003f3p6 ,а имею
stm8s103f3p6 ,писать прошивки или редактировать не умею.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Глянул ДШ.
Сразу бросилась в глаза разница в меньшем количестве ЕЕПРОМ и отсутствие уникального номера у 003.
Других отличий не заметил (не значит что их нет), но по всей видимости прошивка будет работать на 103. Можно ж просто попробовать на свой страх и риск, если устройство позволяет такие эксперименты.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

разница не сильно большая, вроде только размер EEPROM-а и живучесть флеша. По бытующей легенде, кристаллы S003 - отбраковка групповых партий S103
Встал на лапы
Сообщения: 102
Зарегистрирован: Вт июл 10, 2012 14:13:34
Откуда: Харьков

Сообщение krox »

Уважаемые гуру, есть у меня зарядное устройство с микроконтроллером, надпись на корпусе 324GK_C1D03. Корпус TSSOP 20. Погуглив 324GK datasheet - получил, что это STM8S. Так-ли это? Нужно считать и записать прошивку зарядного устройства. Возле контроллера есть внешний разъем на 3 пина.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

В том же ДШ поглядите что должно быть написано на корпусе чипа и вроде такого не должно быть :dont_know: . Для программирования STM8S используются выводы RESET и SWIM. Поглядите куда подключены пины разъема. Заводская прошивка наверняка залочена.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Тем, для кого документация на английском по STM8 мало употребима, возможно есть смысл полистать нижеуказанную книжку. Она хоть и содержит просто адское количество опечаток и грамматических ошибок, но все же кое-что полезное из нее выудить возможно.

https://dfiles.ru/files/67qp9qs7n

Изображение
Вложения
2018-02-03_212500.jpg
(58.27 КБ) 3110 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Очередной гугло-перевод RM.
К ляпам оригинала добавилась отсебятина "переводчика"
Однозначно в топку.
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср мар 02, 2011 07:47:39
Откуда: Уфа

Сообщение Psych »

Никто не сталкивался:
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо. Такое очучение что прескейлер не пашет сразу.

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

TIM2_PSCR_PSC=15;
TIM2_ARRH=0x05;
TIM2_ARRL=0xff;  //-------около 5 секунд
TIM2_CR1_ARPE=1;
TIM2_IER_UIE=1;
TIM2_SR1_UIF=0;
   
   __enable_interrupt();

TIM2_CR1_CEN=1; 

#pragma vector=TIM2_OVR_UIF_vector
__interrupt void TIM2(void)
{
  TIM2_SR1_UIF=0;
  __no_operation();
}
Это потрясающе бесит :evil:
Грызет канифоль
Аватара пользователя
Сообщения: 250
Зарегистрирован: Ср янв 17, 2018 13:09:14

Сообщение AndyBig »

А по какому флагу происходит прерывание?
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Если попробовать вот так?

TIM2_PSCR_PSC=15;
TIM2_ARRH=0x05;
TIM2_ARRL=0xff; //-------около 5 секунд
TIM2_CR1_ARPE=1;
TIM2_IER_UIE=1;
TIM2_EGR=1;
TIM2_SR1_UIF=0;

Добавлено after 2 minutes 37 seconds:
Конечно стоит еще пошагово пройтись, ошибки в описании регистров бывают к сожалению.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="Psych",url="/forum/viewtopic.php?p=3304159#p3304159"]Никто не сталкивался:
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо.[/uquote]

Новое значение в прескалер заносится по факту наступления Update Event, а не когда выполняется присваивание TIM2_PSCR_PSC=15. Для активизации значения, занесенного в TIM2_PSCR_PSC необходимо сгенерировать событие обновления. Сделать это можно, определив "универсальный" макрос для любого таймера:

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


#define TIM4_SR1                TIM4_SR          
#define RESET_TIMER(T)          T##_CR1_URS = 1;\
                                T##_EGR_UG  = 1;\
                                T##_SR1     = 0;\
                                T##_CR1_URS = 0

и затем вызвав его в вашем случае так:

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

RESET_TIMER(TIM2)
Ответить

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