дистанционное управление на 20 нагрузок на ATtiny2313

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

Код: Выделить всё

ldi Temp,RamEnd            ;загрузить в Темп адрес последней ячейки ОЗУ
out SPL,Temp             ;вывести в SPL значение из Temp


RamEnd - это константа, равная значению последнего адреса ОЗУ. Она инициализируется в файле def.inc.
SPL - это регистр указателя стека, Stack Pointer Low.


Почему LOW? Дело в том, что в контроллере 2313 разрядность адреса ОЗУ не превышает 8 бит. Значит, и указатель стека должен быть 8-битным. Для его хранения, соответственно, используется один 8-битный регистр.
У некоторых других контроллеров объем ОЗУ больше, и для его адресации используют два 8-битных регистра. Соответственно, младшие разряды указателя стека в таком случае будут храниться в регистре SPL, а старшие - в SPH (Stack Pointer High). В целях унификации кода для всех контроллеров, в 2313 у SPL оставили на конце букву L, хотя никакого SPH в данном контроллере нет и быть не может.


речь идет об микросхеме AT90S2313 согласно материалу взятому от сюда http://radiokot.ru/start/mcu_fpga/avr/08/
в тини 2313 так же? или как указал уважаемый jordan ???????
Последний раз редактировалось uwrtey Чт янв 05, 2012 12:55:25, всего редактировалось 1 раз.
не зная броду не лезь к вольтмоду
Аватара пользователя
jordan
Грызет канифоль
Сообщения: 271
Зарегистрирован: Чт апр 01, 2010 14:14:55

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение jordan »

Уважаемый uwrtey, я вам скопировал кусок своего РАБОЧЕГО кода, а вообще для тинки можно и так и так, это антологичные записи, так как low(RamEnd) означает просьбу компилятору взять младший байт константы RamEnd, а если там всего один байт то он и будет младшим, и компилятор и результате подставит одно и тоже число...
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

круто! но я думаю что Ваш вариант лучше (универсальный) и лучше привыкать к нему!
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

у меня полно кварцев на 20мгц так что буду применять их...
пошел цикл задержки писать... по ходу возникли вопросы и я сунул их сюда - viewtopic.php?f=20&t=966&start=1920
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

задержку написал и немного поправил код
Вложения
передатчик.txt
(28.4 КБ) 196 скачиваний
не зная броду не лезь к вольтмоду
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение Jack_A »

uwrtey писал(а):задержку написал и немного поправил код



Ну так скорми компилятору и посмотри, сколько выдаст ошибок. Мой выдал 42.
Блин, ну кто так учил писать ?
Если в функции Delay стоит ':' , то это не значит, что функция называется 'Delay:' , двоеточие означает, что это метка, и вызов функции д.быть
rcall Delay
безо всякого ':'

Текст чудовищный.
Меня не покидает ощущения, что ты прикалываешься.
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

Jack_A писал(а):Блин, ну кто так учил писать ?

ни кто! кроме местной обучалки! :)
безо всякого ':'

спасибо что носом ткнул ! это я упустил! бегло пробежался по коду нашел еще кучу лишних двоеточий!
Jack_A писал(а):Текст чудовищный.
Меня не покидает ощущения, что ты прикалываешься.

нет не прикалываюсь! вот проделал работу над ошибками
с одним только delay замучился и сбился со счету на 130 штуках
прошу сильно не пинать! это мой первый код...
если будете носом (мордой) тыкать в мои косяки, то шипеть не буду! только спасибо скажу...
спасибо Jack_A
Вложения
передатчик.txt
(28.18 КБ) 175 скачиваний
не зная броду не лезь к вольтмоду
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение Jack_A »

Приятно, когда человек в ответ на критику не лезет в пузырь, а еще и благодарит. Так что не безнадежен.
Тока не пойму : зачем самопальный интерфейс лепишь? Чем штатный UART не угодил ? Там загрузил байт в регистр данных, он все сделает, и не парься над времянкой. Это для радиоуправления моделью ? Если радиовзрыватель, то -- без меня.
Чтоб не зас.рять форум, можешь в личку. Постараюсь ответить.
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

20 каналов для взрывателя многовато! :))) ( в детстве петард на взрывался - сейчас абсолютно равнодушно к пиротехнике)
тем более сначала хотел вай-фай использовать и ноутбуки... (в самом первом сообщении писал) дороговато как то для такого :)))
для радиомодели полезно использовать пропорциональное управление....(хотя в дальнейшем есть задумка реализовать БПЛА, но я для нее пока маловат)
этот пульт управления будет частью системы умный дом (точнее умная дача) и очень полезным в плане моего обучения по передачи данных...
я бы с удовольствием использовал UART если бы знал как...
я кроме местной обучалки ни чего не читал - точнее читал, но на этом сайте понятнее всего-
все разжевано и в рот положено остается только проглотить.. :) ОГРОМНОЕ СПАСИБО ВСЕМ АВТОРАМ САЙТА, И ВСЕХ СТАТЕЙ!!!
нашел где то инфу по UART-у но так ни чего и не понял из того что там написано
(было бы здорово если бы обучалка по авр постепенно пополнялась и примеры с UART появились бы в ней)
ну так вот раз UART я не знаю, то решил все сам делать.....(раз уж начал придется доводить до ума)
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

