Оружие будущего

Форум про оружие будущего
Текущее время: Вс май 26, 2019 1:56 am

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




Начать новую тему Ответить на тему  [ Сообщений: 224 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12  След.
Автор Сообщение
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Ср сен 21, 2011 11:20 am 
идиот какой-то
Аватар пользователя

Зарегистрирован: Вс авг 10, 2008 3:21 pm
Сообщений: 596
Откуда: Москва
bitwise not наверно станет out = 0 - out поэтому в первом случае команд меньше будет.
во втором случае задержки не влияют на колво команд

_________________
大切な物 protect my balls!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Ср сен 21, 2011 3:46 pm 
In Trance
Аватар пользователя

Зарегистрирован: Сб дек 22, 2007 2:45 pm
Сообщений: 4880
Откуда: Украина, Днепропетровск
Код:
start:
   ldi R16,234
   out OCR0A,R16
cycle:
   rcall pin
   rcall delay
   rcall pin
   rcall delay
   rjmp cycle
;=============================
pin:                                   ;out=~out
   sbic PORTB,1
   rjmp pinset
   sbis PORTB,1
   rjmp pinclr
pinset:
   sbi PORTB,1
   ret
pinclr:
   cbi PORTB,1
   ret
;===========================
delay:
   sbi GTTCR,0               ; Сбрасываем предделитель
   clr R16
   out TCNT0,R16             ; Очищаем счетчик
   sbi TIMSK,2               ; Прерывание по совпадению А, локально
   ldi R16,0b00000101
   out TCCR0B,R16            ; Предделитель 1024(F-4.8MHz)
   sei                       ; Прерывания глобально
   brtc PC-0x01              ; Стоим на этой команде пока обработчик не поставит T
   clt
   clr R16
   out TCCR0B,R16            ; Останавливаем таймер
   ret

; Вариант 2
Код:
start:
   ldi R16,234
   out OCR0A,R16
cycle:
   sbi PORTB,1
   rcall delay
   cbi PORTB,1
   rcall delay
   rjmp cycle
delay:
   sbi GTTCR,0               ; Сбрасываем предделитель
   clr R16
   out TCNT0,R16             ; Очищаем счетчик
   sbi TIMSK,2               ; Прерывание по совпадению А, локально
   ldi R16,0b00000101
   out TCCR0B,R16            ; Предделитель 1024(F-4.8MHz)
   sei                       ; Прерывания глобально
   brtc PC-0x01              ; Стоим на этой команде пока обработчик не поставит T
   clt
   clr R16
   out TCCR0B,R16            ; Останавливаем таймер
   ret


Второй вариант короче т.к. не нужно проверять состояние пина а тупо его поставить.
ЗЫ Еще есть вариант что эти sbic,sbis не достанут, тогда их нужно будет скопировать в РОН и проверить бит из него
Код:
        in R16,PORTB
        sbrc R16,1

т.е. по идее второй вариант будет короче

_________________
ZADROT MODE COMPLETE
MISSION PASSED


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Ср сен 21, 2011 9:25 pm 
Аватар пользователя

Зарегистрирован: Вт сен 23, 2008 10:59 am
Сообщений: 1588
Откуда: Moskva
дед мороз писал(а):
чуваки. назрел вопрос чисто теоретический
какая из конструкций в С будет занимать меньше команд (и соотв. тактов процессора) в асме?
код типа простейшего мигания светодиодом в двух вариантах:


дед мороз, а почему не рассматриваеш вариант:
Код:
if (PORTB,1 ==1)
      PORTB,1 = 0;
else
      PORTB,1 = 1;

да еще вставленный в прерывания первого (длинного) таймера??
Незнаю как точно будет эта конструкция ассемблирована НО если писать на асме это будет выглядеть примерно так:
Код:
   sbic PORTB,1      ;пропустить если бит 1 в порту B очишен       1/2/3 цикла
   rjmp off         ;уходим на обработку выключения светодиода       2 цикла
;обрабатываем включение светодиода
   sbi PORTB,1         ;ставим бит в порту                      2 цикла
   rjmp end         ;уходим в конец программы                   2 цикла
off:               ;отрабатываем выключение
   cbi PORTB,1         ;очищаем бит в порту                      2 цикла    
end:               ;конец программы обработчика прерывания


В зависимости от состояния этот код будет проходить либо за 6 либо за 7 тактов. (ну если я правильно посчитал)
Где-то в начале программы настраиваем таймер на необходимую величину задержки и вуаля.
НУ а если нужны разные интервалы, то можно вставить необходимые "мантры" по переключению счетчика непосредственно в обработчик.
Незнаю будет ли это короче, но то, что мешать в основной программе не будет это точно.

_________________
Извините за грамотность, сызмальства не обучен. ;-)
P.S. Это я не извиняюсь, это я предупреждаю.

