Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 12:17:55

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7597 ]     ... , , , 363, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн окт 19, 2020 13:06:16 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Зависит от режима работы.
При "ручном" останове текущее содержимое таймера не изменится (если момент останова не совпадет с соответствующей точкой работы таймера - например сброс по совпадению).
Насчет обнуления - это только или по сбросу или по выходу из сна оговорено - смотрим соответствующий раздел даташита.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн окт 19, 2020 14:01:11 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
... Установив биты предделителя CS12 – CS10 в "000" мы останавливаем таймер. При этом TCNT1 обнуляется? Если опять запустить счёт он продолжится со значения в момент остановки или начнётся с нуля?
Да, таймер останавливает счёт. Предделитель нет! При последующем запуске продолжение счёта в моменты переполнения предделителя.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн окт 19, 2020 22:08:32 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Вс окт 18, 2020 19:01:52
Сообщений: 31
Откуда: Харьковская область
Рейтинг сообщения: 0
Сидел разбирался с кодом akl. Напишу, что я понял и свои вопросы.
Стартовая инициализация. Вы убрали очистку ОЗУ. Вы считаете это лишним, или спрятали что-бы не загромождать код? С настройками таймера понятно - счётчик стоит, прерывания по захвату разрешены, предделитель сброшен. В R22 заготовка для TCCR1B.
Основной цикл. Пока Т=0 - крутимся вначале.
Прерывание. По первому заходу всё ясно - запускаем счётчик, сбрасываем флаг из R30 и в основной цикл. А вот второй заход (с переходом на метку ZAHVAT) мне не совсем понятен. Я бы сократил его до
Код:
ZAHVAT:
   in Temp1,ICR1L    ;копируем значение регистра захвата
   in Temp2,ICR1H
   SET  ;устанавливаем бит Т
EXT:
RETI

Ведь после этого мы попадаем в LOOP с Т=1. Нас пропустит на вывод на индикатор и задержку. А в конце вы поставили
Код:
rjmp   RESET

А там все необходимые настройки таймера и флагов уже прописаны. Так-что все манипуляции с регистрами в прерываниями я считаю излишними.
И последний вопрос. Если вы убрали очистку ОЗУ из блока стартовой инициализации, что очистит TCNT1?

_________________
Это Спарта! В смысле, ассемблер. Все ручками.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт окт 20, 2020 06:30:29 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
...убрали очистку ОЗУ из блока стартовой инициализации, что очистит TCNT1?
Область адресов RAM и область регистров I/O разные. А так, да просто не включил при инициализации

Код:
   ;настройка таймера1
   ldi Temp1, 0b00000000
   out TCCR1A, Temp1

;   CLR Temp1         ;обнуляем счётчмк
   out TCNT1H,Temp1
   out TCNT1L,Temp1
;================
;   LDI   R16,1<<PSR10
;   OUT   SFIOR,R16   ; обнулить предделитель таймера
;================

Убрал очистку предделителя при инициализации. Лучше её делать в начале измерения, чтобы счет вкупе с предделителем начинался с одного и того же места.

Код:
TIM1_CAPT:            ;обработчик прерывания по захвату таймера 1
   SBRS R30,0   
   rjmp ZAHVAT

   LDI   R16,1<<PSR10 ;!!!!!!!!!!!!!!!!!!
   OUT   SFIOR,R16      ;!!!!!!!!!!!!!!!

   OUT   TCCR1B,R22
   CBR   R30,1<<0
   rjmp EXT
ZAHVAT:


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт окт 20, 2020 11:06:18 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Вс окт 18, 2020 19:01:52
Сообщений: 31
Откуда: Харьковская область
Рейтинг сообщения: 0
Да, область регистров I/O при такой очистке не затрагиваются. Попробую вечером объединить свой код с вашим.

_________________
Это Спарта! В смысле, ассемблер. Все ручками.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср окт 28, 2020 01:28:04 
Это не хвост, это антенна
Аватар пользователя

Карма: 5
Рейтинг сообщений: 3
Зарегистрирован: Ср янв 30, 2008 17:52:55
Сообщений: 1391
Рейтинг сообщения: 0
Подскажите пожалуйста..
Вот читаю ДШ на Тини13...

