Страница 64 из 130

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

Добавлено: Пт мар 18, 2016 07:30:49
axillent
Буду признателен за примеры кода по работе на stm8s103f3 с uart, bmp085, dht22, ADC

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

Добавлено: Пт мар 18, 2016 09:27:40
polyester
oleg110592 писал(а): Похоже, с выходом новых микроконтроллеров, наконец таки прошло время создавать конструкции "стоя и в гамаке"...
Хорошо что еще остались такие увлеченные и активные люди :)) Значит еще не все потеряно. Вот еще бы с таким же энтузиазмом не буржуйские изделия осваивали а свои собственные. А то "завтра" отключат буржуляндию и....... Но своих собственных или нет или все для войны и для победы, правда над кем не понятно :dont_know: Всем позитива. И если у вас что-то получается с STM8-32-... выкладывайте примеры, найденные грабли и тд. Просвещайте народ так сказать. Глядишь и народ потянется, вырастет количество примеров и конструкций, а то и ранее и сейчас с этим на STM-ах напряженка.

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

Добавлено: Пт мар 18, 2016 11:49:48
oleg110592
На примере темы тутошной AVR видно что выкладывание примеров, видеоуроков, писание книжек, плюс глубокомысленные изречения местных гуру до добра не доведут, до цугундера точно доведут :) . Уж лучше даташит, да его вечный спутник референс мануал, чтоб не растекаться мыслью по древу...

Код для работы TIM1 в качестве энкодера вначале, чтоб не изобретать велосипед, поискал готовый и нашел у японца:
http://stm8sdatasheet.web.fc2.com/STVD- ... CODER.html
там еще и uart задействован...
Но этот код с использованием SPL, выдрал из ненужной мне SPL кода работу напрямую с регистрами, кому надо тоже может проделать - хорошая разминка для мозгов, заодно и документация лучше осваяется.

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

Добавлено: Пн мар 21, 2016 10:21:53
axillent
помогите с сайтом st разобраться
вот открываю страничку с пакетом примеров https://my2.st.com/content/my_st_com/en ... are-scroll
там есть раздел GET SOFTWARE
по логике там должна быть возможность загрузить примеры
но у меня нет никаких линков

что я делаю не так?

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

Добавлено: Чт мар 24, 2016 08:31:14
axillent
получилось скачать

вопрос
у STM8S есть машинные команды для арифметических операций с 2х и 4х байтными значениями?
спрашиваю чтобы понять - порядок байт big indian в IAR это особенность компилятора IAR или особенность именно микроконтроллера

В документации IAR написано, что порядок байт можно поменять использую #pragma
однако если это сделать в простой программе то она перестает работать

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

Добавлено: Чт мар 24, 2016 11:29:21
GARMIN
У STM8S порядок байтов big endian и ИМХО не изменяется. Команды сложения и вычитания двухбайтовых чисел точно есть. Также есть команда умножения однобайтовых чисел с двухбайтовым результатом.

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

Добавлено: Чт мар 24, 2016 12:14:26
axillent
спасибо
значит использование pragma в IAR для изменения порядка ни к чему хорошему не приведет и буду тогда ручками при приеме.передачи переворачивать

еще вопрос
как указать компилятору, чтобы он константы не пихал в RAM?
или достаточно указать const?

чтобы поместил в eeprom надо писать атрибут?
типа так?

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

__eeprom int a;

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

Добавлено: Чт мар 24, 2016 13:05:23
oleg110592
const да
еепром имхо так удобнее:
http://radiokot.ru/forum/viewtopic.php? ... 6#p2691126

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

Добавлено: Чт мар 24, 2016 13:47:31
axillent
Спасибо! Заработало
У меня правда не 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

Добавлено: Чт мар 24, 2016 14:21:19
a5021
axillent писал(а):значит использование pragma в IAR для изменения порядка ни к чему хорошему не приведет и буду тогда ручками при приеме.передачи переворачивать
Интересно, а можно ли включить эту прагму локально, когда область ее действия будет ограничена, скажем, одним программным блоком? Получится таким образом раскладывать входящий поток двухбайтовых значений в правильном порядке? Например, вытаскивая калибровочные данные из того же BMP180, приходится вручную переставлять байты, а так бы это можно было свалить на компилятор.

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

Добавлено: Чт мар 24, 2016 15:21:51
scorpi_0n
axillent писал(а): в поисковике ничего найти на этот счет не могу, похоже никто не разобрался как __eeprom использовать или я плохо искал?
Плохо искали. На казусе пару раз точно разжёвывали. Да и на изи вам уже ответили.

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

Добавлено: Чт мар 24, 2016 15:23:09
scorpi_0n
a5021 писал(а): Интересно, а можно ли включить эту прагму локально, когда область ее действия будет ограничена, скажем, одним программным блоком?
Можно.

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

Добавлено: Чт мар 24, 2016 15:37:33
a5021
Надо будет на досуге попробовать. Правда не понятно, что будет происходить с локальными переменными длиной больше одного байта внутри этого блока, случись их там использовать. Типа, счетчиков цикла, указателей и пр.

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

Добавлено: Чт мар 24, 2016 16:04:30
axillent
Для bmp180 это не особо то и нужно, там вме равно логика расчета по байтам
Если конечно там так же как с bmp085
С bmp085 у меня проблем не возникло

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

Добавлено: Чт мар 24, 2016 16:30:34
oleg110592
axillent писал(а):У меня правда не SPL...
нету там SPL - просто хидер не иаровский а от производителя - "stm8s.h", мне он кажется удобнее. Тут уже была полемика про иаровские хидеры - но микроэлектронный мир оказывается вовсю избавляется от такого подхода в названиях регистров и битов:
http://processors.wiki.ti.com/index.php ... SP432CMSIS

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

Добавлено: Чт мар 24, 2016 16:33:58
a5021
axillent писал(а):Для bmp180 это не особо то и нужно, там вме равно логика расчета по байтам
Если конечно там так же как с bmp085
С bmp085 у меня проблем не возникло
В EEPROM-е BMP085/BMP180 одиннадцать двухбайтовых констант (знаковое и беззнаковое целое, а никакие не байты), где порядок следования младших и старших половинок обратный, если сравнивать его с порядком следования байт в МК. Есть тут проблема или нет -- вопрос другой, но вытянув эти значения из датчика, байты приходится менять местами вручную. Если заюзать на этом участке кода соответствующую прагму, то можно попробовать спихнуть это занятие на компилятор.

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

Добавлено: Чт мар 24, 2016 17:15:00
axillent
a5021 писал(а): В EEPROM-е BMP085/BMP180 одиннадцать двухбайтовых констант
в моей библиотеке одна функция по чтению двухбайтного числа, логика вся там в одном месте
обмен по I2C все равно байтами, а уж в каком порядке байты укладывать без разницы - их по любому укладывать
в этой части мне даже не пришлось переделывать код после AVR, хоть там и порядок другой
конструкции типа ниже работают в любом случае верно:

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

word = b0 | (b1 << 8);

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

Добавлено: Чт мар 24, 2016 17:19:18
axillent
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

Добавлено: Чт мар 24, 2016 17:53:44
scorpi_0n
Сказано же было, поиском!
kazus.ru/forums/showthread.php?t=14204&page=37

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

Добавлено: Чт мар 24, 2016 17:55:31
axillent
scorpi_0n нервы берегите
в моем последнем сообщении нет вопросов