Програмирование pic на СИ.

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475279#p4475279"]Может лучше вот так:

volatile const R1 __at(0x18D0) = 0x00AA;

EEADR = (uint8_t)(R1);
EEADRH = (uint8_t)(R1 >> 8);[/uquote]

а что здесь "лучше"....... volatile? - это никак не влияет. Что касается следующих строк...... речь же не шла о содержимом....

Ну это ладно ..... я же в принципе обратился, думал что с таким давно уже народ сталкивался ....... и есть какое-то объяснение такого поведения, но ......


А что касается результатов моих исследований, почему именно так себя ведет 1.33 с 16f88x (с 12F1572 например все нормально в аналогичной ситуации) я не знаю, да и честно говоря не хочу тратить слишком много времени выясняя это, поскольку эта "проблема" легко обходится - достаточно просто чтобы была хоть одна константа с абсолютным размещением, скажем по последнему адресу (для 886)

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

const uint8_t R1 @0x1FFF;
и тогда феномен исчезает.
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

[uquote="Родэрик",url="/forum/viewtopic.php?p=4475340#p4475340"][uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475279#p4475279"]Может лучше вот так:

volatile const R1 __at(0x18D0) = 0x00AA;

EEADR = (uint8_t)(R1);
EEADRH = (uint8_t)(R1 >> 8);[/uquote]

а что здесь "лучше"....... volatile? - это никак не влияет. Что касается следующих строк...... речь же не шла о содержимом....

Ну это ладно ..... я же в принципе обратился, думал что с таким давно уже народ сталкивался ....... и есть какое-то объяснение такого поведения, но ......


А что касается результатов моих исследований, почему именно так себя ведет 1.33 с 16f88x (с 12F1572 например все нормально в аналогичной ситуации) я не знаю, да и честно говоря не хочу тратить слишком много времени выясняя это, поскольку эта "проблема" легко обходится - достаточно просто чтобы была хоть одна константа с абсолютным размещением, скажем по последнему адресу (для 886)

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

const uint8_t R1 @0x1FFF;
и тогда феномен исчезает.[/uquote]

volatile влияет на то, что если ты не используешь данный регистр, то при оптимизации 3, и при НЕиспользовании - ХС8 его просто проигнорирует :) не включит в проект.

Для остальных оптимизаций - это не имеет значения.

Так а в чём проблема ?

До сих пор значения адреса EEPROM не соответствуют той константе ?
Последний раз редактировалось ALEKS1102X Вс сен 10, 2023 17:00:25, всего редактировалось 1 раз.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475336#p4475336"]а вот следующая команда - это НЕЧТО!
В восьмибитный байт "ADRESH" загрузить 16-ти битную пародию .... константы, которая уже закончилась (она была восьмибитной) ... да там вообще не читаемо ....[/uquote]
:))) Вообще то в ADRESH грузится старший байт АДРЕСА константы, а не константа... Ты в курсе что означает в Си амперсанд?
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475336#p4475336"]Немного может не в тему, но чем отличается "@" и "__at() :
Я не уверен, что просто объявив адрес напрямую "@" - после компиляции - проц запустится ?!?
Просто к примеру, в том месте ПЗУ на данный момент находилась уже прошивка (некий код, который туда кинул ХС8) ...
Вот через "__at" я точно уверен, что МПЛАБ подвинется, а через прямую вставку адреса ... да хер его знает ...[/uquote]
@ и __at ничем друг от друга не отличаются. Символ @ по английски звучит как at.
:tea: :)))
Не надоело писать пургу?
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475352#p4475352"]если ты не используешь данный регистр[/uquote]
Вообще то он его использует.
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4475354#p4475354"][uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475336#p4475336"]а вот следующая команда - это НЕЧТО!
В восьмибитный байт "ADRESH" загрузить 16-ти битную пародию .... константы, которая уже закончилась (она была восьмибитной) ... да там вообще не читаемо ....[/uquote]
:))) Вообще то в ADRESH грузится старший байт АДРЕСА константы, а не константа... Ты в курсе что означает в Си амперсанд?
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475336#p4475336"]Немного может не в тему, но чем отличается "@" и "__at() :
Я не уверен, что просто объявив адрес напрямую "@" - после компиляции - проц запустится ?!?
Просто к примеру, в том месте ПЗУ на данный момент находилась уже прошивка (некий код, который туда кинул ХС8) ...
Вот через "__at" я точно уверен, что МПЛАБ подвинется, а через прямую вставку адреса ... да хер его знает ...[/uquote]
@ и __at ничем друг от друга не отличаются. Символ @ по английски звучит как at.
:tea: :)))
Не надоело писать пургу?
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475352#p4475352"]если ты не используешь данный регистр[/uquote]
Вообще то он его использует.[/uquote]


