Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 18.03.2014, 09:33  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от Uvavan Посмотреть сообщение
Я делал та:
PHP код:
#pragma location=0x1000 //Наш адрес в EEPROM/flash (в данном случае - начало еепромки)
__no_init uint8_t Step
И потом обращаешься как к обычной переменной. Ну это конечн оесли я вопрос правильно понял .
Вопрос понял неправильно. Звучало "положить".
Правильный ответ - никак. И не только в плюсах, а даже в стд (о ужас!).
Реклама:
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 18.03.2014, 10:18  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от ut1wpr Посмотреть сообщение
Правильный ответ - никак
в последнем ИАРе есть пример работы с EEPROM, ......\examples\Misc\Eeprom\ :
Код:
unsigned short __eeprom x0 = 0;        /* zero intialized at download time */
unsigned short __eeprom x1 = 42;       /* initialized to 42 at download time */
похоже сделали также как и для AVR. Не проверял.
oleg110592 вне форума  
Непрочитано 18.03.2014, 14:10  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от oleg110592 Посмотреть сообщение
в последнем ИАРе есть пример работы с EEPROM, ......\examples\Misc\Eeprom\ :
Код:
unsigned short __eeprom x0 = 0;        /* zero intialized at download time */
unsigned short __eeprom x1 = 42;       /* initialized to 42 at download time */
похоже сделали также как и для AVR. Не проверял.
Проверьте. Поделитесь результатом. Народ поблагодарит.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 18.03.2014, 14:42  
dimchik_b
Вид на жительство
 
Регистрация: 18.04.2008
Сообщений: 373
Сказал спасибо: 103
Сказали Спасибо 50 раз(а) в 40 сообщении(ях)
dimchik_b на пути к лучшему
По умолчанию Re: FAQ по STM8

Ну, мой, видимо, не последний. Потому что, во-первых, __eeprom только __no_init, во-вторых, __no_init не инициализируется. В-третьих, при попытке записать что-то __eeprom-переменную линкер ругается на отсутствие некоторых функций. В-четвертых, не будет ли short __eeprom x1 = 42; инициализировать переменную при каждом запуске?
В общем, после изучения доступного мне интернета решил делать так:
1. Пишется набор функций для работы с eeprom.
2. Пишется специальная программа, которая только и делает, что инициализирует переменные в eeprom.
3. После запуска на выполнение содержимое eeprom сливается в отдельный файл.
4. В целевой программе этот файл подгружается на этапе отладки.
Это очень криво, но ничего лучше не нашел.
dimchik_b вне форума  
Непрочитано 18.03.2014, 14:49  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от ut1wpr Посмотреть сообщение
Проверьте. Поделитесь результатом
Проверил пример, микроконтроллер STM8S003 - работает
Миниатюры:
Нажмите на изображение для увеличения
Название: test_eeprom_STM8.png
Просмотров: 85
Размер:	18.0 Кб
ID:	60936  
oleg110592 вне форума  
Непрочитано 18.03.2014, 19:39  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от oleg110592 Посмотреть сообщение
Проверил пример, микроконтроллер STM8S003 - работает
Адресное пространство для EEPROM начинается с 0x4000.
В чем производилась проверка? Сим или Дебаг?
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 18.03.2014, 19:47  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от dimchik_b Посмотреть сообщение
Ну, мой, видимо, не последний. Потому что, во-первых, __eeprom только __no_init, во-вторых, __no_init не инициализируется. В-третьих, при попытке записать что-то __eeprom-переменную линкер ругается на отсутствие некоторых функций. В-четвертых, не будет ли short __eeprom x1 = 42; инициализировать переменную при каждом запуске?
В общем, после изучения доступного мне интернета решил делать так:
1. Пишется набор функций для работы с eeprom.
2. Пишется специальная программа, которая только и делает, что инициализирует переменные в eeprom.
3. После запуска на выполнение содержимое eeprom сливается в отдельный файл.
4. В целевой программе этот файл подгружается на этапе отладки.
Это очень криво, но ничего лучше не нашел.
__no_init и в Африке остается неинициализируемой секцией.
Я делал через Ассемблерную программу (от третьего производителя). ПисАл блок данных с org 0x4000, при необходимости расставлял метки, формировал массивы (таблицы). После ассемблирования получал готовый hex, который зашивал в область еепрома при помощи stvp. В Си программе прописывал фиксированные адреса меток из ассемблерного листинга (sym-table). Тоже немного муторно, но иначе никак. И последняя версия ИАРА тоже не решает проблемы. Скорее всего у STM (IAR здесь немного ни при чем) свое видение назначения еепром-области.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 18.03.2014, 20:43  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

Что-то я уже с полчаса туплю, не могу понять, как управлять выходом таймера1 в режиме ШИМ, когда таймер отключен? Итак, я включаю таймер, он генерирует мне ШИМ. Потом я таймер отключаю, а на выходе остается последнее значение (1 или 0, смотря когда выключили). Прямая запись нуля в PC1 не дает никакого результата.
Раньше я этим не заморачивался (т.к. по фронту работал), а сейчас этот таймер динамиком в детской игрушке управляет, т.е. оставлять там 1 не надо (динамик на полевом ключе висит, через резистор и светодиод).
Может, нужно не отключать таймер а переводить его в режим OPM?

P.S. Нет, OPM не помогает. Изменение активного режима (активный 0, а не 1) - тоже.
__________________
Союз Советских Социалистических Округов Северной Америки

Последний раз редактировалось eddy; 18.03.2014 в 20:47. Причина: P.S.
eddy вне форума  
Непрочитано 18.03.2014, 21:04  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от ut1wpr Посмотреть сообщение
В чем производилась проверка? Сим или Дебаг?
Дебаг. Проверил еще ST Visual Programmer - считал EEPROM, странно как то расположено.
Миниатюры:
Нажмите на изображение для увеличения
Название: ee_stm8.png
Просмотров: 62
Размер:	66.5 Кб
ID:	60960  
oleg110592 вне форума  
Непрочитано 19.03.2014, 13:33  
dimchik_b
Вид на жительство
 
Регистрация: 18.04.2008
Сообщений: 373
Сказал спасибо: 103
Сказали Спасибо 50 раз(а) в 40 сообщении(ях)
dimchik_b на пути к лучшему
По умолчанию Re: FAQ по STM8

Ничего что-то не могу понять. Пишу функцию для записи в EEPROM. Непонятка первая. Дебаггер говорит, что во FLASH_IAPSR изначально лежит 0х4А, хотя функция, если заставить ее возвращать значение этого регистра, возвращает 0х40, как и положено. Далее, запись во FLASH_DUKR 0xАЕ и 0х56 ничего не меняет: дебаггер по-прежнему говорит, что в FLASH_IAPSR 0х4А, а функция возвращает 0х40. Запись по факту не проходит.
Кстати, кто подскажет, как увидеть дизассемблерный листинг? Соответствующий пункт в меню серый.
dimchik_b вне форума  
 

Закладки

Метки
arm, cortex, stm32, stm8
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1915 14.03.2024 19:56
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
STM8(S/L), первые впечатления kison STM8 1423 19.05.2018 19:23
Вопросы и замечания по топику - FAQ по PROTEUS avr123-nm-ru Proteus 291 05.06.2015 20:49
FAQ Импульсный трансформатор alberio Источники питания и свет 87 13.11.2012 18:07


Часовой пояс GMT +4, время: 02:55.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot