ГлавнаяРегистрацияВход Сайт Сокола Сергея Четверг, 02.05.2024, 17:02
  Работа с EEPROM - Страница 2 - Форум Приветствую Вас Гость | RSS

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум » Основной форум сайта » Общее » Работа с EEPROM
Работа с EEPROM
miminoДата: Суббота, 26.01.2013, 22:36 | Сообщение # 16
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!
Ну код программы я оценить не могу, к сожалению так до EEPROM у меня руки и не дошли sad
Насчет кода EEPROM, как-то я не вижу, где именно там записаны цифры от 0 до 9. В каком они формате должны быть записаны?

С дисплеем там все несколько веселей. Рекомендую для начала подключать его по 8-проводной схеме, чтобы не мучиться с делением байтов на полубайты. Инициализация дисплея довольно хорошо описана и в его даташите, и в интернете, ничего особо сложного она не представляет. Да и вообще с этими дисплеями работать - одно удовольствие smile
 
AVRикДата: Воскресенье, 27.01.2013, 10:05 | Сообщение # 17
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей, код цифр произвольный из головы, а с ЖК дисплеем попробую поработать. В этом случае надо ипользовать упражнение SOS, записанные байты подряд ?
 
miminoДата: Воскресенье, 27.01.2013, 12:11 | Сообщение # 18
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
В принципе, можно и записывать байты подряд. А можно просто загружать нужные байты командой ldi. Главное - инициализировать дисплей, для этого нужно подать последовательность то ли из 3, то ли из 4 байт. Поскольку это немного, можно и не городить сохранение их в flash-памяти. Ну а там, в итоге Вам решать smile
 
AVRикДата: Понедельник, 28.01.2013, 22:31 | Сообщение # 19
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Хорошо Сергей, буду пробовать работать с дисплеем :yes:

Добавлено (27.01.2013, 19:40)
---------------------------------------------
Сергей, результат нулевой с дисплеем, может что-то недописал ?

;####################################
;# #
;#           ATmega-8             #
;#                                  #
;####################################
.include "m8def.inc"; Присоединение файла описания
.org 0         ;Задание нулевого адреса старта программы
rjmp reset  ;Безусловный переход к метке reset
reset:               ;Начало раздела инициализации контроллера
ldi r16,high(ramend)  ; Загрузка в r16 верхней границы ОЗУ
out SPH,r16   ; Копипрование значений в r16 верхней границы ОЗУ
ldi r16,low(ramend)
out SPL,r16
ser r17            ;Загрузка в регистр r17 единицы
out DDRB, r17     ;Копирование из r17 в DDRB (РВ0 - выход)
ldi r17,1|(3<<1)
out DDRD,r17      ;Включение подтягивающего резистора на входе РВ2

rcall delay          ;Инициализация дисплея
cbi PortD,0
cbi PortD,1
ldi r17,0b00110000   ; Установка разрядности интерфейса
out PortB,r17      ; В порт В
rcall delay          ; Задержка
ldi r17,0b00110000
out PortB,r17
ldi r17,0b00110000
out PortB,r17
rcall delay
ldi r17,0b00111000 ; Установка параметров
out PortB,r17
ldi r17,0b00001000 ; Выключение дисплея
out PortB,r17
ldi r17,0b00000001 ; Очистка дисплея
out PortB,r17
ldi r17,0b00000110 ; Установка режима ввода данных
out PortB,r17
rcall delay
sbi PortD,1   ; Е=1
ldi r18,0x80  ; Адрес ячейка
out PortB,r18
cbi PortD,1   ; Е=0
rcall delay
sbi PortD,0   ; RS=1 запись данных
sbi PortD,1   ; Е=1
ldi r18,0xA0  ; Запись буквы Б
out PortB,r18
cbi PortD,1   ; Е=0
cicle:
nop
rjmp cicle