Про внешние прерывания..
Там написано что прерывания осуществляются от пинов: INT0 и PCINT0....PCINT5. с последними все понятно... но вот INT0 на каком выводе ???
Или я чтото не понял...?


Вложения:
IMG_20201028_010908.jpg [79.3 KiB]
Скачиваний: 192
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср окт 28, 2020 01:34:17 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Для soic
Цитата:
PB1 (MISO/AIN1/OC0B/INT0/PCINT1)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср окт 28, 2020 01:58:43 
Это не хвост, это антенна
Аватар пользователя

Карма: 5
Рейтинг сообщений: 3
Зарегистрирован: Ср янв 30, 2008 17:52:55
Сообщений: 1391
Рейтинг сообщения: 0
Для soic
Цитата:
PB1 (MISO/AIN1/OC0B/INT0/PCINT1)

Большое спасибо...

Пс
Вот я лох...
Не заметил...


Вложения:
IMG_20201028_015235.jpg [43.43 KiB]
Скачиваний: 173
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 17, 2020 13:16:05 
Открыл глаза

Зарегистрирован: Ср дек 25, 2019 21:17:31
Сообщений: 67
Откуда: Саратов
Рейтинг сообщения: 0
Всем доброго дня. Завалялось у меня несколько штук attiny261, ради интереса решил попробовать запустить PWM6 Mode. Даташит изучал как мог, с помощью гуглопереводчика. Попробовал в протеусе - на выходах сигнала нет. В железе еще не собирал.. Подскажите, где ошибка? CKSEL fuses 0001, SUT1..0 = 10.
Код инициализации таймера1 под спойлером.
Код:
  ldi temp, 0b00111111  ; выводы ШИМ на выход (6 PWM)
        out ddrb, temp        ;       
           
;        t1
                  ldi temp, 1<<PLLE ; включаем PLL
        out PLLCSR, temp  ;

        in temp, PLLCSR   ; ждем установки
        sbrs temp, PLOCK  ; бита PLOCK
        rjmp PC-2         ;
                  ldi temp, 1<<PCKE|1<<PLLE ; включаем прескалер
        out PLLCSR, temp  ;

                  ldi temp, 1<<DTPS10; Dead Time
        out TCCR1B, temp     ;
        ldi temp, 0b00110011 ;
        out DT1, temp        ;

        ldi temp, 1<<COM1D0|1<<PWM1D;
        out TCCR1C, temp    ;
                  ldi temp, 1<<WGM11 ;
        out TCCR1D, temp   ;
        ldi temp, 1<<COM1A0|1<<COM1B0|1<<PWM1A|1<<PWM1B; PWM6, ïîäêë âûõîäû.
        out TCCR1A, temp   ;

        ldi temp, 1        ; 341
        out TC1H, temp     ;
        ldi temp,85        ;
        out  OCR1A, temp   ;

И еще вопрос возник - что за регистр на фото? Не нашел про него описания в ДШ. По названию вроде бы понятно, что он должен делать, но в него ничего не пишется и адрес его странный. [img][img]https://img.radiokot.ru/files/138172/thumbnail/2e26kx6sqy.png[/img][/img]


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 17, 2020 19:01:21 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 1
Стартовать тоже нужно
Спойлер
Код:
   ldi temp, 0b00111111  ; выводы ШИМ на выход (6 PWM)
   out ddrb, temp        ;       
           
   ldi temp, 1<<PLLE ; включаем PLL
   out PLLCSR, temp  ;

         in temp, PLLCSR   ; ждем установки
         sbrs temp, PLOCK  ; бита PLOCK
         rjmp PC-2         ;
           ldi temp, 1<<PCKE|1<<PLLE ; включаем прескалер
         out PLLCSR, temp  ;

   LDI R21,1<<DTPS10; Dead Time
   out TCCR1B,R21     ;
