Программирование STM8
Re: Программирование STM8
Буду признателен за примеры кода по работе на stm8s103f3 с uart, bmp085, dht22, ADC
-
polyester
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Пн май 02, 2011 20:17:19
- Откуда: Средняя Волга
Re: Программирование STM8
oleg110592 писал(а):Похоже, с выходом новых микроконтроллеров, наконец таки прошло время создавать конструкции "стоя и в гамаке"...
Хорошо что еще остались такие увлеченные и активные люди
Всем позитива. И если у вас что-то получается с STM8-32-... выкладывайте примеры, найденные грабли и тд. Просвещайте народ так сказать. Глядишь и народ потянется, вырастет количество примеров и конструкций, а то и ранее и сейчас с этим на STM-ах напряженка.- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
На примере темы тутошной AVR видно что выкладывание примеров, видеоуроков, писание книжек, плюс глубокомысленные изречения местных гуру до добра не доведут, до цугундера точно доведут
. Уж лучше даташит, да его вечный спутник референс мануал, чтоб не растекаться мыслью по древу...
Код для работы TIM1 в качестве энкодера вначале, чтоб не изобретать велосипед, поискал готовый и нашел у японца:
http://stm8sdatasheet.web.fc2.com/STVD- ... CODER.html
там еще и uart задействован...
Но этот код с использованием SPL, выдрал из ненужной мне SPL кода работу напрямую с регистрами, кому надо тоже может проделать - хорошая разминка для мозгов, заодно и документация лучше осваяется.
Код для работы TIM1 в качестве энкодера вначале, чтоб не изобретать велосипед, поискал готовый и нашел у японца:
http://stm8sdatasheet.web.fc2.com/STVD- ... CODER.html
там еще и uart задействован...
Но этот код с использованием SPL, выдрал из ненужной мне SPL кода работу напрямую с регистрами, кому надо тоже может проделать - хорошая разминка для мозгов, заодно и документация лучше осваяется.
Re: Программирование STM8
помогите с сайтом st разобраться
вот открываю страничку с пакетом примеров https://my2.st.com/content/my_st_com/en ... are-scroll
там есть раздел GET SOFTWARE
по логике там должна быть возможность загрузить примеры
но у меня нет никаких линков
что я делаю не так?
вот открываю страничку с пакетом примеров https://my2.st.com/content/my_st_com/en ... are-scroll
там есть раздел GET SOFTWARE
по логике там должна быть возможность загрузить примеры
но у меня нет никаких линков
что я делаю не так?
Re: Программирование STM8
получилось скачать
вопрос
у STM8S есть машинные команды для арифметических операций с 2х и 4х байтными значениями?
спрашиваю чтобы понять - порядок байт big indian в IAR это особенность компилятора IAR или особенность именно микроконтроллера
В документации IAR написано, что порядок байт можно поменять использую #pragma
однако если это сделать в простой программе то она перестает работать
вопрос
у STM8S есть машинные команды для арифметических операций с 2х и 4х байтными значениями?
спрашиваю чтобы понять - порядок байт big indian в IAR это особенность компилятора IAR или особенность именно микроконтроллера
В документации IAR написано, что порядок байт можно поменять использую #pragma
однако если это сделать в простой программе то она перестает работать
- GARMIN
- Держит паяльник хвостом
- Сообщения: 953
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Программирование STM8
У STM8S порядок байтов big endian и ИМХО не изменяется. Команды сложения и вычитания двухбайтовых чисел точно есть. Также есть команда умножения однобайтовых чисел с двухбайтовым результатом.
Re: Программирование STM8
спасибо
значит использование pragma в IAR для изменения порядка ни к чему хорошему не приведет и буду тогда ручками при приеме.передачи переворачивать
еще вопрос
как указать компилятору, чтобы он константы не пихал в RAM?
или достаточно указать const?
чтобы поместил в eeprom надо писать атрибут?
типа так?
значит использование pragma в IAR для изменения порядка ни к чему хорошему не приведет и буду тогда ручками при приеме.передачи переворачивать
еще вопрос
как указать компилятору, чтобы он константы не пихал в RAM?
или достаточно указать const?
чтобы поместил в eeprom надо писать атрибут?
типа так?
Код: Выделить всё
__eeprom int a;- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
Спасибо! Заработало
У меня правда не SPL, поэтому немного переписал:
а флаг EOP не нужно проверять? Он у меня почему-то остается в нуле
если я правильно понял то использование __eeprom сильно удобнее. Можно размещать много переменных и они автоматически разместятся в отличии от location который нужно руками контролировать
во вторых __eeprom позволяет инициализировать переменные в eeprom.
в третьих (если верно понял) операция записи становится с точки зрения Си такой же точно как при работе с RAM
но вот только не могу найти описание. Линкер ругается на отсутствие опимсания трех спец функций которые нужно описать
документация отсылает к прототипам в файле stm8/src/lib/eeprom_util.c
у меня этого файла нет, в этой папке есть архив EWSTM8-library-source.exe
возможно файл в архиве, но архив запаролен
в поисковике ничего найти на этот счет не могу, похоже никто не разобрался как __eeprom использовать или я плохо искал?
У меня правда не SPL, поэтому немного переписал:
Код: Выделить всё
FLASH_DUKR = 0xAE;
FLASH_DUKR = 0x56;
while (!FLASH_IAPSR_DUL);
photo.max = max;
//while (!FLASH_IAPSR_EOP);
FLASH_IAPSR_DUL = 0; //EEPROM lock
а флаг EOP не нужно проверять? Он у меня почему-то остается в нуле
если я правильно понял то использование __eeprom сильно удобнее. Можно размещать много переменных и они автоматически разместятся в отличии от location который нужно руками контролировать
во вторых __eeprom позволяет инициализировать переменные в eeprom.
в третьих (если верно понял) операция записи становится с точки зрения Си такой же точно как при работе с RAM
но вот только не могу найти описание. Линкер ругается на отсутствие опимсания трех спец функций которые нужно описать
документация отсылает к прототипам в файле stm8/src/lib/eeprom_util.c
у меня этого файла нет, в этой папке есть архив EWSTM8-library-source.exe
возможно файл в архиве, но архив запаролен
в поисковике ничего найти на этот счет не могу, похоже никто не разобрался как __eeprom использовать или я плохо искал?
Re: Программирование STM8
axillent писал(а):значит использование pragma в IAR для изменения порядка ни к чему хорошему не приведет и буду тогда ручками при приеме.передачи переворачивать
Интересно, а можно ли включить эту прагму локально, когда область ее действия будет ограничена, скажем, одним программным блоком? Получится таким образом раскладывать входящий поток двухбайтовых значений в правильном порядке? Например, вытаскивая калибровочные данные из того же BMP180, приходится вручную переставлять байты, а так бы это можно было свалить на компилятор.
Re: Программирование STM8
axillent писал(а):в поисковике ничего найти на этот счет не могу, похоже никто не разобрался как __eeprom использовать или я плохо искал?
Плохо искали. На казусе пару раз точно разжёвывали. Да и на изи вам уже ответили.
Re: Программирование STM8
a5021 писал(а):Интересно, а можно ли включить эту прагму локально, когда область ее действия будет ограничена, скажем, одним программным блоком?
Можно.
Re: Программирование STM8
Надо будет на досуге попробовать. Правда не понятно, что будет происходить с локальными переменными длиной больше одного байта внутри этого блока, случись их там использовать. Типа, счетчиков цикла, указателей и пр.
Re: Программирование STM8
Для bmp180 это не особо то и нужно, там вме равно логика расчета по байтам
Если конечно там так же как с bmp085
С bmp085 у меня проблем не возникло
Если конечно там так же как с bmp085
С bmp085 у меня проблем не возникло
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
axillent писал(а):У меня правда не SPL...
нету там SPL - просто хидер не иаровский а от производителя - "stm8s.h", мне он кажется удобнее. Тут уже была полемика про иаровские хидеры - но микроэлектронный мир оказывается вовсю избавляется от такого подхода в названиях регистров и битов:
http://processors.wiki.ti.com/index.php ... SP432CMSIS
Re: Программирование STM8
axillent писал(а):Для bmp180 это не особо то и нужно, там вме равно логика расчета по байтам
Если конечно там так же как с bmp085
С bmp085 у меня проблем не возникло
В EEPROM-е BMP085/BMP180 одиннадцать двухбайтовых констант (знаковое и беззнаковое целое, а никакие не байты), где порядок следования младших и старших половинок обратный, если сравнивать его с порядком следования байт в МК. Есть тут проблема или нет -- вопрос другой, но вытянув эти значения из датчика, байты приходится менять местами вручную. Если заюзать на этом участке кода соответствующую прагму, то можно попробовать спихнуть это занятие на компилятор.
Re: Программирование STM8
a5021 писал(а):В EEPROM-е BMP085/BMP180 одиннадцать двухбайтовых констант
в моей библиотеке одна функция по чтению двухбайтного числа, логика вся там в одном месте
обмен по I2C все равно байтами, а уж в каком порядке байты укладывать без разницы - их по любому укладывать
в этой части мне даже не пришлось переделывать код после AVR, хоть там и порядок другой
конструкции типа ниже работают в любом случае верно:
Код: Выделить всё
word = b0 | (b1 << 8);Re: Программирование STM8
oleg110592 писал(а):нету там SPL - просто хидер не иаровский а от производителя - "stm8s.h", мне он кажется удобнее
понял
кстати выпрашиваемые мной прототипы такие:
Код: Выделить всё
int __eeprom_wait_for_last_operation(void);
void __eeprom_program_byte(unsigned char __near * dst, unsigned char v);
void __eeprom_program_long(unsigned char __near * dst, unsigned long v);
если эти функции описать то работать с EEPROM в IAR становится поще некуда используя атрибут __eeprom
Re: Программирование STM8
Сказано же было, поиском!
kazus.ru/forums/showthread.php?t=14204&page=37
kazus.ru/forums/showthread.php?t=14204&page=37
Последний раз редактировалось scorpi_0n Чт мар 24, 2016 17:55:43, всего редактировалось 1 раз.
Re: Программирование STM8
scorpi_0n нервы берегите
в моем последнем сообщении нет вопросов
в моем последнем сообщении нет вопросов