delay:           ;Начало подпрограммы задержки
ldi r19, 255     ;Загрузка значения в регистр r18
ldi r20, 63      ;Загрузка значения в регистр r19
del:             ;Цикл задержки
subi r19, 1      ;Вычитание 1 из регистра r18
sbci r20, 0      ;Вычитание 0 из регистра r19 с учетом переноса
brcc del         ;Если не было переноса вернуться к метке del
ret              ;Возврат из подпрограммы

Добавлено (28.01.2013, 21:28)
---------------------------------------------
Сергей !
Прошу, помощи активации дисплея и вывода  символов. Все сайты пишут на СИ хотелось бы ассемблере научиться.


Добавлено (28.01.2013, 22:31)
---------------------------------------------
Немогу инициализировать дисплей, Displaytronic PCB-1602S-04.
Даташит для него ненашел, у всех дисплеев информация разная, как быть facepalm


Сообщение отредактировал AVRик - Понедельник, 28.01.2013, 22:33
 
miminoДата: Вторник, 29.01.2013, 02:20 | Сообщение # 20
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Простите, не сразу увидел Ваши сообщения.
Меня несколько смущает инициализация дисплея. Во-первых, непонятно, зачем 3 раза в начале записывать в него один и тот же код.

Цитата
ldi r17,0b00110000   ; Установка разрядности интерфейса
out PortB,r17      ; В порт В
rcall delay          ; Задержка
ldi r17,0b00110000
out PortB,r17
ldi r17,0b00110000
out PortB,r17
rcall delay
Во-вторых, меня несколько смущает задержка. На сколько мкс Вы ее сделали? Там же для разных команд задержка несколько отличается.

Вот процедура инициализации, что я делал, с учетом того, что была несколько иная схема:
ldi r18,0x38   
out portb,r18
rcall delay

ldi r18,0x01
out portb,r18
rcall delay

ldi r18,0x06
out portb,r18
rcall delay

ldi r18,0x0C
out portb,r18
rcall delay

delay:
ldi r16,0x0F
ldi r17,0xFF
delay1:
subi r17,1
sbci r16,0
brcc delay1
ret
 
AVRикДата: Вторник, 29.01.2013, 23:05 | Сообщение # 21
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей !
Бьюс с этим дисплеем выбросить хочется.
Пытаюсь вывести один символ на дисплей результат нулевой.
Может Ассемблер не пригоден для работы с дисплеем ?
Весь интернет завален кодами на СИ, но я их не понимаю !
Что -то не так я пишу или Ассемблер не пригоден для написания программы ?
Задержки вставил для команды на выводе Е.
Что не так ? Или дело во мне ?


;####################################
;# Пример                           #
;#          на ATmega-8             #
;#                                  #
;####################################
.include "m8def.inc"; Присоединение файла описания
.org 0         ;Задание нулевого адреса старта программы
rjmp reset  ;Безусловный переход к метке reset
;.org 4         ;Адрес, с которого начинается расположение констант
;.db 0b11010101, 0b11000100, 0b01000111, 0b01010111; Константы в памяти прогр.
reset:               ;Начало раздела инициализации контроллера
ldi r16,high(ramend)  ; Загрузка в r16 верхней границы ОЗУ
out SPH,r16   ; Копипрование значений в r16 верхней границы ОЗУ
ldi r16,low(ramend)
out SPL,r16
ser r17            ;Загрузка в регистр r17 единицы
out DDRB, r17     ;Копирование из r17 в DDRB (РВ - выход)
ldi r17,1|(3<<1)
out DDRD,r17      ;Копирование из r17 в DDRB (РВ0,1 - выходы)
rcall delay
sbi PortD,1   ; Е=1
rcall delay
ldi r18,0x30  ; Установка разрядности дисплея 8
out portb,r18
cbi PortD,1   ; Е=0
rcall delay
sbi PortD,1   ; Е=1
rcall delay
ldi r18,0x38
out portb,r18
cbi PortD,1   ; Е=0
rcall delay
sbi PortD,1   ; Е=1
rcall delay
ldi r18,0x01
out portb,r18
cbi PortD,1   ; Е=0
rcall delay
sbi PortD,1   ; Е=1
rcall delay
ldi r18,0x06
out portb,r18
cbi PortD,1   ; Е=0
rcall delay
sbi PortD,1   ; Е=1
rcall delay
ldi r18,0x0C
out portb,r18
cbi PortD,1   ; Е=0
rcall delay

sbi PortD,1   ; Е=1
rcall delay
ldi r18,0x0E
out portb,r18  ; Вкл дисплея
cbi PortD,1   ; Е=0
rcall delay

sbi PortD,1   ; Е=1
rcall delay
ldi r18,0x38  ; Установка разрядности
out portb,r18
cbi PortD,1   ; Е=0
rcall delay
sbi PortD,1   ; Е=1
rcall delay
ldi r18,0x81  ; Выбор области DDRAM
out portb,r18
cbi PortD,1   ; Е=0
rcall delay
sbi PortD,0   ; RS=1 запись данных
sbi PortD,1   ; Е=1
rcall delay
ldi r18,0xA0
out portb,r18  ; Запись буквы Б;out PortB,r18
cbi PortD,1   ; Е=0
cbi portd,0
cicle:
nop
rjmp cicle

delay:
ldi r16,0x0F
ldi r17,0xFF
delay1:
subi r17,1
sbci r16,0
brcc delay1
ret


Сообщение отредактировал AVRик - Вторник, 29.01.2013, 23:06
 
miminoДата: Вторник, 29.01.2013, 23:40 | Сообщение # 22
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Я думаю, что Ассемблер тут не при чем. У Вас тут много всего понамешано, видимо, от незнания, какая команда за что отвечает. Я Вам рекомендую почитать статью С.М. Рюмика "Микроконтроллеры AVR. Ступень 6" в журнале Радиоаматор, №6 за 2005 год, стр. 35-39. Там крайне доходчиво описано все, приведены таблички с кодами, диаграммы сигналов на выводах контролера для работы с дисплеем. Я до сих пор, когда надо работать с дисплеями, возвращаюсь к этой статье, лучшего я не находил.
 
miminoДата: Суббота, 02.02.2013, 02:28 | Сообщение # 23
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Что-то вы давно молчите... Как Ваши успехи? Все получается или, наоборот, ничего не получается?
 
AVRикДата: Суббота, 02.02.2013, 10:13 | Сообщение # 24
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей !
Все получилось, символы вывел на дисплей.
Я хочу задать вопрос: в кирилице не все символы могу вывести т.к. там есть страницы 0 и 1. Ноль выводится, а страница 1 не получается, не могу найти команду для вывода
Все бьюсь с бегущей строкой, теперь в дисплее. Написал в программе инкремент по адрессу символов, но происходит перезапись строк, надо их одновременно удалять  следом за записью. Пока не нашел алгоритма.
В СИ весь интенрет завален этим алгоритмом, но Ассемблере надо самому думать.

Добавлено (02.02.2013, 10:13)
---------------------------------------------
Да забыл спросить. Микросхемы мне прислали ATtiny 13, хочу схемку спросить, как создать отладочный модуль. Меня волнует резистор на 10К, подключенный к порту РВ5. Нужна ли джамперная перемычка для программирования.


Сообщение отредактировал AVRик - Суббота, 02.02.2013, 10:14
 
miminoДата: Суббота, 02.02.2013, 15:05 | Сообщение # 25
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Не совсем понял, о каких страницах Вы говорите. Я выводил символы просто, передавая в дисплей их коды от 0x00 до 0xFF. Соответствие кодов реальным символам приведено в той же статье Рюмика.

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

Что касается отладочной платы на ATtiny 13, я никаких перемычек не устанавливал, 10 кОм не мешают программированию.

