Технический форум по робототехнике.
hadok » 13 ноя 2009, 21:17
а как вообще сервомашинкой управлять? Меняем длительность импульса и всё?
Меня интересует, если в программе МК стоит, предположим, задержка _delay_us(100), насколько точно контроллер отработает это время?
Я написал простенький шим-генератор. Знаю, в МК есть свой встроенный, но там нельзя менять период импульсов, а только отношение длительностей 0 и 1, при подборе двигателей период может иметь значение. Не могу пока добраться до осцилографа, чтобы проверить насколько точно мой шим может изменять параметры импульсов.
вот кстати и алгоритм:
- Код: Выделить всё • Развернуть
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 8000000UL
float d,del1,del2,d2,T;
int i;
int main(void) {
DDRD = 0xff;
DDRC = 0xff;
DDRA = 0x00;
T=2000;
del1=1;
del2=T-del1;
i=1;
d2=0.1;
while (1) {
if (i==1)
{
PORTC=0X00;
_delay_us(del1);
PORTC=0XFF;
_delay_us(del2);
del2=T-del1;
del1=del1+d2;
if (del1>T) {i=0;PORTD=0X0F;_delay_ms(100);}}
if (i==0)
{
PORTC=0X00;
_delay_us(del1);
PORTC=0XFF;
_delay_us(del2);
del2=T-del1;
del1=del1-d2;
if (del1<2) {i=1;_delay_ms(3000);PORTD=0XF0;}}
}
}
milkpower » 13 ноя 2009, 22:07
хм, в С не силен, но насколько я понимаю, твой шим будет работать только в том виде что ты написал, если заставить МК делать еще что-нибудь, то частота будет плавать, и чем больше МК занят, тем больше паузы будут между импульсами.
нужно делать программный шим на таймере.
=DeaD= » 13 ноя 2009, 22:10
hadok писал(а):Я написал простенький шим-генератор. Знаю, в МК есть свой встроенный, но там нельзя менять период импульсов, а только отношение длительностей 0 и 1, при подборе двигателей период может иметь значение.
Это вам кто такую ерунду сказал?
hadok » 14 ноя 2009, 00:38
а как вообще можно поменять период в шим-генераторе?
и ещё пару вопросов по шиму: импульсы можно выдавать только на определённые ножки или на любые выводы портов?
Как запускать шим на мк mega16
=DeaD= » 14 ноя 2009, 00:49
шим выдаётся на ноги OCRxx
Добавлено спустя 4 минуты 53 секунды:
Пример настройки ШИМа на ATMega32 из моего кода лайнтрейсера при частоте кварца 7.3728Мгц:
//PWM, Phase and frequency correct, TOP=ICR1
TCCR1A=0xA0; //clear on up-counting, set on down-counting
TCCR1B=0x11; //Clock prescaler 1/1
ICR1=740; //Set 5000Hz frequency
PORTB=0x00;
OCR1A=0;
OCR1B=0;
ICR - это до куда счетчик крутится и начинается сначала (меняя его и Prescaler - меняем как раз частоту\период)
А меняя OCR1A, OCR1B - меняем скважность (тут пока 0).
Добавлено спустя 52 секунды:
Ну и там еще ноги выставить на выход соотв. OCR1A, OCR1B которые.
hadok » 14 ноя 2009, 01:01
не подскажешь на какую в моём случае ножку?
Добавлено спустя 30 секунд:
ага.....уже вижу
Добавлено спустя 9 минут 4 секунды:
хорошо, можешь написать пример период=500 мс отношение длительности 0/1 = 30%
- Вложения
-

=DeaD= » 14 ноя 2009, 01:22
Э нет, я не кодевизард, тут уж сами смотрите как Prescaler выставлять и как ICR от вашей частоты, которую вы даже не сказали.
hadok » 15 ноя 2009, 23:06
не могу справиться с LPT портом....всё равно после включения порта МК перестаёт работать,
ножка reset в каком состоянии должна быть?
схему программатора использовал эту
правильно ли я понимаю: после прошивания МК отключаем lpt порт и МК начинает работать по заложенной программе, и не нужно что-то дополнительно переключать???
- Вложения
-

- мк mega16
=DeaD= » 16 ноя 2009, 00:26
Ресет в рабочем состоянии подтянут к питанию, вытащи МК и проверь, куда её порт тянет?
SSG » 17 ноя 2009, 18:57
Да спаяй ты себе обыкновенные пять проводков и не мучайся

А ножки на рисунке есть (PD4 и PD5).
hadok » 18 ноя 2009, 12:58
Паял с пятью проводками....вообще всё было глухо, ни одна зашивающая прога не видела МК. А с микросхемой 74HC244 хотя бы Pony Prog зашивает. Но вот нет возможности прописать, чтобы МК использовал кварц внешний. Кварц у меня на 8 мегагерц. Но видно работает на родном 1 мегагерце.
milkpower » 18 ноя 2009, 14:30