Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

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

Ответ
 
Опции темы Опции просмотра
Старый 28.01.2014, 11:02   #1
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию xc8

Добрый день.
как я могу объяснить компилятору xc8, что функция в любом случае должна быть встроена?
есть ли в xc8 какой-нибудь аналог __attribute__((always_inline))?

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

сегодня утром я был очередной раз очень сильно огорчен xc8.

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

в итоге несмотря на квалификатор inline, функции из 2-3 строк становиться таковыми ясно не спешат и вылазят ошибки вида
function "PWM_init" redefined

я понимаю, что мои рекомендации компилятору и мои приказы ему - суть разные вещи.

[вопль отчаянья]
на кой мне их iar и ссi синтаксис? почему от версии к версии xc8 не уделяется внимание тому, что является реально проблемой в то время как плодятся фичи, которые неизвестно кому нужны.

укачивает. иногда создается впечатление, что ребята делают не компилятор, а пишут какой-то адский квест.
[/вопль]
besogon вне форума   Ответить с цитированием
Старый 28.01.2014, 12:06   #2
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 39
Сообщений: 4,503
Вес репутации: 4370/125
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от besogon Посмотреть сообщение
Добрый день.
как я могу объяснить компилятору xc8, что функция в любом случае должна быть встроена?
есть ли в xc8 какой-нибудь аналог __attribute__((always_inline))?

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

сегодня утром я был очередной раз очень сильно огорчен xc8.
Инверсные технологии. Сначала разделил на два Си-шных файла, а потом включил в каждый из них заголовочник с одной и той же inline-функцией. Не вижу смысла в действии (мне такое действие ни разу не понадобилось).

Сейчас проверил реакцию ARM Compiler на такие действия. Проект собрался, но у компилятора там целое дерево при принятии решения (по возможности...от уровня оптимизации...частоты вызова функции...). Как он сделал в итоге - не знаю (может сработал алгоритм "защиты от дурака").

PS: А потом появляются такие библиотеки и драйверы.
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 28.01.2014 в 12:16.
Pridnya вне форума   Ответить с цитированием
Старый 28.01.2014, 12:19   #3
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

Не вижу смысла в действии (мне такое действие ни разу не понадобилось). - очередная попытка максимально абстрагировать логику от железа.

2 си файла содержат только логические вещи, в то время как завязанные на МК утверждения вынесены в отдельный заголовок.

допустим у Вас есть 2 функции в 2 разных файлах, которые используют доступ к шим.

допустим Вы не хотите завязывать все это на конкретный контроллер и Вам интересно, чтобы доступ к шим в логике был просто набором из функций старт/стоп/задать_параметры.

можно вообще писать все в один файл - обойтись вовсе без заголовков и всего на свете.

не думаю, что использование inline функций в нескольких си файлов следует рассматривать как "сам себе злобный буратино".
besogon вне форума   Ответить с цитированием
Старый 28.01.2014, 12:26   #4
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 39
Сообщений: 4,503
Вес репутации: 4370/125
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от besogon Посмотреть сообщение
2 си файла содержат только логические вещи, в то время как завязанные на МК утверждения вынесены в отдельный заголовок.

допустим у Вас есть 2 функции в 2 разных файлах, которые используют доступ к шим.
Пишется си-файл для ШИМ, например pwm.c. В файл интерфейса pwm.h включаются прототипы из pwm.c. Затем интерфейс включается в другие си файлы, там где нужно им пользоваться. Если интерфейс включен в множество файлов, то что-то с логикой не то.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 28.01.2014, 12:33   #5
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

В файл интерфейса pwm.h включаются прототипы из pwm.c. Затем интерфейс включается в другие си файлы, там где нужно им пользоваться. - и это будет наиболее нерациональный из всех способов.
функции управления pwm короткие по определению - им следует быть встроенными или макро, подобными функции.
делать их полноценными функциями глупо во всех смыслах.

Если интерфейс включен в множество файлов, то что-то с логикой не то. - это еще почему?
besogon вне форума   Ответить с цитированием
Старый 28.01.2014, 12:46   #6
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

