roboforum.ru

Технический форум по робототехнике.

Пример программы управления сервом (ШИМ)

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Пример программы управления сервом (ШИМ)

Сообщение setar » 04 фев 2005, 18:48

По просьбам трудящихся выкладываю пример кода программы шим управления сервой.
Код: Выделить всёРазвернуть
.include "tn15def.inc"

;Interrupt vector table
rjmp init

;* Объявление переменных
.def  t1    = r19                  ;счетчик времени задержки

;* Задание значений
.equ  LOW   =  80                   ;короткий импульс
.equ  MED   =  150                   ;средний  импульс
.equ  HIGH  =  220                   ;длинный импульс

;* Определения
.equ  serv0    = PB1               ;серв0 на PB1

.org T0OVaddr                     ; Вектор прерывания по переполнению таймера0
rjmp start_pwm

;Main code
init:

; Установка таймера
; The Timer/Counter0 Control Register ? TCCR0
   ldi r16, (1<<CS02)                ; Установка timer0
   out TCCR0, r16                  ; CK/256 = 3906.25Гц = 0.000256 сек
; The Timer Counter 0 ? TCNT0
   ldi r16, 0xB2                  ; Загружаем счётчик числом 0xB2
   out TCNT0, r16                  ; получая переполнение каждые 20.032мс
; Output Compare Interrupt of Timer0
   ldi r16,1<<TOIE0                ; Разрешение прерывания
   out TIMSK,r16                   ; по переполнению таймера0

; Установка ног
   ldi r16, (1<<PB1)               ; Устанавливаем ногу PB1 как выход
   out DDRB, r16

   sei                           ; Разрешение глобальных прерываний
   
idle:                            ; основной цикл
;-------- можно использовать сон когда ничего не делаем --
;   ldi r16, (1<<SE)               ; Enable sleep
;   out MCUCR, r16
;   sleep
;----------------------------------------------------------
   NOP                           ; или отработку пустого цикла или других задач
   rjmp idle

start_pwm:
; Установка таймера
; The Timer/Counter0 Control Register ? TCCR0
   ldi r16, (1<<CS02)                ; Установка timer0
   out TCCR0, r16                  ; CK/256 = 3906.25Гц = 0.000256 сек
; The Timer/Counter Interrupt Flag Register ? TIFR
   ldi r16,1<<TOV0                  ; Видимо признак обработанного прерывания, не знаю нужен ли
   out TIFR,r16                  ; Clear TOV0/ clear pending interrupts
; The Timer Counter 0 ? TCNT0
   ldi r16, 0xB2                  ; Загружаем счётчик числом 0xB2
   out TCNT0, r16                  ; получая переполнение каждые 20.032мс
; Output Compare Interrupt of Timer0
   ldi r16,1<<TOIE0                ; Разрешение прерывания
   out TIMSK,r16                   ; по переполнению таймера0


; Пауза 1цикл=0.001мс  , для управления сервом нужна задержка от 800 до 2200 циклов
; что равняется 0.8мс и 2.2мс соответственно

      sbi      PORTB, serv0         ;запускаем импульс

      ldi   t1, MED                  ;установка длительности задержки, собственно это значение
                              ;и задаёт положение вала.
Delay:    
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      dec t1                     ;задержка по счетчику от t1 до 0
      brne Delay                  ;т.е. t1*10 тактов

      cbi      PORTB, serv0         ;гасим импульc

   reti


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

P.P.S ещё была версия с управлением сервы от 2х кнопочек право/лево, как найду выложу. Следующим логическим шагом приём значения положения вала по rs232 или i2с , до этого пока руки не дошли.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Сообщение -= Александр =- » 06 фев 2005, 15:20