__at ... вообще-то у Микрочип -это : "attribute", и можно посмотреть это в справочнике по MPLABX, а значёк @ по системе ASCII = 0x40.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475360#p4475360"]__at ... вообще-то у Микрочип -это : "attribute"[/uquote]
Это твоя разнузданная фантазия. Спецификатор attribute никакого отношения к at не имеет.
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475360#p4475360"]а значёк @ по системе ASCII = 0x40.[/uquote]
И что из этого следует? Причем тут ASCII код символа?
ЗЫ. В русском языке слово "значок" пишется через "о". Учи русский язык, прежде чем писать всякую пургу... :)))
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

:))) :))) :)))
скажем так, прошлые страницы тоже нехило так позабавили, но нынче прям до слёз......
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

[uquote="Родэрик",url="/forum/viewtopic.php?p=4475365#p4475365"]:))) :))) :)))
скажем так, прошлые страницы тоже нехило так позабавили, но нынче прям до слёз......[/uquote]

Ну что? вдоволь позабавились по поводу "Ё" и "о" ?
Ну тогда давайте разберём - что такое в пик16 - программная память :)
Адресация команд урезанная, всего 14 бит из 16-ти, полноценного перехода (линейного) по адресу нету :)
Табличного чтения НЕТ, а значит - можно уйти по некоему адресу, и вернуться оттуда - только если там будет команда "RETLW".
Обычно - это и выполняется в этих процах.
Естестевенно - ни ПИСАТЬ, ни ЧИТАТЬ таблично FLASH - этих процев невозможно!

Теперь давай посмотрим на запись:

//xc8
const uint8_t R1 @0x18D0=0xAA;
EEADR=(uint8_t)&R1;
EEADRH=((uint16_t)&R1)>>8;

константа адреса, которая равна 0xAA, ну ладно, с этим можно смириться, как и с тем, что САМ указав константу адреса - после (во второй строке) хочет её считать :) ...
Но третья строка: от значения 8 бит - сделать 16-надцать бит (ДОЛБНЮ понятно - что это НОЛЬ). что бы потом разместить в старший адрес :)

Здесь на форуме есть кто-нибудь, кто скажет - что такое пишут только после третьего тазика водки? или всем всё нравится ?

Ну и наконец последнее: а стесняюсь спросить - а что эти действия дают в плане прошивки?
ПОЛНОЕ значение из ПЗУ не считаешь - возможности данной серии камней не позволяют, записать тоже нельзя ...
Зачем знать адрес той ячейки, в которой разместил команду:
RETLW 0xxx ???
Ты её и так сохранил в качестве:
const uint8_t R1 &(0x18D0) = 0xAA;

Сам говорил что предпочитаешь правду, но ведёшься на другие правды :)
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

В других компиляторах (CCS), в другом языке (C) есть доступ для чтения и записи в память программы. Не знаю как делает, но функции есть и за рассматриваемого МК.

Из Help:

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

write_program_memory( address, dataptr, count);
Function: Writes count bytes to program memory from dataptr to address.

read_program_memory( )
Function: Reads count bytes from program memory at address to RAM at dataptr.
---
Если поможет, фрагмент из файла .lst:
(для меня ASM: незнакомая часть)

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

.. write_program_memory(0x18D0, 0xAA, 1);
0089:  MOVLW  18
008A:  MOVWF  0F
008B:  MOVLW  D0
008C:  MOVWF  0D
008D:  MOVLW  AA
008E:  MOVWF  04
008F:  BCF    03.7
0090:  MOVLW  01
0091:  BCF    03.6
0092:  MOVWF  21
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4478412#p4478412"]ЧИТАТЬ таблично FLASH - этих процев невозможно![/uquote]
:))) :))) :)))
Я чувствую, что тебе не надоело быть клоуном...
Открываем даташит и внезапно видим:

Изображение Изображение
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4478412#p4478412"]Теперь давай посмотрим на запись:

//xc8
const uint8_t R1 @0x18D0=0xAA;
EEADR=(uint8_t)&R1;
EEADRH=((uint16_t)&R1)>>8;