или фокусы с extern inline. забыл.
в общем разберусь - отпишусь.
besogon вне форума   Ответить с цитированием
Старый 28.01.2014, 12:47   #7
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 39
Сообщений: 4,503
Вес репутации: 4370/125
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от besogon Посмотреть сообщение
В файл интерфейса pwm.h включаются прототипы из pwm.c. Затем интерфейс включается в другие си файлы, там где нужно им пользоваться. - и это будет наиболее нерациональный из всех способов.
функции управления pwm короткие по определению - им следует быть встроенными или макро, подобными функции.
делать их полноценными функциями глупо во всех смыслах.

Если интерфейс включен в множество файлов, то что-то с логикой не то. - это еще почему?
Да у вас вообще свой какой-то путь: вы стараетесь делать не общепринятыми методами, а так как в голову пришло. Даже кнопкой "Цитата" не пользуетесь. Протестное поведение (негативизм). Вас даже читать тяжело, не то что вникать в вашу логику.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 28.01.2014, 13:28   #8
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

подведу итоги:

я плохо разобрался или забыл С. или сегодня с утра был не мой день.

расскажу в сути - надеюсь кому-либо поможет мой опыт.

короткая заметка про inline функции

если inline функция не объявлена как static то компилятор считает, что вызов функции может быть из других файлов. как и любой другой глобальный символ она не должна появляться где-либо еще в программе. есть мнение, что квалификатор inline отдельно от static скорее всего приведет к вызову функции обычным способом.

если функция объявлена как static inline, то ее область видимость только тот си файл, в котором она объявлена. соответственно заголовок со static inline может быть подключен к разным си файлам. static inline скорее всего приведет к встраиванию функции.

если функция объявлена как extern inline то функция будет встраиваться для файла, в котором объявлена, и будет вызываться к некой копии, для тех, у кого объявлен ее прототип.

***
где я накосячил в своем пример - я забыл квалификатор static, что привело к тому, что компилятор игнорировал квалификатор inline полагая, что у функции есть внешние связи.
besogon вне форума   Ответить с цитированием
Старый 28.01.2014, 13:33   #9
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

был бы очень рад выслушать мысли по этому вопросу.
хотелось бы раз и навсегда разобраться со всем этим, тк. у меня до сих пор не сложилось четкой логики по поводу использования всего этого.
besogon вне форума   Ответить с цитированием
Старый 28.01.2014, 14:00   #10
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

посмотрел ассемблерный листинг и пришел к выводу, что если функция объявлена как inline(без дополнительных квалификаторов) и находится в одном месте, то скорее всего она тоже будет встроена(несмотря на указания об обратном) допустим здесь
http://m68hc11.serveftp.org/inline-1.php

было бы здорово, если бы кто-либо написал внятный мануал по использованию всего этого.
besogon вне форума   Ответить с цитированием
Старый 28.01.2014, 14:32   #11
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 39
Сообщений: 4,503
Вес репутации: 4370/125
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от besogon Посмотреть сообщение
посмотрел ассемблерный листинг и пришел к выводу

допустим здесь
http://m68hc11.serveftp.org/inline-1.php
Это ж про GNU Development Chain for 68HC11&68HC12. Надо читать про xc8.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 28.01.2014, 14:42   #12
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Надо читать про xc8
- про xc8 я не нашел. я бы даже так сказал - во всем мануале mplab xc8 c compilier users guide ни разу не встречаются сочетания static inline, так и extern inline.

совершенно точно, что сейчас они тянут xc8 к какому-либо стандарту.

в моих фантазиях все компиляторы ведут себя примерно одинаково и именно так, как я этого от них ожидаю.
besogon вне форума   Ответить с цитированием
Старый 28.01.2014, 15:03   #13
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 33
Сообщений: 2,092
Вес репутации: 3340/95
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от besogon Посмотреть сообщение
в моих фантазиях все компиляторы ведут себя примерно одинаково и именно так, как я этого от них ожидаю.
"Блажен кто верует, тепло ему на свете!" (С)
Romantic вне форума   Ответить с цитированием
Старый 28.01.2014, 19:59   #14
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/98
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от besogon Посмотреть сообщение
подведу итоги...
Вы эмпирически сделали, в общем-то, правильные выводы.
Vlad&mir вне форума   Ответить с цитированием
Старый 29.01.2014, 10:09   #15
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/103
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Вы эмпирически сделали, в общем-то, правильные выводы.
И еще, не только правильные выводы как Вы заметили, но еще хотел сказать(это все я в основном для ТС говорю/пишу), что нужно побольше на "ихние" коды от библиотек и хедеров контроллеров и пр. и пр. обращать внимание. Там много полезного можно подчерпнуть. Насчет синтаксиса и использования подчерпнуть. Как раз там часто используется квалификатор static и почему видно уже потом. Я вчера не был тут на форуме и когда начал читать эту тему, то сразу об этом static подумал, но ТС сам уже вроде разобрался и неплохо, а насчет того где это все описано, то совершенно правильный вывод сделал, что "...совершенно точно, что сейчас они тянут xc8 к какому-либо стандарту..." Я так думаю, что к некоему универсальному компилятору для всех семейств. Т.е., что есть например у 24-го семейства, у компилятора, то возможно и тут сделают в итоге. А может и нет. Неизвестно.
AleksBak вне форума   Ответить с цитированием
Старый 29.01.2014, 15:26   #16
PICman
Member
 
