Страница 1 из 2

Помогите пожалуйста по проекту на attiny2313

Добавлено: Вс ноя 13, 2011 21:33:57
nem-victor
Здраствуйте, создал проект в avr studio 4 на тини 2313 контролер откатных ворот, при семуляции на AVRstudio все пашет, а ка только hex загружаю в Proteus 7.7 схема контролер отказываеться работать - загружал в готовый девайс, шил внутресхемно, контролер вообще не реагирует, помогите пожалуйста :cry:
проект и схему прилогаю
может что 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 большое спасибо :beer: , совсем запутался в командах, такие мелочи пропустил, в протеусе все заработало, теперь буду шить МК, как проверю отпишусь! :))

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
не будет ли это считаться ошибкой? :dont_know:

Re: Помогите пожалуйста по проекту на attiny2313

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