Страница 1 из 2
Помогите пожалуйста по проекту на attiny2313
Добавлено: Вс ноя 13, 2011 21:33:57
nem-victor
Здраствуйте, создал проект в avr studio 4 на тини 2313 контролер откатных ворот, при семуляции на AVRstudio все пашет, а ка только hex загружаю в Proteus 7.7 схема контролер отказываеться работать - загружал в готовый девайс, шил внутресхемно, контролер вообще не реагирует, помогите пожалуйста
проект и схему прилогаю
может что fuse'ах напутал?
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Вс ноя 13, 2011 21:53:05
nem-victor
Немного подправил, теперь функция открытия пашет, но функция закрытия в Proteus не пашет? в чем проблема ума не прилажу? В контролер не пробывал зашивать.
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Вс ноя 13, 2011 22:55:04
Axon
Код: Выделить всё
st1:
sbis PinD,0 ; Проверяем кнопку "открыть"
rjmp open ; если нажата переходим к процедуре открывания
rjmp st2
sbis вместо
sbic
Код: Выделить всё
st2:
sbis PinD,1 ; Проверяем кнопку "закрыть"
rcall close ; если нажата переходим к процедуре закрывания
rjmp st1 ; Возвращаемся в процедуру проверки кнопок
sbis вместо
sbic
Код: Выделить всё
sbic PinD,2 ; Проверяем концевик закрытия
rjmp cl1 ; если не сработал продолжаем закрывать
sbic вместо
sbis
Проверяйте, работает как нужно или нет?
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пн ноя 14, 2011 10:40:25
nem-victor
Axon писал(а):Код: Выделить всё
st1:
sbis PinD,0 ; Проверяем кнопку "открыть"
rjmp open ; если нажата переходим к процедуре открывания
rjmp st2
sbis вместо
sbic
Код: Выделить всё
st2:
sbis PinD,1 ; Проверяем кнопку "закрыть"
rcall close ; если нажата переходим к процедуре закрывания
rjmp st1 ; Возвращаемся в процедуру проверки кнопок
sbis вместо
sbic
Код: Выделить всё
sbic PinD,2 ; Проверяем концевик закрытия
rjmp cl1 ; если не сработал продолжаем закрывать
sbic вместо
sbis
Проверяйте, работает как нужно или нет?
Axon большое спасибо

, совсем запутался в командах, такие мелочи пропустил, в протеусе все заработало, теперь буду шить МК, как проверю отпишусь!

Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пн ноя 14, 2011 20:41:32
nem-victor
кто подскажет как зделать регулируемую задержку?
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пн ноя 14, 2011 23:24:58
Axon
Где именно? С помощью таймера можно.
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Чт ноя 17, 2011 19:41:49
nem-victor
Да с помошью теймера! только как зделать что бы задержку можно было изменять? и можно ли отправить avr в powe_doun после выполнения функции, и чтобы он запускался от поступления команд на порта PD0 и PD1, может через прерывания?
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 16:11:34
Axon
nem-victor писал(а):Да с помошью теймера! только как зделать что бы задержку можно было изменять?
Конечно можно. Можно изменением делителя частоты, можно изменением значение в регистре сравнения.
и можно ли отправить avr в powe_doun после выполнения функции, и чтобы он запускался от поступления команд на порта PD0 и PD1, может через прерывания?
Зачем его отправлять, если он микроамперы потребляет? Но если так прям обязательно - нужно даташит читать.

Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 16:24:13
nictrace
nem-victor писал(а):кто подскажет как зделать регулируемую задержку?
что-то я там никаких средств регулировки, кроме 2-х кнопок не нашел.
но можно обойтись и кнопками. Например, длительное, в пару секунд нажатие будет переводить в режим настройки времени, а лампа будет мигать столько раз, сколько выбрано секунд...
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 21:32:07
nem-victor
Axon писал(а):nem-victor писал(а):Да с помошью теймера! только как зделать что бы задержку можно было изменять?
Конечно можно. Можно изменением делителя частоты, можно изменением значение в регистре сравнения.
и можно ли отправить avr в powe_doun после выполнения функции, и чтобы он запускался от поступления команд на порта PD0 и PD1, может через прерывания?
Зачем его отправлять, если он микроамперы потребляет? Но если так прям обязательно - нужно даташит читать.

