roboforum.ru

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

Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Правила форума
Правила раздела OpenRobotics

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

=DeaD= » 07 фев 2010, 14:17

Сергей писал(а):ИМХО система сложная и мало полезная. Проще писать под камень с обычными API функциями

Это ты к чему? тема вроде называется контроллер, человек просто спросил фьюзы... :shock:

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

Сергей » 07 фев 2010, 14:40

Michael_K писал(а):
Duhas писал(а):2Michael_K с одной стороны - да, они намутили ) с другой - а как иначе, когда нужна довольно сложная многопрофильная конфигурируемая структура ? )


Пользователю в 99% случаях нафиг не нужна "довольно сложная многопрофильная конфигурируемая структура".
Это только деду и блайндману кажется, что она нужна, и что это круто

Это я просто дополнил этот пост своим мнением.

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

=DeaD= » 07 фев 2010, 16:36

Тогда предлагаю проект ORFA обсуждать в другой ветке :)

Добавлено спустя 1 час 55 минут 4 секунды:
Всё, проверил и проставил номера регистров, выложил инструкцию на страницу модуля: [[OR-AVR-M32-D]], заодно причесал эту самую страницу.

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

S-T-A-L-K-E-R » 24 май 2010, 22:05

Блин, лежат на полочке контроллер и программатор, но боюсь к нему притронуться, сломать. Я научился считывать код с контроллера, но программирую пока не ахти. Пишу программки под ДОС на cpp. Где можно взять, посмотреть програмки управлением сервами, датчиками именно для этого модуля.
Зы: руки чешутся, голова скоро лопнет от идей, нужно срочно их реализовывать :D

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

=DeaD= » 24 май 2010, 22:09

в вики есть описалово с примерами программирования похожего контроллера без порта ДД и энкодеров [[OR-AVR-M32-N]].

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

S-T-A-L-K-E-R » 29 май 2010, 21:23

Програмку с задейсвованием серв в примерах не обнаружил. Мне нуна программа на Си(сам на cpp пишу) с использованием серв. Чтоб было отчего отталкиваться. Желательно рабочую для этого контроллера.
ЗЫ: =DeaD= у тебя же есть этот контроллер и программки наверняка на него есть, помоги разобраться...

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

=DeaD= » 29 май 2010, 21:32

Я делал лайнтрейсера на этом контроллере на модифицированных сервах, вот тут есть линк на исходники:
[[OR-LT-v2]]

Там блок:
uint16_t baseA=(153*2+1)*23/10; //1530us
uint16_t baseB=(156*2+1)*23/10; //1560us
OCR1A=baseA;
OCR1B=baseB;


Это управление 2 сервами через 1 таймер.
Т.е. берете инициализацию
//PWM, Phase and frequency correct, TOP=ICR1
TCCR1A=0xA0; //clear on up-counting, set on down-counting
TCCR1B=0x12; //Clock prescaler 1/8
ICR1=9216; //Set 50Hz frequency


И потом через OCR1A и OCR1B выставляете положения серв.
Например чтобы серву на OC1A выставить положение 1900мкс нужно сделать:
OCR1A=(190*2+1)*23/10;

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

S-T-A-L-K-E-R » 29 май 2010, 21:42

О... это сложновато для меня. Можно элементарщину, я только начинающий в мк.

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

=DeaD= » 29 май 2010, 21:46

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

Добавлено спустя 24 секунды:
В начале программы пишешь:
TCCR1A=0xA0; //clear on up-counting, set on down-counting
TCCR1B=0x12; //Clock prescaler 1/8
ICR1=9216; //Set 50Hz frequency


Добавлено спустя 2 минуты:
А где надо выставить положение сервы на порту OC1A от 750мкс до 2250мкс пишешь (например, для положения 1534мкс):
OCR1A=1534*23/50;


Так проще?

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

S-T-A-L-K-E-R » 29 май 2010, 22:01

#include <ctype.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "uart.h"
int main(void)
{ TCCR1A=0xA0; //clear on up-counting, set on down-counting
TCCR1B=0x12; //Clock prescaler 1/8
ICR1=9216; //Set 50Hz frequency

OCR1A=1534*23/50;

_delay_us(15000);

}

[/code]
_______________
Я не понимаю что в этой программе написано.
Вот я хочу например подключить сервы одну на A0 другую на A1. Что в программе писать ?

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

=DeaD= » 29 май 2010, 22:03

Тут аппаратная генерация ШИМ - смотрите куда выведены порты OC1A, OC1B по схеме модуля.
Программная генерация будет мешать работать основной программе, ну или наоборот, основная программа ей будет мешать, короче там всё намного сложнее.

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

S-T-A-L-K-E-R » 29 май 2010, 22:07

=DeaD= писал(а):Тут аппаратная генерация ШИМ - смотрите куда выведены порты OC1A, OC1B по схеме модуля.
Программная генерация будет мешать работать основной программе, ну или наоборот, основная программа ей будет мешать, короче там всё намного сложнее.

OC1A, OC1B по схеме модуля-PD4 & PD5

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

=DeaD= » 29 май 2010, 22:08

Ну вот на них и цепляйте сервы.

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

S-T-A-L-K-E-R » 29 май 2010, 22:15

Т.е. программа будет выглядеть так ?
Код: Выделить всёРазвернуть
#include "defines.h"

#include <ctype.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>

#include <avr/interrupt.h>

#include <util/delay.h>

#include "uart.h"


FILE uart_str = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);

int main(void)
{
  uart_init();
  stdout = stdin = &uart_str;
  printf("Linetracer ready 1!\n");

  DDRC=0x20;
  DDRD=0x30;

  _delay_ms(5000);

  //PWM, Phase and frequency correct, TOP=ICR1
  TCCR1A=0xA0; //clear on up-counting, set on down-counting
  TCCR1B=0x12; //Clock prescaler 1/8
  ICR1=9216;  //Set 50Hz frequency   
  uint16_t baseA=(153*2+1)*23/10;
  uint16_t baseB=(156*2+1)*23/10;
  OCR1A=baseA;
  OCR1B=baseB;
}


Добавлено спустя 1 минуту 18 секунд:
Так мне вашу программу полностью загрузить в мк без изменений ?

Добавлено спустя 5 минут 19 секунд:
На всякий случай, сервы у меня HXT12K, программатор за 400 ру, OR-PROG-USB-X, КОТОРЫЙ ТОЛЬКО С kAZAMAPROGRAMMER работает.

Re: Модуль OR-AVR-M32-D: Контр. на базе ATMega32 с портом ДД

=DeaD= » 29 май 2010, 22:28

Скомпилируйте и грузите в МК. Надеюсь умеете? :wink:


Rambler\'s Top100 Mail.ru counter