А можно по просьбам трудящихся сишную версию выложить? Правда до серв мне еще далеко, но велосипед изобретать не хочется, а в асме я мало что понимаю... =(
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение setar » 07 фев 2005, 11:53

-= Александр =- писал(а):А можно по просьбам трудящихся сишную версию выложить? Правда до серв мне еще далеко, но велосипед изобретать не хочется, а в асме я мало что понимаю... =(

Сам в Си  ШИМ я не писал (надобности не было), но примеры видел, попадутся под руку - обязательно выложу.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Сообщение Vovan » 14 фев 2006, 14:03

To Setar: пост от 04.02.2005 -
<P.S. Здесь в примечаниях в принципе всё понятно, чуть позже оформлю в виде готовой обучающей статьи.> - и когда же енто обещание выполнится? 8)  Очень хотелось бы, аж спать не могу и кушать тоже :D ... А если серьёзно - созрел, очень нуждаюсь в подробностях,
или ссылочку где всё "разжёвано", тока не на сях...
___________
С уважением
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Сообщение avr123.nm.ru » 14 фев 2006, 14:46

лучше напрвится в соответсвующий топик - там уж 100 сылок выложили по ШИМу и управлению сервами,

а тут все новые топики открываются зачемто.

Естественно кому нужно фиг что найдет.

информацию нужно не распылять по форуму а концентрировать по темам !

В правилах форума этого нет ?  не читали ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Vovan » 14 фев 2006, 17:38

А где я новый топик открыл? По теме и продолжаю! В чём моя вина?
Зачем же так-то?
Очень огорчён, несправедливым укором :cry:
ЗЫ: не я один интересуюсь, нас тут три человека, а может ещё кто-то созреет,  а Вы нас всех фэйсом об тэйбл... А уж если что-то не по правилам или не по-теме для этого, наверное, есть админы, модеры и т.д. Тут по сто раз спрашивают по ваще элемнтарным вопросам - и ничего.... А если Вам лично чем-то не угодил вопрос - это не даёт Вам права посылать меня (нас)... Вы, кстати, не первый раз мои вопросы закрываете своими репликами - я протестую, имейте терпение и такт.
___________
С уважением
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Сообщение avr123.nm.ru » 14 фев 2006, 21:49

Vovan писал(а):А где я новый топик открыл? По теме и продолжаю! В чём моя вина?
Зачем же так-то?


извини, ты не правильно меня понял !  

я ж без цитирования высказался!  

т.е. к автору топика ессно!

и я не обвинял а просто сказал что лучше не распылять инфу по новым топикам.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Vovan » 14 фев 2006, 22:04

А какие претензии к автору? :shock:
Автор = админ :)
Топик создан задолго до Вашей регистрации на форуме (Вы на дату посмотрите).
И убедительная просьба не перекрывайте своим постом, если он не несёт никакой информации, мой пост, пожалуйста...
Пусть повесИт вопросик, авось кто-то откликнется, а так мы только засоряем форум, что вопрос забывается.

А меня интересуют подробные подробности на асме по ШИМ для АВРов. Если у кого-нибудь есть что-то, пожалуйста, поделитесь.
___________
С уважением
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Сообщение avr123.nm.ru » 14 фев 2006, 23:13

Vovan писал(а):А какие претензии к автору? :shock:


Вован, успокойтесь!  

где в моих словах вы увидели претензии ???

там был вопрос и мое мнение !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Vovan » 14 фев 2006, 23:45

Первая ссылочка не пашет :(
А во второй на Си... :(
На Си у меня траблов нет, но сложилась ситуация (не вдаюсь в подробности), нужно проработать ШИМ на асме...
В форуме - это единственный код по ШИМу на асме, но там много непонятно... Хочется ведь разобраться и пользоваться, поэтому и нашёл енту темку (в форуме с темой ШИМ) и интересуюсь сим... Тем более, что автор кода обещал поподробнее описАть...Ну не будет ответа - что ж поделаешь...
___________
С уважением
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Сообщение Vovan » 14 фев 2006, 23:53

Sorry :oops:  первая тоже заработала, видимо был сбой...
Хорошо :( , вопрос снимаю...
Никак не удаётся мне у форума спросить что-либо...
Обидно... :cry:  но ухожу...
ЗЫ: ведь просил же, вежливо вроде, не закрывать пост с вопросом...ммм...да-с кому-то всё можно, а кому-то... :arrow:
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Сообщение avr123.nm.ru » 15 фев 2006, 11:09

Vovan писал(а):
нужно проработать ШИМ на асме...


ну дак и прочитай 1-ю стр курса ! там написано где взять исходники на асме !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8


Вернуться в Микроконтроллеры

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

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