roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 18:31

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




Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Помогите с написанием программы
СообщениеДобавлено: 26 окт 2004, 17:00 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Помогите пожалуйста! Как в ассемблере включить ногу на прием и если на ней пояляется еджиница то перейти туда то.

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

Спасибо :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 окт 2004, 17:53 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
вот отправная точка, здесь руские описалова.


здесь примеры прог на английском, очень поучительно!

вот здесь некоторые статьи переведены

ну а по вашему вопросу примерно так :

Код:
;* Определения
def  t       = r16 ; переменная
.equ key0    = PB3 ; кнопка0  на PB3
.equ key1    = PB4 ; кнопка1  на PB4

cbi DDRB, key0  ; настройка на вход
cbi DDRB, key1  ; настройка на вход
sbi PORTB, key0 ; включить подтягивающий резистор (активный сигнал будет масса)
sbi PORTB, key1 ; включить подтягивающий резистор (активный сигнал будет масса)

;.......

sbis PINB,key0  ; так мы увеличиваем
inc t          ; или уменьшаем t при нажатии key0 и key1
sbis PINB,key1  ; если ничего не нажато - пропускаем
dec t

;.......



Delay:    
dec t                 ; задержка по счетчику от t до 0
brne Delay            ;  t*3 тактов

;.......




Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Спасибо
СообщениеДобавлено: 27 окт 2004, 09:17 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
А если у меня не кнопки, а другой мк??? при появлении 1 перейти к осн проге и чтобы это всегда отслеживалось (уровень)
Реально?? :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 окт 2004, 11:21 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Да всё реально, если подумать то  :wink:
опять же обращаемся к первоисточнику примеров от atmel
и выбираем желаемый интерфейс связи, это может быть :
  • UART - AVR304  ; AVR305 ; AVR306
  • I2C - доки AVR310 ; AVR311 ; AVR312 ; AVR315
  • стандартный ISP (по которому пограммируете) - AVR320
  • если очень быстро нужно и ног много, то можно параллельный порт сварганить - AVR325
  • или даже извернуться и устроить канал по одному проводу , по стандарту Dallas 1-Wire® - AVR318
  • в простейшем варианте , если передаётся 1бит события (то что видимо у вас имеет место) можно использовать режим обработки внешнего прерывания от ноги, это можно посмотреть в документе AVR182.
    Там используется внешнее прерывание для запуска подпрограмммы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: А как сделать
СообщениеДобавлено: 27 окт 2004, 14:14 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Помогите тогда рассчитать другое. У меня с робоклуба есть ик датчик переделаный на 2313 а время импульса как настроить под 4мгц??

Или если ставит 1 мгц RC цепь какие значения??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 окт 2004, 17:22 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
вообще очень просто : 1 такт выполняется за определённое время
для 1MHz это 1/1000000 = 0.000001с = 0.001мс
для 4MHz это 1/4000000 = 0.00025мс

соответственно считаете необходимое количество циклов.

вот примекры циклов задержки:
Код:
Delay:    
NOP
NOP
NOP
NOP
NOP
NOP
NOP
dec t ;задержка по счетчику от t до 0
brne Delay ;т.е. t*10 тактов


Код:
Delay:    
dec t ;задержка по счетчику от t до 0
brne Delay ;т.е. t*3 тактов


Про RC цепь не понял, в каком именно проекте вы её пересчитываете.

вот софтинка которая помогает не прибегать к помощи калькулятора,
позволяет посчитать значения которыми нужно предзарузить счётчик таймера для реакции по его переполнению.


Вложения:
Комментарий к файлу: AVR калькулятор
AvrCalc.rar [20.4 КиБ]
Скачиваний: 323
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 окт 2004, 17:29 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Имею ввиду номиналы резистора и конденсатора чтобы получить 1 мгц


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 окт 2004, 02:09 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Я нашел кусок программы про задержки (что я спрашивал)

;* Задание значений


.equ  TIME1   =  4 ;длительность импульса

.equ  TIME2   =  5 ;задержка между импульсами

.equ  TIME3   =  20 ;задержка между пачками импульсов

.equ  COUNT   =  10 ;число импульсов в пачке


Вот это значения для 1 мгц, а надо для 4 мгц (по твоим выше подсчетам мне приходит на ум все умножить на 25)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 окт 2004, 12:16 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Анализируем задержки :
Код:
ldi temp, TIME1 ;загружаем в temp длительность импульса          
Delay1:
dec   temp        ;уменьшаем на единицу temp, пока
brne Delay1      ;  не станет равным 0

Здесь задержка = 4(цикла)*0.001мс(такт)*3(тактов в цикле) = 0.012мс
для  4MHz потребуется X=0.012/(3*0.00025)= 16 циклов

Код:
ldi temp, TIME2 ;загружаем в temp длительность паузы между импульсами

Delay2:
dec  temp         ;уменьшаем на единицу temp, пока
brne Delay2      ;  не станет равным 0


Аналогично задержки по TIME1 просто умножаем на 4

Код:
Delay3:
dec t1               ;задержка по счетчику t1 от 256 до 0
brne Delay3      ;   т.е. 256*3 тактов
dec temp          ;повторяем TIME3 раз задержку по t1
brne Delay3  ;   т.е. всего  (TIME3*256*3 + TIME3*3) тактов

здесь имеем 20*256*3+20*3=15420 циклов,
нам нужно 15420*4 циклов
следовательно TIME3=(15420*4)/(256*3+3) = 80

:wink: как видим твоя интуитивная догадка почти верна, всё нудно умножить на 4. Однако если бы число превысило 255 тогда сам код задержек пришлось бы переделывать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 окт 2004, 12:22 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
aliens писал(а):
Имею ввиду номиналы резистора и конденсатора чтобы получить 1 мгц

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 окт 2004, 14:03 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
А почему RC лучше не использовать?? :?:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 окт 2004, 15:59 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
aliens писал(а):
А почему RC лучше не использовать?? :?:

зависимость от напряжения появляется, а оно в процессе работы имеет свойство уменьшаться


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 окт 2004, 23:38 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
А как сделать вход, чтобы активный сигнал был + от другого мк??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 окт 2004, 01:58 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Вот тут вспомнил еще 2 вопроса

Как сделать задержку допустим 5 секунд??
и как сделать чтобы переменной случайно присваивалось значение (типа как random на си)
:D  :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 ноя 2004, 21:00 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Цитата:
А вот это открытый вопрос, я пока не знаю.


В GCC есть такая функция...
А в остальных не знаю, я сам писал...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2, 3  След.

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO