Программирование STM8
так то же самое можно и в одном файле. Покажите текст, пока не оч понятно, в чем проблема.
- Реклама
- Сообщения: 24
- Зарегистрирован: Чт дек 23, 2010 00:12:10
Код: Выделить всё
;выключение питания АЦП
ADC_PWR_OFF MACRO
bres ADC_CR1,#0
MEND
#ifidn __STM8S105k__
#include "ADC1.inc"
#endif ; __STM8S105k__
#ifidn __STM8S103f__
#include "ADC2.inc"
#endif ; __STM8S103f__
EOFМожет нужно #ifdef ?
дык это, показывайте то, что не работает, а не то, что работает.
и да, зачем вам #ifidn?
ЗЫ а, это ассемблер. Сказали бы сразу)
и да, зачем вам #ifidn?
ЗЫ а, это ассемблер. Сказали бы сразу)
- Сообщения: 24
- Зарегистрирован: Чт дек 23, 2010 00:12:10
Всё, разобрался. #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__
- Реклама
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
- Сообщения: 24
- Зарегистрирован: Чт дек 23, 2010 00:12:10
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Занятие эмбеддом, подразумевает однозначное знание языка.
Тем более что вы избрали тернистый путь одиночки - кодинга на асме чипа, имеющего массу примеров на С ,с архитектурой под С заточенную.
К тому же практически все переводное полная чушь.
Тем более что вы избрали тернистый путь одиночки - кодинга на асме чипа, имеющего массу примеров на С ,с архитектурой под С заточенную.
К тому же практически все переводное полная чушь.
- Сообщения: 264
- Зарегистрирован: Пн июн 05, 2017 10:27:45
Подскажите есть ли разница stm8s003f3p6 или stm8s103f3p6 ,у меня прошивка под stm8s003f3p6 ,а имею
stm8s103f3p6 ,писать прошивки или редактировать не умею.
stm8s103f3p6 ,писать прошивки или редактировать не умею.
Глянул ДШ.
Сразу бросилась в глаза разница в меньшем количестве ЕЕПРОМ и отсутствие уникального номера у 003.
Других отличий не заметил (не значит что их нет), но по всей видимости прошивка будет работать на 103. Можно ж просто попробовать на свой страх и риск, если устройство позволяет такие эксперименты.
Сразу бросилась в глаза разница в меньшем количестве ЕЕПРОМ и отсутствие уникального номера у 003.
Других отличий не заметил (не значит что их нет), но по всей видимости прошивка будет работать на 103. Можно ж просто попробовать на свой страх и риск, если устройство позволяет такие эксперименты.
разница не сильно большая, вроде только размер EEPROM-а и живучесть флеша. По бытующей легенде, кристаллы S003 - отбраковка групповых партий S103
Уважаемые гуру, есть у меня зарядное устройство с микроконтроллером, надпись на корпусе 324GK_C1D03. Корпус TSSOP 20. Погуглив 324GK datasheet - получил, что это STM8S. Так-ли это? Нужно считать и записать прошивку зарядного устройства. Возле контроллера есть внешний разъем на 3 пина.
В том же ДШ поглядите что должно быть написано на корпусе чипа и вроде такого не должно быть
. Для программирования STM8S используются выводы RESET и SWIM. Поглядите куда подключены пины разъема. Заводская прошивка наверняка залочена.
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Тем, для кого документация на английском по STM8 мало употребима, возможно есть смысл полистать нижеуказанную книжку. Она хоть и содержит просто адское количество опечаток и грамматических ошибок, но все же кое-что полезное из нее выудить возможно.
https://dfiles.ru/files/67qp9qs7n

https://dfiles.ru/files/67qp9qs7n
- Вложения
-
- 2018-02-03_212500.jpg
- (58.27 КБ) 3110 скачиваний
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Очередной гугло-перевод RM.
К ляпам оригинала добавилась отсебятина "переводчика"
Однозначно в топку.
К ляпам оригинала добавилась отсебятина "переводчика"
Однозначно в топку.
Никто не сталкивался:
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо. Такое очучение что прескейлер не пашет сразу.
Это потрясающе бесит 
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо. Такое очучение что прескейлер не пашет сразу.
Код: Выделить всё
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();
}- Сообщения: 250
- Зарегистрирован: Ср янв 17, 2018 13:09:14
Если попробовать вот так?
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:
Конечно стоит еще пошагово пройтись, ошибки в описании регистров бывают к сожалению.
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
[uquote="Psych",url="/forum/viewtopic.php?p=3304159#p3304159"]Никто не сталкивался:
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо.[/uquote]
Новое значение в прескалер заносится по факту наступления Update Event, а не когда выполняется присваивание TIM2_PSCR_PSC=15. Для активизации значения, занесенного в TIM2_PSCR_PSC необходимо сгенерировать событие обновления. Сделать это можно, определив "универсальный" макрос для любого таймера:
и затем вызвав его в вашем случае так:
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо.[/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)



