Обсуждаем контроллеры компании Atmel.
Ответить

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 11, 2021 12:21:42

С.Н. писал(а):переперобывал
чтобы получилось на до пробОвать, а не пробЫвать ...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 11, 2021 12:50:56

С.Н. писал(а):переперобывал
чтобы получилось на до пробОвать, а не пробЫвать ...

не удобно получилось...согласен.


Нашел сам только что решение по второму вопросу:

#define A 8.1
..
.equ B=int(23456/A)
Проверил - работает.

А вот с точностью вычисления в препроцессоре пока нет решения.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 11, 2021 14:19:08

Отдайте пользователю дробное число А, потом преобразуйте его для удобства вычислений( *100)
С=А*100
В=(int(2345600/C)
Или как-то так.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт апр 23, 2021 20:40:30

Извиняюсь за баян, кто-то пробовал ЖКИ ч/б нокии 5110 на AVR? Собрал схемку в протеусе, делаю тестовый код для самых базовых команд, а дело не едет, даже зажечь все сегменты черным не получается, что-то упускаю.

Код:
;Nokia5110 ЖКИ тест
.device Atmega8
.include "m8def.inc"   ;1МГц

;lcd Port
.equ ddrLCD=ddrD
.equ portLCD=portD
;lcd Pins,распиновка ЖК:
.equ _light=1;light
.equ _pwr=2   ;+5v
.equ _gnd=0   ;gnd
.equ _sclk=3   ;clk,sclk - клок
.equ _sdin=4   ;din,sdin - дата
.equ _dc=5   ;dc,d/c - выбор копанда/данные
.equ _sce=6   ;ce,sce - chip enable
.equ _rst=7   ;rst - reset

.org 0            ;начало кода
   rjmp start

start:
;====установка портов====
ldi   R16,(1<<_pwr)|(1<<_gnd)|(1<<_light)|(1<<_sclk)|(1<<_sdin)|(1<<_dc)|(1<<_sce)|(1<<_rst)
out   ddrLCD,R16
ldi   R16,(1<<_pwr)|(0<<_gnd)|(1<<_light)|(1<<_sclk)|(0<<_sdin)|(1<<_dc)|(0<<_sce)|(1<<_rst)
out portLCD, R16
clr R16
out ddrB, R16   ;PortB
out portB, R16
out ddrC, R16   ;PortС
out portC, R16
;----------
;инициализация Nokia5110
cbi portLCD,_rst
nop
sbi portLCD,_rst
;команда
cbi portLCD,_dc

;0x09 зажечь все пиксели
cbi portLCD,_sdin;0
cbi portLCD,_sclk
sbi portLCD,_sclk
cbi portLCD,_sdin;0
cbi portLCD,_sclk
sbi portLCD,_sclk
cbi portLCD,_sdin;0
cbi portLCD,_sclk
sbi portLCD,_sclk
cbi portLCD,_sdin;0
cbi portLCD,_sclk
sbi portLCD,_sclk
sbi portLCD,_sdin;1
cbi portLCD,_sclk
sbi portLCD,_sclk
sbi portLCD,_sdin;1
cbi portLCD,_sclk
sbi portLCD,_sclk
cbi portLCD,_sdin;0
cbi portLCD,_sclk
sbi portLCD,_sclk
sbi portLCD,_sdin;1
cbi portLCD,_sclk
sbi portLCD,_sclk

main:
rjmp main

Согласно мануалу для общения используется SPI, накидал тестовый софтварный обмен, в мануале пишется, данные считываются при подъеме с лог0 на лог 1 клока, но в протеусе и на макетке стола дело не двинулось :?

Изображение Изображение Изображение

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб апр 24, 2021 08:05:39

{ согласно мануалу}
В мануале процедура инициализации описана. Ресет там подольше длится, чем NOP. Это раз. А 2, 3, и тд пока не рассматриваем.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб апр 24, 2021 11:05:24

С протеусом удалось договорится используя пример из компонента ЖКИ и отладочный виртуальный SPI, подглядел тайминги и задержки, после чего виртуальная среда начала рисовать примерно то же самое что в коде, но на реальном ЖКИ изображения пока нет. Продолжаю мучить :roll:

Изображение Изображение

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб апр 24, 2021 12:13:47

В сети доуя примеров работы с этим стеклом на асме.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 00:50:42

Следуя примеру выяснилось что сам ЖКИ внутри не касался платы, поэтому не грузился :shock:
Подогнув контакты проблема не отображения была решена, но видать индикатор не новый, поле не полное, и отображаются 38 строк из 48, а так работает.

Изображение Изображение

Код:
;инициализация Nokia5110
sbi portLCD,_rst

cbi portLCD,_dc;инструкции

ldi R17,0x20   ;LCD Basic Commands
rcall write5110
ldi R17,0x0c   ;LCD in normal mode
rcall write5110

sbi portLCD,_dc;данные

ldi R16,84  ;закрасить блок 84х8 точек
srtoka:
ldi R17,0b10101010
rcall write5110
dec R16
brne srtoka
...
...
;SPI Nokia 5110
;R17-дата,R18-счетчик
write5110:
clr R18         ;counter
data5110:
cbi portLCD,_sdin;sdi=0
lsl R17         ;move
brcc b_5110      ;C=0,флаг переноса
sbi portLCD,_sdin;sdi=1
b_5110:
sbi portLCD,_sclk;sclk=1
inc R18
cbi portLCD,_sclk;sclk=0
cpi R18,8      ;8-бит
brlo data5110
ret

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 07:50:26

Уже похоже на правду. Сравните с портянкой из первого поста.
Что-то мне шепчет, что вместо многоточия у Вас то же самое для других строк.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 10:49:10

Так и есть, где многоточие блок закраски строки в 8 пикселей, на всем ЖКИ 6 таких строк по 8, ну по байту, суммарно 6*8=48 пикселей, все как в мануале, а многоточие поставил чтобы не копипастить на форуме 6 одинаковых блоков кода, это же тестовая наброска, ей можно быть портянкой :)))