;   ldi temp, 1<<DTPS10; Dead Time
;   out TCCR1B, temp     ;

         ldi temp, 0b00110011 ;
         out DT1, temp        ;

   ldi temp, 1<<PWM1A|1<<COM1A1|1<<COM1B1; PWM6, iiaee auoiau.
;????   lldi temp, 1<<PWM1A|1<<COM1A1|1<<COM1B1; PWM6, iiaee auoiau.
         out TCCR1A, temp   ;
         ldi temp, 1<<COM1D1 ;
         out TCCR1C, temp    ;
           ldi temp, 1<<WGM11 ;
         out TCCR1D, temp   ;

         ldi temp, 1        ; 341
         out TC1H, temp     ;
         ldi temp,85        ;
         out  OCR1A, temp   ;
         ldi temp,75        ;
         out  OCR1B, temp   ;
         ldi temp,65        ;
         out  OCR1C, temp   ;

   LDI R21,1<<DTPS10|1<<CS10; Старт Dead Time+F_CPU/1
   out TCCR1B,R21     ;

   RJMP   PC

По регистру :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт янв 01, 2021 21:35:57 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Вс окт 18, 2020 19:01:52
Сообщений: 31
Откуда: Харьковская область
Рейтинг сообщения: 0
Всем счастливого нового года!
Прикупил на али такую приблуду
Изображение
Называется LED-матрица 8x8 с драйвером max7219. Поигрался с ней в среде Arduino и решил запустить её на ASM. МК atmega8. Включение отдельных пикселей реализовал без проблем. Решил сделать бегущий огонёк в первой строке. Вот код
Спойлер
Код:
.CSEG
;=============
; Таблица прерываний
    .ORG 0x00
        RJMP   RESET         

;=============
; ***** ПОДПРОГРАММы РАБОТЫ С MAX7219
SPI_transfer:     ;отправка данных (Temp5 - команда, Temp6 - данные)
    cbi PORTB, 2 // Вывод SS на 0
   OUT SPDR, Temp5 ;отправляем команду
vozvr_1:   
   sbis SPSR, SPIF ;ждём отправки   
    rjmp vozvr_1
   sbi PORTB, 2 // Вывод SS на +5
   cbi PORTB, 2 // Вывод SS на 0
   OUT SPDR, Temp6 ;отправляем данные
vozvr_2:   
   sbis SPSR, SPIF ;ждём отправки   
    rjmp vozvr_2
   sbi PORTB, 2 // Вывод SS на +5
   RET         


delay_01:         ;задержка 0,1 сек
; delaying 799995 cycles:
          ldi  R17, $5F
WGLOOP0:  ldi  R18, $17
WGLOOP1:  ldi  R19, $79
WGLOOP2:  dec  R19
          brne WGLOOP2
          dec  R18
          brne WGLOOP1
          dec  R17
          brne WGLOOP0
; ----------
; delaying 3 cycles:
          ldi  R17, $01
WGLOOP3:  dec  R17
          brne WGLOOP3
; ----------
; delaying 2 cycles:
          nop
          nop
        RET
; ===========


; ***** КОНЕЦ ОБЛАСТИ ПОДПРОГРАММ******
;=============
; Прерывание по сбросу, стартовая инициализация
RESET:   
    ; Инициализация стека
    LDI    Temp1, LOW(RAMEND)
    OUT    SPL, Temp1
    LDI    Temp1, HIGH(RAMEND)   
    OUT    SPH, Temp1
   
    CLI  ; Глобальный запрет прерываний
   
   
    ; настройка SPI
    ldi temp1,0b00101100 // SS, SCK, MOSI на выход
    out DDRB, temp1 // Отправляем в конфигуратор порта
    sbi PORTB, 2 // Вывод SS на +5
    ldi temp1, 0b01010000 // Настраиваем SPI, SPE = 1 это разрешит протокол;
    out SPCR, temp1 // MSTR = 1 говорит что мы руководим посылкой
   

   ; ***** ИНИЦИАЛИЗАЦИЯ МИКРОСХЕМЫ ******
   ;режим "НЕ ТЕСТ"
   LDI    Temp5, 0x0F
   LDI    Temp6, 0x00
   RCALL SPI_transfer

   ;режим "НЕ СОН"
   LDI    Temp5, 0x0C
   LDI    Temp6, 0x01
   RCALL SPI_transfer

   ;яркость
   LDI    Temp5, 0x0A
   LDI    Temp6, 0x08
   RCALL SPI_transfer

   ;режим "ВСЕ ИНДИКАТОРЫ"
   LDI    Temp5, 0x0B
   LDI    Temp6, 0x07
   RCALL SPI_transfer

   ;режим "БЕЗ ДЕКОДЕРА"
   LDI    Temp5, 0x09
   LDI    Temp6, 0x00
   RCALL SPI_transfer

   ;очистка
   CLR     Temp6
   LDI    Temp4, 0x08
   m01:
   MOV     Temp5, Temp4
   RCALL SPI_transfer
   DEC     Temp4
   tst Temp4
    BRNE m01


   ; ***** КОНЕЦ ИНИЦИАЛИЗАЦИИ ******

   LDI    Temp6, 0b00000001

   Proga: // Основная программа
   
   LDI    Temp5, 0x01
   RCALL SPI_transfer
   rol     Temp6
   RCALL delay_01
   
   rjmp Proga

