реклама на сайте
подробности

 
 
> Непрерывная память для PIC-ов
zelvans
сообщение May 8 2010, 14:08
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 29-04-10
Пользователь №: 56 980



Недавно начал работать с PIC-ми, на мой взгляд такое рваное
распределение памяти неудобно для использования. Решил выстроить
память в непрерывные(линейные) адреса 0x00-0xff следующим образом:
0x60-0x6f банк0 --> 0x00-0x0f
0x20-0x6f банк1 --> 0x10-0x5f
0x20-0x6f банк2 --> 0x60-0xaf
0x20-0x6f банк3 --> 0xb0-0xff


Работаю MPLAB IDE. Пример для PIC16F88.

Чтение из линейного адреса 0xb2 выглядит так:

movlw 0xb2
call read_routine

на выходе в W прочитанный байт


Запись 0xaa в линейный адрес 0Xb2:

banksel 0
movlw 0xaa ;данные, которые
movwf WRITE_BYTE ;надо записать
movlw 0xb2
call write_routine

Копирование из одного участка памяти в другой(непересекающийся)
использую макрос

COPY_MEM read_address,write_address,count

read_address откуда
write_address куда
count сколько байтов

В моем проекте прописывается память своими адресами.
Если закоментарить строку goto Init_0015 то можно
проверить копирование памяти.
Прикрепленный файл  JQ017_L_M.rar ( 14.16 килобайт ) Кол-во скачиваний: 104
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zksystem
сообщение May 11 2010, 04:43
Сообщение #2


embedder
***

Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911



Цитата(zelvans @ May 8 2010, 18:08) *
Недавно начал работать с PIC-ми, на мой взгляд такое рваное
распределение памяти неудобно для использования.

Использование С компилятора стирает эти неудобства smile.gif


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
zelvans
сообщение May 11 2010, 14:14
Сообщение #3





Группа: Участник
Сообщений: 7
Регистрация: 29-04-10
Пользователь №: 56 980



У человека как раз именно эта проблема в С компиляторе http://electronix.ru/forum/index.php?showtopic=59877
В моей схеме адресации любой буфер(массив) может начинаться в одном банке, а заканчиваться в другом, для меня это прозрачно.
Насчет 'Мечты стареют куда быстрее мечтателей' как показывают форумы многие работают с PIC12,14,16
Go to the top of the page
 
+Quote Post
ar__systems
сообщение May 11 2010, 15:50
Сообщение #4


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(zelvans @ May 11 2010, 09:14) *
У человека как раз именно эта проблема в С компиляторе http://electronix.ru/forum/index.php?showtopic=59877
В моей схеме адресации любой буфер(массив) может начинаться в одном банке, а заканчиваться в другом, для меня это прозрачно.
Насчет 'Мечты стареют куда быстрее мечтателей' как показывают форумы многие работают с PIC12,14,16


Да нет, у человека там другая проблема.

Вообще если бы мне за каждым обращением в регистр надо было бы функцию вызывать, я бы удавился. Если у вас код настолько некритичный к скорости, пишите на C. У меня много девайсов на PIC12/16, на ассемблере, но ваш код я бы нигде не смог применить.

В крайнем случае можно не заморачиваясь перед каждым обращением в память banksel ставить.
Go to the top of the page
 
+Quote Post
zelvans
сообщение May 12 2010, 00:56
Сообщение #5





Группа: Участник
Сообщений: 7
Регистрация: 29-04-10
Пользователь №: 56 980



Например для копирования большого количества байтов из произвольного банка в произвольный такой подход годится
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01405 секунд с 7
ELECTRONIX ©2004-2016