Регистрация: 11.04.2010
Адрес: Kaluga
Возраст: 32
Сообщений: 32
Вес репутации: 127/33
PICman will become famous soon enoughPICman will become famous soon enough
По умолчанию Re: xc8

Может быть немного в сторону от темы... Не пинайте.
1. КАК расположить переменные в EEPROM?
Камень: PIC18F45K22. Компилятор: XC8 V1.30.
Квалификатор "eeprom" для данного МК игнорируется компилятором. Запись типа __EEPROM_DATA () крайне неудобна, особенно для структур данных.
2. Можно ли заставить ХС8 не ругаться на русские символы?
Например:
LCDWrStr("Тест пройден");
Пишет Warning [228] illegal character (0xXX) на каждый русский символ.
PICman вне форума   Ответить с цитированием
Старый 29.01.2014, 16:51   #17
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
1. КАК расположить переменные в EEPROM?
Камень: PIC18F45K22. Компилятор: XC8 V1.30.
Квалификатор "eeprom" для данного МК игнорируется компилятором. Запись типа __EEPROM_DATA () крайне неудобна, особенно для структур данных.
- xc8 users guide страница 31: XC8 does not implement the __eeprom qualifiers for any PIC18 devices; this qualifier will work as expected for other 8-bit devices.

вы обречены писать функции доступа к eeprom для этой серии самостоятельно.

2. Можно ли заставить ХС8 не ругаться на русские символы? - у меня не ругается. только что проверил.
mplab x 2.00 xc8 1.30
besogon вне форума   Ответить с цитированием
Старый 29.01.2014, 18:05   #18
PICman
Member
 
Регистрация: 11.04.2010
Адрес: Kaluga
Возраст: 32
Сообщений: 32
Вес репутации: 127/33
PICman will become famous soon enoughPICman will become famous soon enough
По умолчанию Re: xc8

Спасибо, по первому пункту понял.
И это печально. Неужели никому не нужно иметь начальные установки/калибровку девайса сразу после прошивки? Понятно, что можно все это скопировать из flash памяти при первом запуске, но. В общем на С18 работа с EEPROM была удобнее.
По русским символам проблема возникает на MPLAB 8.92 при использовании XC8. Видимо кодировка.
Кстати, какой тип кодировки выбираете при создании проекта в MPLAB X?
PICman вне форума   Ответить с цитированием
Старый 29.01.2014, 18:14   #19
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Кстати, какой тип кодировки выбираете при создании проекта в MPLAB X?
- честно говоря какой был по умолчанию, такой и оставил. наверное mplab x просто дернул настройки из переменных среды.
besogon вне форума   Ответить с цитированием
Старый 30.01.2014, 10:03   #20
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 36
Сообщений: 1,140
Вес репутации: 3762/81
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от PICman Посмотреть сообщение
Спасибо, по первому пункту понял.
И это печально. Неужели никому не нужно иметь начальные установки/калибровку девайса сразу после прошивки? Понятно, что можно все это скопировать из flash памяти при первом запуске, но. В общем на С18 работа с EEPROM была удобнее.
По хорошему, записанные в eeprom данные всё равно надо проверять после чтения, и (если речь о настройках) в случае их некорректности переписывать на копию по умолчанию из ПЗУ. А если этот функционал всё равно реализовывать, то необходимости в прямом размещении массивов в еепром особо и не будет - при первом же запуске не пройдёт проверка и будет всё переписано.

Возможность С18 быстренько разместить пару байт в eeprom была приятной, безусловно, но пользовался ей раз или два

