Управление Сервами в WinAvr

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

Сообщение Lirzman » 12 авг 2006, 21:15

И еще подкиньте плиз матерьяльчика по таймерам(желательно с примерами и на русском) :D
Аватара пользователя
Lirzman
 
Сообщения: 257
Зарегистрирован: 22 мар 2005, 03:59
Откуда: Питер

Сообщение Сергей » 12 авг 2006, 21:24

Я вот пытаюсь создать программу для серв(смотрите в разделе Новичков и тема "проблема с WinAVR" =) но вот народ не тянется мне помогать, а самому трудно разбираться.
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Сообщение Johnny Bravo » 12 авг 2006, 23:33

Литературы с описанием Т/С довольно много, в т.ч. и в электронном виде (http://www.natahaus.ru lord-n.narod.ru и т.д. загляните в курс, там все написано, показано).
Есть апноуты с того же http://www.gaw.ru/html.cgi/txt/app/micros/avr/index.htm, AVR130: Инициализация и использование таймеров AVR-микроконтроллеров. С примерами, тоько EN.
Да и гугль, например http://dfe3300.karelia.ru/koi/posob/avr ... tcnt1.html http://dfe3300.karelia.ru/koi/posob/avr ... tcnt0.html
...
Johnny Bravo
 
Сообщения: 400
Зарегистрирован: 26 фев 2006, 15:21
Откуда: Омск

Сообщение Lirzman » 13 авг 2006, 00:34

2 Johnny Bravo: За ссылки спасибо.

ЗЫ Интересная арифметика выходит:1000(1 секунда)/1,5(среднее положение сервы)=666.66666666667MHZ

Чур меня,чур,чур,чур,чур :D  :D  :D  :D  :D
Аватара пользователя
Lirzman
 
Сообщения: 257
Зарегистрирован: 22 мар 2005, 03:59
Откуда: Питер

Сообщение avr123.nm.ru » 13 авг 2006, 15:54

Друзья ! Еще раз ОЧЕНЬ прошу.

делайте как  написано в курсе  avr123.nm.ru/04.htm  и все будет работать !

Поставиви WinAVR  больше НИКОГДА в него не лазайте !

Работайте из VMLAB !!  Он сам генерит ПРАВИЛЬНЫЙ мэйк-файл, которые вы затем при желании можете исправить !

Редактор WinAVR можно подключитьк VMLAB

Из VMLAB ведется редактирование исходника и его перекомпиляция по "ребилд олл".

в проекте VMLAB  у вас должно быть то что в примере VMLAB из папки WinAVR

.MICRO "какой"
.TOOLCHAIN "GCC"
.GCCPATH   "c:\WinAVR"

.GCCMAKE AUTO  ; приказ сделать мэйк фал самому

.SOURCE "main.c"
.TARGET "main.hex"


в исходник на Си  НЕОБХОДИМО включить библиотеки (хидеры .h) из исходника из папки WinAVR

==============

Уанс мо:  

делайте как написано в курсе - и у вас будет работать быстро и правильно.

Вот файлы - попробуйте.
Вложения
SvS_by_avr123.nm.ru _.rar
(3.55 КиБ) Скачиваний: 26
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Lirzman » 13 авг 2006, 20:58

УРРАА!!!
Мне получилось сделать задержку в 20мс на 1-ом таймере(8-битном);
Решив прекратить с поиском готового решения, я вооружившись [url=http://dfe3300.karelia.ru/koi/posob/avrlab/mega16tcnt0.html]этой
[/url]информацией стал внимательно копаться в ДШ.
В итоге получился следующий код:

ВНИМАТЕЛЬНО ЧИТАЙТЕ КОММЕНТЫ!!!
Код: Выделить всё
#define SET_B(x) |= (1<<x)
#define CLR_B(x)  &=~(1<<x)

//****************ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА***************************
void timer0_init(void)
{
TCCR0 = 0x00; //Остановить таймер
TCNT0 = 0x06; //записать в регистр таймера число 184
PORTD CLR_B(7);
TIMSK SET_B(TOIE0);//Разрешение прерывания по переполнению таймера 0
SREG SET_B(7);//Бит i в регистре SREG включен(разрешить глобальные прерывания)
TCCR0 =0x05; //Старт таймера при делителе = 1024
//Биты CS02 и CS00 включены
//а CS01 - выключен
}
//**************ПРОЦЕДУРА ПЕРЕПОЛНЕНИЯ ТАЙМЕРА***********************
SIGNAL(SIG_OVERFLOW0)
{   TCNT0 = 0x06; //записать в регистр таймера число 184
PORTD SET_B(7);//В ПРОТЕУСЕ загорелся соответствующий пин!!!!

}


Вот так!!! :D  :D  :D

2Сергей: ПОЛЬЗУЙСЯ!!!
Аватара пользователя
Lirzman
 
Сообщения: 257
Зарегистрирован: 22 мар 2005, 03:59
Откуда: Питер

Сообщение avr123.nm.ru » 13 авг 2006, 21:38

Можно так решить:
http://avr123.nm.ru/z3.htm

Cоздание скелета  программы  и кода для начальной конфигурации МК с  помощью мастера - генератора начального кода CodeWizardAVR

еще так:
http://avr123.nm.ru/z6.htm

Сконфигурировать таймер_0 МК  ATmega16 и создать программу прерывающуюся 50 раз в секунду от переполнения таймера

Продолжаем учиться генерировать (создавать) начальный код программы на Си, или текст программы инициализации периферии МК с помощью специального инструмента - программы мастера  "Application Builder"

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

Сообщение Lirzman » 13 авг 2006, 21:52

"Генерировать" начальный код нажимая на кнопочки каждый сможет,
а вот понять и ручками написать код основываясь на информации из ДШ врятли.
Согласитесь новичку будет гораздо полезнее вникнуть в принцип действия кода который он САМ написал, чем  воспользоваться мастером.
Аватара пользователя
Lirzman
 
Сообщения: 257
Зарегистрирован: 22 мар 2005, 03:59
Откуда: Питер

Сообщение Johnny Bravo » 13 авг 2006, 21:53

Lirzman писал(а):TCNT0 = 0x06; //записать в регистр таймера число 184

:?:  :?:  :?:
Johnny Bravo
 
Сообщения: 400
Зарегистрирован: 26 фев 2006, 15:21
Откуда: Омск

Сообщение aesok » 13 авг 2006, 22:00

avr123.nm.ru писал(а):Можно так решить:
http://avr123.nm.ru/z3.htm


То 123: Хватит посылать всех на  123, у Человека свои мозги есть.
Последний раз редактировалось aesok 13 авг 2006, 22:07, всего редактировалось 1 раз.
aesok
 
Сообщения: 69
Зарегистрирован: 11 авг 2006, 01:02
Откуда: ----

Сообщение aesok » 13 авг 2006, 22:05

То Lirzman: c PWM я погорячился, для вашей задачи он не подходит, но Вы двигаетесь в правильном направлениии!!!

Анатолий.
aesok
 
Сообщения: 69
Зарегистрирован: 11 авг 2006, 01:02
Откуда: ----

Сообщение avr123.nm.ru » 13 авг 2006, 22:12

aesok писал(а):То 123: Хватит посылать всех на  123, у Человека свои мозги есть.


... а без мозгов на 123 ходить бесполезно.  

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

Сообщение Сергей » 13 авг 2006, 22:46

Да ладно Вам на 123 гнать, я вот изучил таймер0 нормально благодаря примерам 123. Действительно в курсе бывает полезная информация. =)
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Сообщение Lirzman » 13 авг 2006, 23:19

Курс avr123.nm.ru мне помог по определенным моментам, но я не брал его за основу.Просто компилю я на avr-gcc, симуляции провожу в PROTEUS а в курсе подробно рассматривается CodeVision и VMLAB.
Т.к я не хотел отказываться от выбранных инструментов, то пришлось приспосабливать имеющиеся примеры к моему компилятору с другими хидерами.
Так что avr123.nm.ru неумышленно подвиг меня в правильном направлении.    :D  :D

Всё-таки очень полезно хоть иногда лазить в ДШ, я вот никогда бы не подумал что бит i в регистре SREG отвечает за прерывания всех таймеров при переполнении:shock:  :shock:  :shock:

Lirzman писал(а):TCNT0 = 0x06; //записать в регистр таймера число 184
Johnny bravo писал(а)::?::?::?:



Просто коммент забыл поправить :D
0xB8 конечно :D

aesok писал(а): у Человека свои мозги есть.

Похвально :D  :D  :D
Последний раз редактировалось Lirzman 14 авг 2006, 00:08, всего редактировалось 1 раз.
Аватара пользователя
Lirzman
 
Сообщения: 257
Зарегистрирован: 22 мар 2005, 03:59
Откуда: Питер

Сообщение avr123.nm.ru » 13 авг 2006, 23:38

Lirzman писал(а):Всё-таки очень полезно хоть иногда лазить в ДШ


Да, я это настоятельно рекомендую на 1-й странице курса !

Причем не только читать а брать из ДШ куски кода !

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

Пред.След.

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

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

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