константа адреса, которая равна 0xAA, ну ладно, с этим можно смириться, как и с тем, что САМ указав константу адреса - после (во второй строке) хочет её считать :) ...
Но третья строка: от значения 8 бит - сделать 16-надцать бит (ДОЛБНЮ понятно - что это НОЛЬ). что бы потом разместить в старший адрес :)[/uquote]
2023-09-19_221528.jpg
(53.86 КБ) 120 скачиваний
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 99
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

Давайте по порядку по поводу "правды" (лично для ALEKS1102X-а)

Повторим суть вопроса - "Родэрик" указал что при команде

const uint8_t R1 = 0xAA;

неправильно вычисляется адрес константы на PIC16F886 !

EEADR=(uint8_t)&R1;
EEADRH=((uint16_t)&R1)>>8;

// в данном случае &R1 - адрес R1 ( !! 16 бит )
// загружаем младший и старший байт адреса
// в переменные EEADR , EEADRH

скорее всего планируется работа с данной "константой"
// а почему нет? если знаем адрес, то можно и изменить!


в случае PIC12F1572 - работает - адрес вычисляется правильно


в случае когда задаём адрес напрямую - то всё работает

const uint8_t R1 @0x18D0=0xAA;

а также работает комбинация

const uint8_t R1 = 0xAA;
const uint8_t R2 @0x1FFF;

----------------------------------

смоделировал данную ситуацию
MPLABX 6.05 + XC8 2.41
pic16f690 ( как аналог по коду pic16f886 )
pic16f1827 ( как аналог по коду pic12f1572 )
// пустая программа и

1) const uint8_t R1 = 0xAA;

2) const uint8_t R1 __at(0x800) = 0xAA;

3) const uint8_t R1 = 0xAA;
const uint8_t R2 __at(0x800);


EEADR=(uint8_t)&R1;
EEADRH=((uint16_t)&R1)>>8;

// xc8 2.41 - не знает @

----------------------------------
и удивительно - проблема есть для pic16f690!
в листинге всё прекрасно видно что делает компилятор

для записи в память программ константы всегда используется RETLW

1. для pic16f690 получилось что R1
разместился по адресу 0x0007
а адрес назначается 0x8001

для pic16f1827 получилось что R1
разместился по адресу 0x0800
а адрес назначается 0x8800

2. для pic16f690 получилось что R1
разместился по адресу 0x0800
а адрес назначается 0x0800

для pic16f1827 получилось что R1
разместился по адресу 0x0800
а адрес назначается 0x0800

3. для pic16f690 получилось что R1
разместился по адресу 0x0908
а адрес назначается 0x8908
R2 разместился по адресу 0x0800

для pic16f1827 получилось что R1
разместился по адресу 0x0801
а адрес назначается 0x8801
R2 разместился по адресу 0x0800


для расширенной серии pic12f1xxx - pic16f1xxx
есть мапирование памяти программ на память озу с адреса 0x8000
(только младшие байты памяти программ)

используя указатели можно читать таблицы очень быстро
поэтому назначаемый адрес и входит в диапазон 0x8xxx
и сегмент stringX - организуется правильно

для обычных pic16 - xc8 переклинивает и адрес неверно расчитывается

если адрес явно задан для константы или
есть хотя бы одна константа с явным адресом
то сегменты srtringX назначаются правильно

старший бит15 в данном случае - неважен,
так как при записи в EEADRH - отбрасывается

данные манипуляции нужны только для изменения константы
// вычисляем адрес и записываем стандартным алгоритмом
// новые данные по этому адресу


--------------------- дополнительно -----------------

для pic16f1xxx команда
EEADR = &R1
правильно запишет 16 бит адрес в старший и младший байт
команда
EEADR=(uint8_t)&R1;
также пишет 16 бит адрес, игнорируя приведение типа
Последний раз редактировалось Zikon Ср сен 20, 2023 06:37:20, всего редактировалось 1 раз.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

забавно. куча приведений типов... наверное, надо. но почему-то если
EEADR=(uint8_t)&R1;
то
EEADRH=((uint16_t)&R1)>>8;
не

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

EEADRH=(uint8_t)(((uint16_t)&R1)>>8);
У меня иногда создаётся впечатление, что приведения вставляются бездумно, и мне кажется, что иной раз лучше тогда вообще не приводить, положившись на авось, чем делать частичное, которое как бэ намекает, что именно вот так и хотелось, хотя это не так.
Последний раз редактировалось Martian Ср сен 20, 2023 06:50:58, всего редактировалось 1 раз.
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 99
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

EEADRH=((uint16_t)&R1)>>8;
старший байт отбрасывается и так
и да можно сократить ещё
EEADRH=(&R1)>>8;