http://www.facebook.com/piton.kaa.10


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Чт сен 22, 2011 12:16 am 
In Trance
Аватар пользователя

Зарегистрирован: Сб дек 22, 2007 2:45 pm
Сообщений: 4880
Откуда: Украина, Днепропетровск
дед мороз писал(а):
мб я неверно объяснил в начале, нет необходимости проверять состояние порта до инверсии. просто инверсия и все. или в асме нет такой инструкции???

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

Нету, есть только команды условий, это по флагам, например breq, brne, brcc и т.д. и еще sbic, sbis, sbrc, sbrs тупо инвертнуть пин не получится, полюбому нужно проверить что уже там стоит.
Можно еще так
Код:
in R16,PORTB
com R16                 ; Побитовая инверсия
out PORTB,R16

Но тут проинвертируется весь регистр и порт.

Таймер конечно.

_________________
ZADROT MODE COMPLETE
MISSION PASSED


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Чт сен 22, 2011 12:28 am 
In Trance
Аватар пользователя

Зарегистрирован: Сб дек 22, 2007 2:45 pm
Сообщений: 4880
Откуда: Украина, Днепропетровск
дед мороз писал(а):
Axon писал(а):
Таймер конечно.


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


Может и такое быть, хуй его знает что там за обработчик из С сделан в виде простых комманд. Самый простой ИМХО, это как я выше написал, после запуска таймера тупо зациклить на 1 комманде проверки флага Т, а в обработчике таймера тупо будет стоят set(установить флаг Т) и команда возврата из обработчика, это 2 команды или 5 тактов(1+4), а еще и переход к прерыванию 4 такта. Хотя у меня еще несколько тактов занимает подготовка к запуску, это 2 раза разрешить прерывания, сбросить предделитель, счетчик, запустить таймер. Можно конечно разрешить локально прерывание где-то в начале, за циклом, но всёравно от задержки никак не уйти.

_________________
ZADROT MODE COMPLETE
MISSION PASSED


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Чт сен 22, 2011 8:18 pm 
Аватар пользователя

Зарегистрирован: Вт сен 23, 2008 10:59 am
Сообщений: 1588
Откуда: Moskva
дед мороз писал(а):
я пишу на С в CVAVR. асм я ебал. от него мозг чешется.
программный шим к-рый намного выше по частоте аппаратного

Дык я и говорю, что для того, чтобы самое главное работало вовремя нужно это на прерывание таймера посадить. А если это главное еще и критично к интервалам то однозначно его надо делать еще и единственным прерыванием. Всю шелуху нектичную в тушку вставлять. пусть себе вертится.
Как говориться каждый кулик свое болото. НО я бы в прерывание вставлял не изменение флага, а необходимые действия тогда они будут выполнены гарантировано за сумму тех тактов которые отведены на его обработку. Покрайней мере эти такты можно вычислить с большой точностью и вставлять "nop" в необходимые места чтобы вообще выравнять "плечи".

дед мороз писал(а):
кстати интересно, как вобще происходит генерация задержки на уровне асма, используется аппаратный таймер или еще что?

Можно и так и сяк. НО аппаратный бует использован только если его в ручную в программу включить. В противном случае будет (как мне кажется) организован протой счетчик, а величина задержки будет зависить только от его разрядности.

_________________
Извините за грамотность, сызмальства не обучен. ;-)
P.S. Это я не извиняюсь, это я предупреждаю.

http://www.facebook.com/piton.kaa.10


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Чт сен 22, 2011 9:57 pm 
Аватар пользователя

Зарегистрирован: Вт сен 23, 2008 10:59 am
Сообщений: 1588
Откуда: Moskva
дед мороз писал(а):
конкретно в аттини13 эта частота втрое меньше чем нужно мне. поэтому генерация частоты идет в основном цикле.
однако эта частота всеже на два порядка меньше основной частоты камня (9.6мгц), так что я уже начинаю сомневатся что дело вобще в программе (все ходы там довольно короткие).
возможно, дело в калибровке RC генератора.

Хмм... Тогда вот что я могу посоветовать. Выключаеш все прерывания (если они у тебя там есть) и вставляеш то, что было в прерываниях в тушку (имеестя ввиду прерывание от таймеров и по интам (тут правда сложнее будет)). Возможно придется сделать счетчики для задержки выполнения каких-то команд и соответственно компенсаторы холостого хода (это когда команда не выполняется НО процессор должен в холостую скомпенсировать длительность невыполненой команды, чтобы когда ее всеже будет необходимо выполнить общее время прохождение всего листинка программы не было увеличено за счет выполнения дополнительного набора команд), вот тогда лагов связанных с обработкой прерывания уже не буедт и интервалы будут одинаковыми. А вот если после этого будет чехарда с интервалами.. вот тогда можно будет гришить на внутренний генератор. И собсно не важно какой из этюдов на "С" в плане переключения ноги будет выбран.
Ну я вот так мыслю.