сейчас установлю на пк протеус (если нарою) и студию 5 (она у меня уже имеется) - буду пытаться компилировать и симулировать.... :)
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

сунул в компилятор (студию 5) показывает 21 ошибку
как переходить к этим ошибкам? (двойным кликом по ошибке не переходит)
рядом пишет Line 122 -- это видимо строка 122 ? только мне с этого ни холодно ни горячо! строки тут не пронумерованы! как искать эти ошибки?
не зная броду не лезь к вольтмоду
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение Jack_A »

Еще раз советую : из-за непонимания работы штатного устройства лепить самопальное - это путь в никуда ( сам по молодости грешил этим ввиду лени ) . И не научишься, и устройство не соберешь, а если и соберешь, то глюкавое. Тем боле что проще UARTа трудно что представить. Кроме обучалки, если в даташитах по аглицки не шаришь, ст`оит почитьать что-нить для чайников ( и не только ) вроде Евстифеева ( сам я не читал :) ).
Насчет Студии - сам использую 4-ю и переходить не собираюсь. В 4-й во вкладке Project -> Assember option нужно установить птицу на Create List file - и будет тебе полная картина. В 5-й наверняка есть что-то аналогичное.
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

спасибо, щас пошарю!
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

что то сделал (сам не понял) и переход на ошибки заработал (скорее всего перенес папку для сохранения проектов прямо на диск C и назвал ее на латинице, а то раньше она была в папке Мои Документы)
Последний раз редактировалось uwrtey Сб янв 07, 2012 07:11:25, всего редактировалось 1 раз.
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

код теперь выглядит вот так
передатчик.txt
(28.18 КБ) 161 скачивание

копилятор пятой студии выдает 21 ошибку
не нравится вот такой участок кода

Код: Выделить всё

;*******************************************************************************
; проверка кнопок
;*******************************************************************************

keyboardreed:              ;метка - опрос клавиатуры

ldi Temp,0b00000001
out PortB,Temp              ;проверяем первую колонку клавиатуры (кнопки 1,6,11,16)

in Temp,PinD              ;читаем порт "D" (читаем первую строку в первой колонке клавиатуры)
cpi Temp,0b00000001    ;нажата кнопка 1 ?
breq METKAkey1      ;если нажата то идти на метку.....
                         ;иначе  - идем дальше по коду
cpi Temp,0b00000010    ;нажата кнопка 6 ?
breq METKAkey6      ;если нажата то идти на метку.....
                         ;иначе  - идем дальше по коду
cpi Temp,0b0000100      ;нажата кнопка 11 ?
breq METKAkey11      ;если нажата то идти на метку.....
                         ;иначе  - идем дальше по коду
cpi Temp,0b0001000           ;нажата кнопка 16 ?
breq METKAkey16      ;если нажата то идти на метку.....
                         ;иначе  - идем дальше по коду
..................................

конкретно показывает что не нравиться выражение breq METKAkey6 (breq METKAkey11), (breq METKAkey16)!!!
хотя breq METKAkey1 съел и не подавился!
такое ощущение что что сто случилось с содержимым регистра Temp в который записали результат чтения порта D (in Temp,PinD)
По сути, сравнение - это вычитание из регистра константы. Если результат - ноль - значит они равны. Однако, при этом, содержимое регистра не теряется.
пробежался глазками по коду, косяков не нашел! ( или плохо искал!!! :kill: )
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

ткните пожалуйста меня носом... :oops:
не зная броду не лезь к вольтмоду
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение Jack_A »

Пока прога не откомпилирована и не залита в МК, с регистром ничего случиться не может, это абсурд.
Насчет меток : насколько помнит мой склероз, метка определяется по первым 8 символам ( это зависит от вида ассемблера ), и ошибка при переходе может быть по одной из 2 причин :
1) Нет той метки, на которую указывает команда перехода.
2) Расстояние по коду до этой метки превышает допустимое ( надо смотреть в ДШ )
В таких случаях поступают так :

----------
Нужно:
breq lab00
......
lab00: ( далеко расположена )
----------
Делаем так :
brne no00
rjmp lab00
no00: ..... ( следующая команда )

........
lab00: ....
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

огромное спасибо Jack_A!
Пока прога не откомпилирована и не залита в МК, с регистром ничего случиться не может, это абсурд.

еще как может! вдруг я дальше по коду накосячил что-нибудь с содержимым регистра Temp :) (но я проверил вроде косяков нет)
то есть breq не может далеко прыгнуть? а rjmp может?
буду пробовать!
еще раз спасибо Тебе Jack_A!
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

ура! теперь ошибок 0
передатчик - исправлен RJMP.txt
(28.61 КБ) 168 скачиваний

сделал именно так как посоветовал Jack_A

Код: Выделить всё

Делаем так :
brne no00
rjmp lab00
no00: ..... ( следующая команда )

........
lab00: ....

осталось сунуть это дело в Протеус...
не зная броду не лезь к вольтмоду
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: дистанционное управление на 20 нагрузок на ATtiny2313

Сообщение uwrtey »

вот тут схему подключения клавы накидал
1.jpg
(184.24 КБ) 398 скачиваний

я правильно понял - младший бит в DDRB это 12 ножка микросхемы ? (PB0)
не зная броду не лезь к вольтмоду
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»