Код:
ldi R16,84
srtoka:
ldi R17,0b10101010
rcall write5110
dec R16
brne srtoka

ldi R16,84
srtoka2:
ldi R17,0b10101010
rcall write5110
dec R16
brne srtoka2
...
...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 11:02:38

А счётчик строк организовать что не позволяет?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 12:10:06

все позволяет, задача была включить, заценить как работает, плюшки потом :)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 17:15:28

У Вас есть подпрограммы, т.е. нужна установка указателя стека.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 18:02:14

Я всё-таки надеялся, что у него стек установлен ;)
Иначе как работать то?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 19:50:11

Ну он мог и не вставлять инит стека, типа, только работа с дисплеем... :)))

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс апр 25, 2021 23:38:44

Да есть там инициализация стека, как бы оно иначе находило возврат из подпрограмм, ЖКИ норм., особенно после 1602 :wink:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн апр 26, 2021 15:08:04

Паша, а что ты собираешься выводить на этот экран?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн апр 26, 2021 22:21:17

Пиксельный ЖКИ хочу использовать в проекте поискового радио устройства, делаю такую самоделку на базе радиомодуля LoRa 433Мгц 100мВт с GPS, на квадратном экране нокии лучше смотрится стрелочка с направлением и дистанция до маячка, чем на 1602. Конечно существуют готовые решения на базе сотовой сети и GPS, но там вес и размеры больше а еще абонплата, да и свое всегда веселее :beer:



Вот эскизная картинка планов:

Изображение

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб дек 11, 2021 14:52:06

Пришла зима, появилось свободное время повозиться с микроконтроллерами. Оригинального ничего не придумал, решил сделать большие часы с табло на WS2812b. Собираюсь ещё прикрутить датчик температуры на DS18B20, но это потом. Как истинный извращенец пишу на ASM.
Теперь о главном. Так-как цифры самопальные, нужна своя таблица кодировки. А где её хранить? Правильно в програмном флеше. Вышла вот такая строчка
Код:
.db   0xFC,0x84,0xDA,0xCE,0xA6,0x6E,0x7E,0xC4,0xFE,0xEE

Всё хорошо, но появилась необходимость в "пробеле". Добавил
Код:
.db   0xFC,0x84,0xDA,0xCE,0xA6,0x6E,0x7E,0xC4,0xFE,0xEE,0x00

Microchip Studio начала отчаянно ругаться на эту строку. Поиски в интернете и эксперименты помогли побороть эту проблему. Работает так
Код:
.db   0xFC,0x84,0xDA,0xCE,0xA6,0x6E,0x7E,0xC4,0xFE,0xEE,0x00,0x00

На сколько я понял, проблема была в следующем. Адресация програмной памяти идёт по два байта, по этому Microchip Studio жутко не нравилось, что число записываемых байт было нечётным. При попытке записи нечётного числа байт, студия как-то калечит последний байт, о чём она меня и предупреждала.
Прошу более знающих людей подтвердить или опровергнуть мои рассуждения.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб дек 11, 2021 15:55:05

ну не знаю... в древние времена моего увлечения ассемблером вроде как студия просто дописывала к строке "лишний" нулевой байт, и не ругалась, и ничего не калечила... хотя времена настолько древние, что память может и подвести.
Ответить