_________________
Извините за грамотность, сызмальства не обучен. ;-)
P.S. Это я не извиняюсь, это я предупреждаю.

http://www.facebook.com/piton.kaa.10


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Вт ноя 29, 2011 10:38 pm 
Аватар пользователя

Зарегистрирован: Пн дек 17, 2007 7:56 am
Сообщений: 886
Откуда: Марс
Запилил на Attiny2313 step/dir контроллер для двух шаговиков с полушагом. Если кому интересно могу скинуть прошивку, и ответить на какие-нить вопросы

_________________
Плоть терпит неудачу, а машина преуспевает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Ср ноя 30, 2011 5:38 pm 
Аватар пользователя

Зарегистрирован: Пн дек 17, 2007 7:56 am
Сообщений: 886
Откуда: Марс
Так епт, я вроде выкладывал фотки самопального плоттера. Есть управляющая прога с протоколом степ/дир. Чо бы не запилить соответствующий контроллер? На совковой рассыпухе не кошерно собирать как-то

_________________
Плоть терпит неудачу, а машина преуспевает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Ср ноя 30, 2011 5:45 pm 
пантера
Аватар пользователя

Зарегистрирован: Сб фев 06, 2010 11:15 am
Сообщений: 8014
А чем l297 не подходит? Готовый контроллер шаговика с Step/Dir?
Кстати, какая управляющяя программа? :oops:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Чт дек 01, 2011 8:44 am 
Аватар пользователя

Зарегистрирован: Пн дек 17, 2007 7:56 am
Сообщений: 886
Откуда: Марс
Диана, на рассыпухе контроллер уже паял. Нареканий нет. Просто захотелось уменьшить число корпусов. Да и давно хотелось освоить AVR включая всякие аппаратные функции, вроде внешних прерываний. Управляющая прога Mach2
Дед мороз, а что за аппликатор? обмазыватель плат паяльной пастой по координатам? Почему нет? Надо только придумать привод для баяна.
viewtopic.php?f=35&t=1509&p=102323#p102323 - последние псто

_________________
Плоть терпит неудачу, а машина преуспевает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Чт дек 01, 2011 7:57 pm 
Аватар пользователя

Зарегистрирован: Сб окт 18, 2008 2:22 pm
Сообщений: 312
Откуда: Астрахань
Atmega8 и Atmega8535 - хорошие сабжи.
Почти закончил выполнение заказа - снабдил 4 зарядных устройства модулями для связи с головным контроллером. Происходит передача значений зарядного тока и напряжения по запросу.
Печатные платы:
Изображение
Головной модуль с LCD. Сердцем является Atmega8535:
Изображение
Рабочая обстановка - калибрую значения тока.
Изображение
Любимый Инструмент... Слежу, сколько осталось до конца света:
Изображение

_________________
Двойной томпсонган - 215% передан вместе с концептом в добрые, заботливые руки, которые все пересобрали и закинули за шкаф в итоге
FlexLED - 52%. Дописывается основная часть прошивки


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Чт дек 01, 2011 8:17 pm 
Аватар пользователя

Зарегистрирован: Пн дек 17, 2007 7:56 am
Сообщений: 886
Откуда: Марс
дед мороз
Бабла - ну сотню на алюминий, кишки от принтеров бесплатно(моторы, ремни, концевики), подшипники 40 р(10р за штуку). Фрезерные работы хз ибо делал сам из халявного металла. Короче рублей в 500-600 можно уложиться. Все зависит от степени перфекционизма автора. У меня был вариант каретки из оргстекла и с втулками, сделанными руками. Выкинул все и выточил все из дюрали Времени тоже не особо. Я около года его собирал, правда с офигенными перерывами. При наличии всех станков и барахла можно собрать за неделю с перерывами на сон и еду. Прошивку могу скинуть.

_________________
Плоть терпит неудачу, а машина преуспевает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Пт дек 02, 2011 11:10 am 
пантера
Аватар пользователя

Зарегистрирован: Сб фев 06, 2010 11:15 am
Сообщений: 8014
При наличии станков сделать можно даже с возможностью обработки алюминия. ;)
Самое легкое - три печатные машинки раскурочить, каретки от них - вот и готовые оси Х и У. Подцепляешь к ним ремни/винты, шаговики, баян с пневмоприводом и готово. :D
PS: как то мы в оффтоп уходим... :oops:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Ср мар 14, 2012 3:09 pm 
In Trance
Аватар пользователя