спасибо
Axon я уже прочитал об этом т.е. о внешних прерываниях, вот теперь про задержку, есть ли какиенибудь шаблоны задержек, а то в примерах из книг трудно определить, вот у меня задержка в программе тоже взята из книги Белова, но мне нужно управлять временем задержки, т.е. 200 мкс для борьбы с дребезгом контактов, 500 мкс для последовательного выполнения команд, ну и гдето 1 с для отключения замка, после открывания ворот, на Си там то понятно можно написать просто время задержки и все, а на асемблере все по тругому, приходиться писать подпрограммы задержки, так что мне придется писать 3 подпрограммы задержки для каждого времени?
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 21:39:49
nem-victor
nictrace писал(а):nem-victor писал(а):кто подскажет как зделать регулируемую задержку?
что-то я там никаких средств регулировки, кроме 2-х кнопок не нашел.
но можно обойтись и кнопками. Например, длительное, в пару секунд нажатие будет переводить в режим настройки времени, а лампа будет мигать столько раз, сколько выбрано секунд...
ЭХ наверно не так выразился, хотел бы написать подпрограмму задержки с изменяемым временем задержки, ну чтобы не писать три четыре подпрограммы а обойтись одной
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 21:43:21
nem-victor
ребята я знаю что на языке си писать проше, но для меня это пока темный лес, я по тихоньку начинаю изучать по книгам, начал с асемблера так как он для меня более или менее понятен.
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 22:06:43
Axon
nem-victor писал(а):
спасибо Axon я уже прочитал об этом т.е. о внешних прерываниях, вот теперь про задержку, есть ли какиенибудь шаблоны задержек, а то в примерах из книг трудно определить, вот у меня задержка в программе тоже взята из книги Белова, но мне нужно управлять временем задержки, т.е. 200 мкс для борьбы с дребезгом контактов, 500 мкс для последовательного выполнения команд, ну и гдето 1 с для отключения замка, после открывания ворот, на Си там то понятно можно написать просто время задержки и все, а на асемблере все по тругому, приходиться писать подпрограммы задержки, так что мне придется писать 3 подпрограммы задержки для каждого времени?
200 и 500мкс мало, если мс - то нормально
В простеньких программах я задержку обычно делаю так:
Берется минимальный делитель времени для всех задержек, у вас это 100мс т.е. 200,500,1000 делится на 100.
Создается отдельная подпрограмма задержки, которая будет вызываться через
rcall.
Собственно в подпрограмме в начале происходит сброс таймера, его инициализация(занести значения в регистры, настроить делитель, локальное прерывание и т.д.). Далее даём МК команду
sei и запускаем таймер. Сразу после запуска таймера ставим хитрую команду
brtc PC-0x01
Собсно эта команда значит, что МК будет всё время проверять флаг T(зациклится на одной команде) пока он не установлен, когда Т установится - пойдут следующие команды. А в векторе прерываний(куда МК пойдет после прерывания таймера) просто ставим
set(установка Т флага) а из обработчика он вернется
retом от следующего вектора(естессно нужно убедиться что там нету обработчика и стоит просто
ret). После
brtc PC-0x01 обязательно останавливаем таймер, потом очищаем флаг Т командой
clt и теперь можно выйти из нашей подпрограммы задержки. Как сделать 200,500,1000мс - тупо ставим несколько вызовов этой подпрограммы и всё.
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 22:15:10
nem-victor
Axon писал(а):nem-victor писал(а):
спасибо Axon я уже прочитал об этом т.е. о внешних прерываниях, вот теперь про задержку, есть ли какиенибудь шаблоны задержек, а то в примерах из книг трудно определить, вот у меня задержка в программе тоже взята из книги Белова, но мне нужно управлять временем задержки, т.е. 200 мкс для борьбы с дребезгом контактов, 500 мкс для последовательного выполнения команд, ну и гдето 1 с для отключения замка, после открывания ворот, на Си там то понятно можно написать просто время задержки и все, а на асемблере все по тругому, приходиться писать подпрограммы задержки, так что мне придется писать 3 подпрограммы задержки для каждого времени?
200 и 500мкс мало, если мс - то нормально
В простеньких программах я задержку обычно делаю так:
Берется минимальный делитель времени для всех задержек, у вас это 100мс т.е. 200,500,1000 делится на 100.
Создается отдельная подпрограмма задержки, которая будет вызываться через
rcall.
Собственно в подпрограмме в начале происходит сброс таймера, его инициализация(занести значения в регистры, настроить делитель, локальное прерывание и т.д.). Далее даём МК команду
sei и запускаем таймер. Сразу после запуска таймера ставим хитрую команду
brtc PC-0x01
Собсно эта команда значит, что МК будет всё время проверять флаг T(зациклится на одной команде) пока он не установлен, когда Т установится - пойдут следующие команды. А в векторе прерываний(куда МК пойдет после прерывания таймера) просто ставим
set(установка Т флага) а из обработчика он вернется
retом от следующего вектора(естессно нужно убедиться что там нету обработчика и стоит просто
ret). После
brtc PC-0x01 обязательно останавливаем таймер, потом очищаем флаг Т командой
clt и теперь можно выйти из нашей подпрограммы задержки. Как сделать 200,500,1000мс - тупо ставим несколько вызовов этой подпрограммы и всё.
да я про мс просто очепятка, да хитро, стоит попробывать
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 22:17:55
Axon
nem-victor, да только-что вспомнил что настройка делителя и запускает таймер. Тогда его убираем из инициализации и ставим после sei.
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пт ноя 18, 2011 23:37:23
nem-victor
зашил прошивку в tiny2313, внутресхемно, фузы выставил с помощью калькулятора фузов, тока как то странно, контролер постоянно в состоянии "закрыть", и сбрасываеться только кнопкой закрыть, хотя по программе обе кнопки должны сбрасывать контролер в начальное положение, и выход подсветки не пашет, что ж буду дальше копаться в програме
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Сб ноя 19, 2011 19:30:46
Axon
nem-victor писал(а):зашил прошивку в tiny2313, внутресхемно, фузы выставил с помощью калькулятора фузов, тока как то странно, контролер постоянно в состоянии "закрыть", и сбрасываеться только кнопкой закрыть, хотя по программе обе кнопки должны сбрасывать контролер в начальное положение, и выход подсветки не пашет, что ж буду дальше копаться в програме
Если что-то совсем не получиться - сюда кидайте.
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Вс ноя 20, 2011 06:24:12
nem-victor
Axon писал(а):nem-victor писал(а):зашил прошивку в tiny2313, внутресхемно, фузы выставил с помощью калькулятора фузов, тока как то странно, контролер постоянно в состоянии "закрыть", и сбрасываеться только кнопкой закрыть, хотя по программе обе кнопки должны сбрасывать контролер в начальное положение, и выход подсветки не пашет, что ж буду дальше копаться в програме
Если что-то совсем не получиться - сюда кидайте.
Хорошо, немного касяк в плате был, как всегда развел на скорую руку, да есче хочу поменять подпрограмму задержки, по позже скину
Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пн ноя 21, 2011 18:27:56
nem-victor
Здрасти, есть вопросик небольшой можно ли с помощью команды .equ присваивать к ччислам разные слова, ну например
.equ bopen = 0
.equ svetON = 0
не будет ли это считаться ошибкой?

Re: Помогите пожалуйста по проекту на attiny2313
Добавлено: Пн ноя 21, 2011 22:16:29
nem-victor
Вот читаю сейчас книгу Ревичь Ю.В. "практическое прагромирование AVR на асемблере" часть 1, нашел про задержку,
только вот команда "suci" это что ? вроде просмотрел все команды не нашел про нее, да и в AVR studio 4 она не опознаеться.