И еще просьба: Вы лучше вместо добавлений к предыдущему кмментарию пишите новый комментарий, иначе не приходят уведомления о том, что на форуме появилось что-то новое, поэтому могу просто пропустить запись, я ведь не каждый день сюда захожу...
 
AVRикДата: Суббота, 02.02.2013, 23:40 | Сообщение # 26
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
А для работы порта ?

Добавлено (02.02.2013, 19:59)
---------------------------------------------
Сергей, я о русскоязычных дисплеях.
Там есть 2 страницы, памяти кодов.

Добавлено (02.02.2013, 20:02)
---------------------------------------------
Что -то не получается добавить коментарий.

Добавлено (02.02.2013, 20:07)
---------------------------------------------

Цитата
И еще просьба: Вы лучше вместо добавлений к предыдущему кмментарию пишите новый комментарий, иначе не приходят уведомления о том, что на форуме появилось что-то новое, поэтому могу просто пропустить запись, я ведь не каждый день сюда захожу...
Новый комментарий.

Добавлено (02.02.2013, 23:40)
---------------------------------------------

Цитата (AVRик)
Да забыл спросить. Микросхемы мне прислали ATtiny 13, хочу схемку спросить, как создать отладочный модуль. Меня волнует резистор на 10К, подключенный к порту РВ5. Нужна ли джамперная перемычка для программирования.
Попытка добавить отдельный коментарий


Сообщение отредактировал AVRик - Суббота, 02.02.2013, 20:02
 
miminoДата: Воскресенье, 03.02.2013, 01:19 | Сообщение # 27
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Я посмотрел присланный Вами файлик. Честно говоря, я вижу подобное впервые. Поэтому не могу сказать, как перейти на вторую страницу кодов. Я же сам пользовался только первой. Недостающие буквы кириллицы я брал из латиницы, которые имеют одинаковое начертание, например, вместо русской буквы Р брал латинскую P и т.д.

Насчет резистора. Его можно не устанавливать. Внутри контроллера есть внутренняя схема сброса, поэтому внешний резистор может быть нужен только при наличии больших помех.

Насчет комментариев. Вы, видимо, не так меня поняли. Я имел в виду, каждую новую мысль писать в новом сообщении. Например, насчет предыдущего сообщения мне пришло только вот такое уведомление:
Цитата
Пользователь: AVRик
Время добавления: Суббота, 02.02.2013, 19:03
Текст сообщения:
-------------------
А для работы порта ?
-------------------
А тут оказалась куча добавлений smile
 
AVRикДата: Воскресенье, 03.02.2013, 09:28 | Сообщение # 28
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей, первое сообщение раздельное, а последующие включаются в первое. Раздельно писать не получается.

Добавлено (03.02.2013, 09:25)
---------------------------------------------
Вот второе сообщение добавляю следом.

Добавлено (03.02.2013, 09:28)
---------------------------------------------
Что нужно делать, что бы они стали раздельными ?

 
miminoДата: Воскресенье, 03.02.2013, 13:23 | Сообщение # 29
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Все, я понял, Владимир!

Видимо, это недостаток самого движка форума... Буду тогда просто проверять почаще форум, я не знаю, как их разделять sad
 
AVRикДата: Воскресенье, 03.02.2013, 21:02 | Сообщение # 30
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей!
Я пришел к выводу по поводу бегущей строки: Без сдвиговых регистров не обойтись.
В них записывать байты и по очереди и сдвигать.
А символы всетаки брать с ЕЕПРОМ.

Еще у меня новшество, отладочную плату собрал на Tiny-13A.
Сергей, еще вопросик. Пожалуйста сообщите алгоритм электронных часов. Неплохо и календарь чтоб там был.
 
Форум » Основной форум сайта » Общее » Работа с EEPROM
  • Страница 2 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

 

Copyright MyCorp © 2024
Бесплатный конструктор сайтов - uCoz