для
EEADR=(uint8_t)&R1;
также будет верно
EEADR=&R1;
тоже отбрасывается старший байт

// просто копировал код который указали ранее

Добавлено after 2 minutes 52 seconds:
для pic16f1xxx
EEADR - 16 бит объявлен

а старший и младший байты
EEADRL
EEADRH
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

вот и я о том. если мы уверены, что отбрасывается, то не пишем нигде, если не уверены - везде... я просто Вас процитировал, как ближайше написанное (исправил), так-то это сплошь и всюду встречается...
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Zikon",url="/forum/viewtopic.php?p=4478743#p4478743"]и удивительно - проблема есть для pic16f690!
в листинге всё прекрасно видно что делает компилятор...
для записи в память программ константы всегда используется RETLW[/uquote]
А что он должен использовать для чипа, в котором нет другого доступа к программному флешу?
Спешу напомнить, что В ЛЮБОМ контроллере доступ к программному флешу не является нативной для Си процедурой. Поэтому в компиляторах используются костыльные для Си спецификаторы, а результат компиляции глубоко аппаратно зависим.
Кстати, спецификатор @ - это от IAR. О чем совершенно определенно сказано в мануале на XC8.
Но вопрос Родэрика был СОВЕРШЕННО О ДРУГОМ. Речь шла о неявном размещении константы линкером.

Добавлено after 2 minutes 36 seconds:
[uquote="Martian",url="/forum/viewtopic.php?p=4478763#p4478763"]так-то это сплошь и всюду встречается...[/uquote]
А я не парюсь по этому поводу и просто всегда привожу явно. Ведь я не профессиональный программист и откровенно не помню нюансов неявного приведения.

Добавлено after 3 minutes 9 seconds:
[uquote="Zikon",url="/forum/viewtopic.php?p=4478761#p4478761"]и да можно сократить ещё
EEADRH=(&R1)>>8;[/uquote]
Вообще то нельзя. В нормальном компиляторе это вызывает варнинг. EEADRH - это не указатель, а простой регистр и потому константу-указатель нужно привести к простой константе.
Последний раз редактировалось КРАМ Ср сен 20, 2023 09:10:52, всего редактировалось 1 раз.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

КРАМ, именно поэтому пугаюсь, когда вижу лишь частичное приведение, начинаю подозревать, что так и задумано, а я просто не знаю нюансов.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Zikon, попробовал write_program_memory() (в CCS) для 16f690. Функция недоступна.
16F886, 12f1572 - ОК.
Спасибо за инфо.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4478775#p4478775"][uquote="Zikon",url="/forum/viewtopic.php?p=4478743#p4478743"]и удивительно - проблема есть для pic16f690!
в листинге всё прекрасно видно что делает компилятор...
для записи в память программ константы всегда используется RETLW[/uquote]
А что он должен использовать для чипа, в котором нет другого доступа к программному флешу?
Спешу напомнить, что В ЛЮБОМ контроллере доступ к программному флешу не является нативной для Си процедурой. Поэтому в компиляторах используются костыльные для Си спецификаторы, а результат компиляции глубоко аппаратно зависим.
Кстати, спецификатор @ - это от IAR. О чем совершенно определенно сказано в мануале на XC8.
Но вопрос Родэрика был СОВЕРШЕННО О ДРУГОМ. Речь шла о неявном размещении константы линкером.

Добавлено after 2 minutes 36 seconds:
[uquote="Martian",url="/forum/viewtopic.php?p=4478763#p4478763"]так-то это сплошь и всюду встречается...[/uquote]
А я не парюсь по этому поводу и просто всегда привожу явно. Ведь я не профессиональный программист и откровенно не помню нюансов неявного приведения.

Добавлено after 3 minutes 9 seconds:
[uquote="Zikon",url="/forum/viewtopic.php?p=4478761#p4478761"]и да можно сократить ещё
EEADRH=(&R1)>>8;[/uquote]
Вообще то нельзя. В нормальном компиляторе это вызывает варнинг. EEADRH - это не указатель, а простой регистр и потому константу-указатель нужно привести к простой константе.[/uquote]

А ты (Вы) напиши это на АСМ :)
А потом будешь выкладывать вырезки из даташита на пик16 :)

