Billy_Bones
Nov 21 2016, 03:57
В одной моей железке нужно сделать фильтр. Читается из ADC значение, кладется в массив из 16 регистров, по кругу, переписывая старое значение.
Потом эти 16 регистров суммируются, делятся на 16 - получается среднее за окно из 16 измерений
Так вот - как организовать запись в массив по счетчику, на mpasm?
Чтоб в счетчике крутился номер ячейки, а процедура по этому номеру в оную ячейку писала.
В массивы констант (таблицы) по retlw "значение" я умею, а вот с переменными что-то не приходит в голову как изящно поступить.
Может есть опыт?
Billy_Bones
Nov 21 2016, 06:35
Начал читать про 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 ; - запись ячейки массива
Я нигде не ошибся?
надо взять ПИК Си компилер от CCSinfo и забыть про movf movwf movlw и прочую retlw. Как вариант можно SDCC
Billy_Bones
Nov 21 2016, 15:22
Цитата(mcheb @ Nov 21 2016, 21:21)

надо взять ПИК Си компилер от CCSinfo и забыть про movf movwf movlw и прочую retlw. Как вариант можно SDCC
Я в си не могу. У него такой синтаксис мудовый, что увы, я так и не смог себя заставить его полюбить.
Бейсик, паскаль, фортран, даже асм пиковский - на ура. А эта дрянь не пошла, как вижу эти фигурные скобки, хэши и прочее издевательство над здравым смыслом, моими глазами и английским языком - омерзение просто вызывает, не могу и все.
По использованию FSR в примере выше есть чего сказать?
Не хэши, а хексы.
Отличный язык. Простой, красивый. На asm PIC-и я тоже программировал. А как познал C, забыл про asm. И про PIC тоже. :-)
P.S. Вы и в asm "не можете".
Billy_Bones
Nov 22 2016, 03:34
Все такие добрые, аж блевать тянет.
Q: мне надо на доске просверлить ряд дырок строго по прямой, через одинаковые промежутки, есть дрель и короткая линейка, как лучше поступить.
А: Возьми станок с ЧПУ, нахер тебе эта дрель, все равно ты ей пользоваться не умеешь (я тоже не умею, но разве это так важно, совет-то я могу дать).
До свидания, "помощнички", нашел нужные мне ответы у буржуев в форумах, они вменяемые, в отличие от.
Что там давать. Есть счетчик, в него записал число элементов массива. Есть регистр косвенной адресации, записал в него адрес массива. Используй его для записи и чтения, инкрементируй, а счетчик уменьшай до нуля. А как станет нулем, начинай сначала.
А завтра будет Q: А какой рукой держать дрель?
Цитата(Billy_Bones @ Nov 21 2016, 19:22)

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

А меня Форт "испортил"
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 (Форт) языковому подходу разработки ПО для контроллеров.
k155la3
Nov 22 2016, 12:27
Нутак Вы же нашли indirect / "косвенная регистровая адресация" так это ОНО.
На младших PIC работать с ASM - это из ряда мазохизма и сокральных знаний "ниочем".
Не теряйте время, не мучайте мозг, изучайте С. И возьмите более мощный (/современный) процессор из техже PIC.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.