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

 
 
> Как организовать массив регистров в PIC?
Billy_Bones
сообщение Nov 21 2016, 03:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-10-10
Пользователь №: 60 366



В одной моей железке нужно сделать фильтр. Читается из ADC значение, кладется в массив из 16 регистров, по кругу, переписывая старое значение.
Потом эти 16 регистров суммируются, делятся на 16 - получается среднее за окно из 16 измерений

Так вот - как организовать запись в массив по счетчику, на mpasm?
Чтоб в счетчике крутился номер ячейки, а процедура по этому номеру в оную ячейку писала.

В массивы констант (таблицы) по retlw "значение" я умею, а вот с переменными что-то не приходит в голову как изящно поступить.
Может есть опыт?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Billy_Bones
сообщение Nov 21 2016, 06:35
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-10-10
Пользователь №: 60 366



Начал читать про indirect addressing - понял что это оно (раньше я никогда не пользовался этим методом).
Вот так будет работать?

Линейный массив находится в пользовательских регистрах, начиная с адреса "startaddress".
На входе POINTER - регистр с номером ячейки массива, линейное смещение адреса.
READDATA - регистр с результатами прочтения
WRITEDATA - регистр с данными для записи

movlw "startaddress" ;
movwf FSR ; загрузка начального адреса в регистр указателя из константы
movfw POINTER
addwf FSR, F ; увеличение регистра указателя на величину указателя POINTER

Ну а дальше

movf INDF, W ;
movwf READDATA ; - чтение ячейки массива

или

movf WRITEDATA, W
movwf INDF ; - запись ячейки массива

Я нигде не ошибся?
Go to the top of the page
 
+Quote Post
mcheb
сообщение Nov 21 2016, 14:21
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



надо взять ПИК Си компилер от CCSinfo и забыть про movf movwf movlw и прочую retlw. Как вариант можно SDCC
Go to the top of the page
 
+Quote Post
Billy_Bones
сообщение Nov 21 2016, 15:22
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-10-10
Пользователь №: 60 366



Цитата(mcheb @ Nov 21 2016, 21:21) *
надо взять ПИК Си компилер от CCSinfo и забыть про movf movwf movlw и прочую retlw. Как вариант можно SDCC


Я в си не могу. У него такой синтаксис мудовый, что увы, я так и не смог себя заставить его полюбить.
Бейсик, паскаль, фортран, даже асм пиковский - на ура. А эта дрянь не пошла, как вижу эти фигурные скобки, хэши и прочее издевательство над здравым смыслом, моими глазами и английским языком - омерзение просто вызывает, не могу и все.

По использованию FSR в примере выше есть чего сказать?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 21 2016, 16:13
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Не хэши, а хексы.
Отличный язык. Простой, красивый. На asm PIC-и я тоже программировал. А как познал C, забыл про asm. И про PIC тоже. :-)
P.S. Вы и в asm "не можете". laughing.gif
Go to the top of the page
 
+Quote Post
Billy_Bones
сообщение Nov 22 2016, 03:34
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-10-10
Пользователь №: 60 366



Все такие добрые, аж блевать тянет.

Q: мне надо на доске просверлить ряд дырок строго по прямой, через одинаковые промежутки, есть дрель и короткая линейка, как лучше поступить.
А: Возьми станок с ЧПУ, нахер тебе эта дрель, все равно ты ей пользоваться не умеешь (я тоже не умею, но разве это так важно, совет-то я могу дать).

До свидания, "помощнички", нашел нужные мне ответы у буржуев в форумах, они вменяемые, в отличие от.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 22 2016, 04:42
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Что там давать. Есть счетчик, в него записал число элементов массива. Есть регистр косвенной адресации, записал в него адрес массива. Используй его для записи и чтения, инкрементируй, а счетчик уменьшай до нуля. А как станет нулем, начинай сначала.
А завтра будет Q: А какой рукой держать дрель?
Go to the top of the page
 
+Quote Post
Kopa
сообщение Nov 22 2016, 04:56
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(Billy_Bones @ Nov 21 2016, 19:22) *
Я в си не могу. У него такой синтаксис мудовый, что увы, я так и не смог себя заставить его полюбить.
Бейсик, паскаль, фортран, даже асм пиковский - на ура.

bb-offtopic.gif
А меня Форт "испортил" smile3046.gif biggrin.gif

P.S. Кстати Форт (Forth) разных есть, включая и несколько для PIC контроллеров. Вот уж где скобок нет в структуре языка (от слова почти) в понимании Си языков.
Интересна и такая методичка Г.Р. Алпатов Применение PIC-контроллеров в измерительной технике.
ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
Ростов-на-Дону
2008г
F2P или Тут
Проекты на этом же варианте Форт подобного языка.PIC Forth
Здесь тоже какие то уроки
FlashForth is a Forth stamp system implemented on the Microchip 8-bit PIC18F and 16-bit PIC24, 30, 33 and the Atmel Atmega microcontroller families.
и.т.д, и.т.п. Тут целый архив Форт "истории"
Но местное сообщество, в основном, инертно к Forth (Форт) языковому подходу разработки ПО для контроллеров.

Сообщение отредактировал Kopa - Nov 22 2016, 05:39
Go to the top of the page
 
+Quote Post
k155la3
сообщение Nov 22 2016, 12:27
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Нутак Вы же нашли indirect / "косвенная регистровая адресация" так это ОНО.
На младших PIC работать с ASM - это из ряда мазохизма и сокральных знаний "ниочем".
Не теряйте время, не мучайте мозг, изучайте С. И возьмите более мощный (/современный) процессор из техже PIC.



Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 16:47
Рейтинг@Mail.ru


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