PS: я уже давно пик16 использую только для чего-то мелкого, ну типа иммо для авто :)
Серьёзного там ничего не напишешь :)
https://drive.google.com/file/d/1y0nTqb ... drive_link
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]А ты (Вы) напиши это на АСМ[/uquote]
Что "это"? Обращение к флешу через контроллер флеша? Так я привел скрин даташита с текстом на АСМе.
Ты изъясняйся конкретно, а не междометиями...
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]А потом будешь выкладывать вырезки из даташита на пик16[/uquote]
У тебя есть возражения к даташиту?
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]я уже давно пик16 использую только для чего-то мелкого, ну типа иммо для авто[/uquote]
Поздравляю. Возьми с полки пирожок.
Понятия мелкий/крупный зависят от соотношения ресурсов контроллера и решаемой задачи. Судя по твоим местным эпистолиям, работать с 8-битным Микрочипом ты можешь на очень начальном уровне. Что не сообщение, то какая то глупость...
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]Серьёзного там ничего не напишешь[/uquote]
Ты что считаешь "серьезным"?
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]https://drive.google.com/file/d/бла....бла...бла[/uquote]
Тебе уже писали, чтобы ты не давал тут нерасшаренных ссылок. Никому нах не облокотилось делать запросы для чтения твоих бестолковых нетленок...
И вообще, на этом форуме есть свой хостинг - потрудись использовать его.
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4480477#p4480477"][uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]А ты (Вы) напиши это на АСМ[/uquote]
Что "это"? Обращение к флешу через контроллер флеша? Так я привел скрин даташита с текстом на АСМе.
Ты изъясняйся конкретно, а не междометиями...
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]А потом будешь выкладывать вырезки из даташита на пик16[/uquote]
У тебя есть возражения к даташиту?
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]я уже давно пик16 использую только для чего-то мелкого, ну типа иммо для авто[/uquote]
Поздравляю. Возьми с полки пирожок.
Понятия мелкий/крупный зависят от соотношения ресурсов контроллера и решаемой задачи. Судя по твоим местным эпистолиям, работать с 8-битным Микрочипом ты можешь на очень начальном уровне. Что не сообщение, то какая то глупость...
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]Серьёзного там ничего не напишешь[/uquote]
Ты что считаешь "серьезным"?
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4480455#p4480455"]https://drive.google.com/file/d/бла....бла...бла[/uquote]
Тебе уже писали, чтобы ты не давал тут нерасшаренных ссылок. Никому нах не облокотилось делать запросы для чтения твоих бестолковых нетленок...
И вообще, на этом форуме есть свой хостинг - потрудись использовать его.[/uquote]


Добрый день!

Написать на "АСМ" я имел ввиду, что если СИ запрещает кому-то пользоваться ВСЕМИ хотелками микроконтроллера, то АСМ все запреты снимает.

Нет, возражений к даташиту нету, просто он рассчитан наверное на расширение функционала этой линейки процев. Они это и сделали в процах, в которых после "16F" стало больше ТРЁХ цифр.
Только ЗАСАДА - она и осталась :) Куча переключений банков ОЗУ, из-за которых, если нужно написать ЧЁТКИЙ-ТОЧНЫЙ тайминг - то не получиться :( нужны вставки на АСМ.
Да ладно вставки, память читать всё равно нет возможности, да и как она появится, если прямой доступ к памяти - это регистры TBLPTRx и TABLAT, а это уже серия пик18.
Да и 14-ти битный адрес к памяти флешь - это тоже "энтузязизма" не добавляет :) ... когда старший адрес может быть только до 0x3F ...
Вот поэтому, и нет смысла читать старший адрес программной памяти :)

Спасибо конечно за пирожок, но я его почему-то не нашёл на той полке, которую Вы не указали :)
В моём понятии - мелкий, это частота не более 8-ми МИпс, памячти почти НОЛЬ, но есть несколько аппаратных модулей, которые можно использовать, к примеру, для связи с иммо от WV :)
Ну можно ещё взять м/с типа DS1307, DS1338, MCP7941x и сделать добротные часики :) - прицепить ещё солнечную панель, аккум типа 16850, и можно сказать - почти на всю жизнь :)
Главное - правильно программу написать, чтобы аккум не всё время заряжался, а по мере необходимости.

Я не могу закинуть на Яндекс диск, он требует купить диск !?! Накой мне их диск? Я что? ЛОХ свою инфу разбрасывать по всей интернетовской помойке? Да она завтра будет доступна последнему бомжу.
Поэтому, я пользуюсь этой помойкой только для раздачи неких своих данных, которые я считаю - что можно выложить в помойку.
А что? здесь есть файлообменник, который вкурит от 700 МГбайт и выше ? Чёт я сумневаюсь :)

А кто хочет, тот и нерасшаренный скачает :)
Ответить

Вернуться в «PIC»