Зарегистрирован: Сб дек 22, 2007 2:45 pm
Сообщений: 4880
Откуда: Украина, Днепропетровск
Кто будет работать с внешними прерываниями, во время инициализации ВСЕГДА сбрасывайте все флаги внешних прерываний. Проебался с этой хуйней полтора дня.

_________________
ZADROT MODE COMPLETE
MISSION PASSED


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Ср мар 14, 2012 3:20 pm 
Аватар пользователя

Зарегистрирован: Вс ноя 15, 2009 7:17 pm
Сообщений: 618
Можешь привести пример зачем это нужно? Никогда не имел с этим проблем

_________________
--> Расчёт пушки гаусса в FEMM <--


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Ср мар 14, 2012 3:34 pm 
In Trance
Аватар пользователя

Зарегистрирован: Сб дек 22, 2007 2:45 pm
Сообщений: 4880
Откуда: Украина, Днепропетровск
ArtDen писал(а):
Можешь привести пример зачем это нужно? Никогда не имел с этим проблем

Да какой там пример? Если просто настроить внешнее прерывание(фронт, спад и т.д.), потом разрешить локально прерывание и глобально - ничего не работает. Протеус тупо зависает на следующей комманде(или где-то недалеко), в железе тоже не реагирует ничего(а я сколько времени думал что то протеус глючный). А если сбросить флаги(записать в них 1, глупо конечно сбрасывать флаги единицами, но так и есть на самом деле), то всё работает.

_________________
ZADROT MODE COMPLETE
MISSION PASSED


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Пн май 21, 2012 9:55 pm 
Аватар пользователя

Зарегистрирован: Вт сен 23, 2008 10:59 am
Сообщений: 1588
Откуда: Moskva
кто знает как?
Есть задачка в ЕЕПРОМ записать данные.
Я с ней (ЕЕПРОМ) еще не работал.
переменная которую мне туда надо запихнуть в два байта... вопрос.
как на "Си" расчленить переменную по байтно чтобы была возможность их поочередно запхнуть в память. Деление на 255 и его остаток не предлагать. Это я и сам знаю.
З.Ы. Нужно обязательно на "С".

_________________
Извините за грамотность, сызмальства не обучен. ;-)
P.S. Это я не извиняюсь, это я предупреждаю.

http://www.facebook.com/piton.kaa.10


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Вт май 22, 2012 10:38 am 
Аватар пользователя

Зарегистрирован: Чт июн 16, 2011 11:39 am
Сообщений: 613
Откуда: Украина, Киев
Piton писал(а):
кто знает как?
Есть задачка в ЕЕПРОМ записать данные.
Я с ней (ЕЕПРОМ) еще не работал.
переменная которую мне туда надо запихнуть в два байта... вопрос.
как на "Си" расчленить переменную по байтно чтобы была возможность их поочередно запхнуть в память. Деление на 255 и его остаток не предлагать. Это я и сам знаю.
З.Ы. Нужно обязательно на "С".


Я бы сделал так:
----------------
int piton ; //это твоя переменная 16 битная

__eeprom __no_init unsigned char eeprom_H; //это описание байта в еепром под компилятор IAR
__eeprom __no_init unsigned char eeprom_L;

//собственно разделение на два байта
eeprom_H = (unsigned char) (piton >> 8); //старший байт числа в еепром
eeprom_L = (unsigned char) piton; //младший байт числа в еепром
--------------
все. У меня работает коректно, если сомневаешься прогони под отладчиком.

_________________
Нет ничего практичнее хорошей теории. (Кирхгоф)

"...создание сильного магнитного поля — это единственный, осуществляемый на
практике процесс, коэффициент полезного действия которого равен нулю; ..."
(Г. Кольм, А. Фримаи СИЛЬНЫЕ МАГНИТНЫЕ ПОЛЯ)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Контроллеры AVR
СообщениеДобавлено: Вт май 22, 2012 6:38 pm 
Аватар пользователя

Зарегистрирован: Вт сен 23, 2008 10:59 am
Сообщений: 1588
Откуда: Moskva
DANTIST писал(а):
//собственно разделение на два байта
eeprom_H = (unsigned char) (piton >> 8); //старший байт числа в еепром
eeprom_L = (unsigned char) piton; //младший байт числа в еепром

угу похоже на парвду :-)
ща проверю.
СПС

_________________
Извините за грамотность, сызмальства не обучен. ;-)
P.S. Это я не извиняюсь, это я предупреждаю.

http://www.facebook.com/piton.kaa.10


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 224 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12  След.

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


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

Найти:
cron

 

Яндекс цитирования
Русская поддержка phpBB