Огонёк бежит, но почему-то постоянно светятся первые пиксели во второй, четвёртой и восьмой строках. Выглядит это так

Не могу понять где косяк, подскажите.

_________________
Это Спарта! В смысле, ассемблер. Все ручками.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 02, 2021 02:13:25 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Не понятно дергание лапы PORTB,2/SS. Для защелки MAX7219 лапа PB2/SS не подходит
Код:
;=============
.equ   LOAD=PB1
; ***** ПОДПРОГРАММы РАБОТЫ С MAX7219
SPI_transfer:     ;отправка данных (Temp5 - команда, Temp6 - данные)
   CBI PORTB,LOAD //
;    cbi PORTB, 2 // Вывод SS на 0
   OUT SPDR, Temp5 ;отправляем команду
vozvr_1:   
   sbis SPSR, SPIF ;ждём отправки   
    rjmp vozvr_1
;   sbi PORTB, 2 // Вывод SS на +5
;   cbi PORTB, 2 // Вывод SS на 0
   OUT SPDR, Temp6 ;отправляем данные
vozvr_2:   
   sbis SPSR, SPIF ;ждём отправки   
    rjmp vozvr_2
   SBI   PORTB,LOAD
;   sbi PORTB, 2 // Вывод SS на +5
   RET


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 02, 2021 09:55:41 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Вс окт 18, 2020 19:01:52
Сообщений: 31
Откуда: Харьковская область
Рейтинг сообщения: 0
Попробовал поменять РВ2 на РВ1 и РВ0 - вообще не запустилось. Включает тестовый режим и всё. Это когда светят все пиксели. Убрал дёрганье ножкой между посылкой первого и второго байта - стало работать как надо на РВ2.

_________________
Это Спарта! В смысле, ассемблер. Все ручками.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 02, 2021 23:40:47 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Вс окт 18, 2020 19:01:52
Сообщений: 31
Откуда: Харьковская область
Рейтинг сообщения: 0
В процессе дальнейшего копания возникла ещё одна проблемка. Попробовал сделать кольцевой сдвиг символа влево. Задумка такова - в оперативке по метке Kod зарезервировано 8 байт. Там лежит построчно закодированный символ. Temp5 - счётчик и указатель на номер строки при передаче. Они совпадают. Извлекаем в Temp6 первый байт, отправляем в max7219, выполняем кольцевой сдвиг и возвращаем в оперативку с пост-инкрементом и снова по кругу. Получился такой код
Спойлер
Код:
LDI    Temp5, 0x01   
Proga:
   
   LDI   XL,low(Kod)     //запись адреса метки ОЗУ
   LDI    XH,High(Kod)
   m05:
   LD     Temp6, X   //получение данных
   RCALL SPI_transfer      //подпрограмма отправки данных (Temp5 и Temp6)
   CLC
   rol     Temp6           //сдвиг байта влево
   BRCC m03
   ORI     Temp6,0b00000001
   m03:
   ST      X+,Temp6         //сохранение нового сзачения с пост-инкрементом
   INC     Temp5            //инкрементируем счётчик
   CPI     Temp5,0x09       //проверяем прошло-ли 8 циклов
   BRNE    m05              //если нет на метку m05
                            //если да:
   RCALL delay_01           //задержка
   LDI    Temp5, 0x01      //обновляем счётчик
   
   rjmp Proga

