Прошу помощи с ATme...
 
Уведомления
Очистить все

Прошу помощи с ATmega8515

7 Посты
2 Пользователи
0 Likes
6,412 Просмотры
Intron
(@intron)
Active Member
Присоединился: 14 лет назад
Сообщения: 7
Topic starter  

Помогите пожалуйста написать код в AVR studio для ATmega8515

Есть 7 кнопок данных и одна кнопка ввода.
Вывести через порт D число, находящееся в EEPROM по адресу, определяемому нажатыми кнопками данных в тот момент, когда была нажата кнопка ввода.

Очень надеюсь,что кто-нибудь поможет.Заранее спасибо.


Цитата
Radioded
(@sergey)
Estimable Member Admin
Присоединился: 5 лет назад
Сообщения: 184
 

Постараюсь помочь, главное не забыть. ;)
По EEPROM можете глянуть статейку: https://radioded.ru/content/view/125/44/
Исходник из этой статьи для вашей задачи нужно чуть-чуть подправить.


ОтветитьЦитата
Intron
(@intron)
Active Member
Присоединился: 14 лет назад
Сообщения: 7
Topic starter  

Буду очень благодарен!
Спасибо за статейку!


ОтветитьЦитата
Radioded
(@sergey)
Estimable Member Admin
Присоединился: 5 лет назад
Сообщения: 184
 

Вспомнил молодость :) . Ностальгия по ассемблеру...
Симулировал в AVR Sudio - все работает. В теории все ОК, как на практике будет не знаю т.к. нет фильтрации дребезга контактов запускающей кнопки.

Схема подключения кнопок и диодов:

Проект в AVR Studio:

Вот исходник:
; https://radioded.ru/forum/viewtopic.php?f=4&t=446
; считывание адреса ячейки памяти EEPROM из порта B
; значение, которое хранится в ячейке памяти выводится в порт D

; кнопка запуска чтения - PE.0, нет фильтрация дребезга контактов

.include "m8515def.inc"

.def temp = R16

rjmp reset

.org 0x0d
rjmp button

reset:

ldi temp, LOW(RAMEND)
out SPL, temp

ldi temp, HIGH(RAMEND)
out SPL, temp

ldi temp, 0xFF
out DDRD, temp ; все ноги порта - выходы

ldi temp, 0xFF
out PORTB, temp ; подтяжка пинов к питанию

ldi temp, (1<<5)
out GICR, temp

sei

loop:
nop
rjmp loop ; бесконечный цикл

button:

in temp, PINB ; считываем уровни с порта B
out EEARL, temp ; запись адреса откуда будем читать
sbi EECR, EERE ; считываем из памяти EEPROM
nop
in temp, EEDR ; копируем в регистр

out PORTD, temp ; зажигаем светодиоды

reti


ОтветитьЦитата
Intron
(@intron)
Active Member
Присоединился: 14 лет назад
Сообщения: 7
Topic starter  

Спасибо огромное за проделанный труд!Очень помогли! ;)


ОтветитьЦитата
Radioded
(@sergey)
Estimable Member Admin
Присоединился: 5 лет назад
Сообщения: 184
 

Рад помочь ;). На днях у меня появилась отладочная плата STK-500, так там как раз стоит ATmega8515 - с ней побалуюсь, протестирую код, что написал.


ОтветитьЦитата
Intron
(@intron)
Active Member
Присоединился: 14 лет назад
Сообщения: 7
Topic starter  

Помогите написать код для такого задания:
По линейке светодиодов на плате должен перемещаться горящий светодиод. Он начинает свое движение с n-ной позиции, которая определяется нажатой кнопкой, и заканчивает свое движение в крайне правой позиции, после этого процесс повторяется. Время свечения в каждой позиции определяется прерыванием по переполнению ТС1.

Не могу разобраться с прерыванием.
Заранее спасибо


ОтветитьЦитата