Если совсем невмоготу, можно попробовать сделать hex файл с образом eeprom, прикрутить в MPLABX как отдельный проект, и в основном проекте указать проект с EEPROM как загружаемый (не забыв основной назначить main project). Тогда, по идее, hex файл будет подгружен к скомпилированному и прошиты вместе. Не факт что сработает для eeprom, я такую технику проверял только для совмещения основного кода с бутлоадером. Будет время - попробую собрать в таком виде.
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 30.01.2014, 10:42   #21
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,923
Вес репутации: 3528/78
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

мне пока вообще не доводилось найти применение для eeprom.
делал один проект, в котором был eeprom в котором хранились кое-какие настройки - но там это было желание заказчика и, бесспорно, использование eeprom там не было необходимостью.

в pic есть возможность писать во flash память, которая выдерживает значительное число перезаписей: соответственно осознанный выбор для проекта контроллера с eeprom будет только в очень специфичных условиях.
besogon вне форума   Ответить с цитированием
Старый 30.01.2014, 11:39   #22
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,789
Вес репутации: 5397/164
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: xc8

Цитата:
Сообщение от besogon Посмотреть сообщение
в pic есть возможность писать во flash память, которая выдерживает значительное число перезаписей: соответственно осознанный выбор для проекта контроллера с eeprom будет только в очень специфичных условиях.
сравни ресурс современной программной flash памяти и eeprom.
да дело даже не в этом, ради записи 10 байт организовывать перезапись блока программной флеши в 4 кбайт, а потом геморроиться при обновлении прошивки.
настолько "удобно", что часто ставлю внешнюю епром (или сд).
Greg вне форума   Ответить с цитированием
Старый 30.01.2014, 11:54   #23
alexdos
Senior Member
 
Регистрация: 12.09.2007
Адрес: Херсон
Возраст: 47
Сообщений: 988
Вес репутации: 535/56
alexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of light
По умолчанию Re: xc8

Цитата:
Сообщение от Greg Посмотреть сообщение
сравни ресурс современной программной flash памяти и eeprom.
да дело даже не в этом, ради записи 10 байт организовывать перезапись блока программной флеши в 4 кбайт, а потом геморроиться при обновлении прошивки.
настолько "удобно", что часто ставлю внешнюю епром (или сд).
Тут ведь как, все зависит от проекта. Если константы меняются пару раз за жизнь устройства, то ресурс современной программной flash памяти не играет никакой роли, а выходят такие игроки, как стоимость комплектующих (с еепром как правило дороже), занятость пинов, площадь платы, дополнительный компонент (компоненты) при монтаже.
alexdos вне форума   Ответить с цитированием
Старый 30.01.2014, 12:03   #24
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/98
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: xc8

Использовать для хранения данных FLASH или EEPROM, это вопрос прикладного программиста. Задача системного программиста (разработчика компилятора) - предоставить прикладному программисту удобный и разнообразный инструментарий, чего, увы, в ХС8 не сделано.
Vlad&mir вне форума   Ответить с цитированием
Старый 30.01.2014, 19:26   #25
PICman
Member
 
Регистрация: 11.04.2010
Адрес: Kaluga
Возраст: 32
Сообщений: 32
Вес репутации: 127/33
PICman will become famous soon enoughPICman will become famous soon enough
По умолчанию Re: xc8

Цитата:
Сообщение от yeskela Посмотреть сообщение
По хорошему, записанные в eeprom данные всё равно надо проверять после чтения, и (если речь о настройках) в случае их некорректности переписывать на копию по умолчанию из ПЗУ.
Да, так и сделал, спасибо.
Вообще Microchip напрягает своим навязыванием линейки компиляторов XC. Зачем нужно было удалять дистрибутив C18 с официального сайта?!
Хоть бы в архиве оставили. Как поддерживать старые проекты?
Удачный пример был PICkit2. До сих пор можно работать. Все есть.
PICman вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XC8 & OSA вопрос tester-y SSH Инструментарий 3 03.03.2013 07:44
mplabx-1.60 xc8 pic18f14k22 экспорт hex besogon Вопросы начинающих 3 05.02.2013 11:29
mplabx проект на XC8 с модулем на асм. EugenOS Продукция MICROCHIP 8 08.11.2012 21:26
Помогите настроить pic16f1827 в XC8 Urvin Продукция MICROCHIP 1 28.10.2012 12:48


Часовой пояс GMT +3, время: 00:01.


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