Символ выводится но не сдвигается. Где я напартачил?

_________________
Это Спарта! В смысле, ассемблер. Все ручками.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 04, 2021 12:06:58 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Для матричного экрана более рационально менять содержимое буфера видеопамяти, а затем делать пакетный вывод в СБИС индикатора.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 04, 2021 14:20:43 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Вс окт 18, 2020 19:01:52
Сообщений: 31
Откуда: Харьковская область
Рейтинг сообщения: 0
А можно немного по подробнее.

_________________
Это Спарта! В смысле, ассемблер. Все ручками.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 04, 2021 17:58:56 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
BOB хотел сказать, что ваши 8 байт являются видеопамятью. Каждые Х мС времени подпрограмма вывода выводит всё содержимое этой видеопамяти в ваш модуль 8Х8. А вы, когда ВАМ надо эту видеопамять модифицируете.

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 04, 2021 18:22:54 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Легче заново набросок сделать, чем в чужом, фрагментами представленном коде, разбираться.
Тем более, что в данном случае надо еще и к даташиту на MAX7219 плотненько возвернуться. Да со структурой привязки пикселей уточнить (теоретически там 8 колонок по 8 вертикальных точек в колонке - блок данных "на боку" - в наличии такой матрицы на данный момент нету за ненадобностью - могу лишь "теоретизировать").
Да и МК для меня не "базовый" - хотя в примитиве с программным SPI что на тиньку2313, что на мегу8 лаподрыг особо отличаться не должен...
Разве что без привязки к МК то уже библиотечка получается...
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 04, 2021 21:09:17 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Вс окт 18, 2020 19:01:52
Сообщений: 31
Откуда: Харьковская область
Рейтинг сообщения: 0
Не уверен, что
BOB51 писал(а):
более рационально менять содержимое буфера видеопамяти, а затем делать пакетный вывод
8)

Тогда надо будет вытащить байт из оперативки, модифицировать, вернуть обратно, а потом ещё раз вытаскивать для отправки. Как по мне - вытащил, отправил, модифицировал, вернул более оптимально. По поводу
BOB51 писал(а):
в данном случае надо еще и к даташиту на MAX7219 плотненько возвернуться. Да со структурой привязки пикселей уточнить

это всё не нужно. По работе с MAX7219 вопросов нет. Вывод реализован без вопросов. Вопрос в модификации. Почему после первого прохода я получаю из оперативки немодифицированные данные?

_________________
Это Спарта! В смысле, ассемблер. Все ручками.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 04, 2021 21:23:43 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Вообще-то данные из ячейки видеобуфера вытаскиваются однократно на каждое обращение к СБИС контроллера.
Тем более, что у АВРок косвенное чтение памяти имеется.
А вот отсылка блока из двух байт при каждом обращении к СБИС (адрес и данные) выполняется.
Полный цикл - пересылка блока 8*2=16 байт по SPI заметно длиннее всех имеющихся обращений к ОЗУ.
8)
Касательно обработки содержимого видеобуфера - это уже на усмотрение автора.
В зависимости от задачи можно обработку и в регистровом файле делать.
:wink:
Допустим блок видеобуфера в ОЗУ имеет вот такое размещение:
Изображение
а вот относительно дисплея... шаблон развернется "боком":
Изображение
Это как первая подсказка к алгоритму обработки.
И еще одно замечание -
Если для циклических процессов (бегущие точки или полоски, разнообразные сдвиги) еще можно применить программные решения, то для версий мультипликации гораздо выгоднее применять ряд из "кадров", размещенных или в ПЗУ или во внешней ЕЕПРОМ.
8)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7597 ]     ... , , , 363, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot], roman.com и гости: 47


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y