Технический форум по робототехнике.
Николай » 13 фев 2006, 17:33
Ищу контролер с 6 Шимами 10 - 12 bit.
Очень нравятся то что в At90PWM 3 называется PSC только их там 3, а мне хотя бы 4 в одном корпусе.
Может кто видел?
Заранее благодарен.
EdGull » 13 фев 2006, 18:11
Как вариант можно взять МК с нужным количеством ног и на них сделать программный ШИМ.
avr123.nm.ru » 13 фев 2006, 20:10
6 шим по 10 бит в ATmega48 (b должно быть в -88 -168)
Николай » 14 фев 2006, 17:00
Прошу прощения, некорректно вопрос задал.
Шим должен быть достаточно быстрым ( 10 ? 20 КГц) с 10 битами это возможно, а с 12 частота счетных импульсов >40 МГц. Тут только PLL с 64 МГц спасет, а его я нашел только в tiny 26 и at90PWM2_3.
К шимам подключаются моторы направление вращения которых задается включением одного из дух электромагнитов. На каждый PSC приходится по два выхода, при этом отпадает надобность в ноге на которой формируется знак и внешней логике (если я все правильно понял с драйверами для двигателей). Кстати может кто видел драйвер который управляет двумя транзисторами верхнего плеча, на входе у которого отдельно знак и отдельно ШИМ. Моторы по 650 ватт 200 вольт.
Программный ШИМ штука наверно хорошая, но аппаратные кажутся куда более надежными. Да и стоимость моторов такая что цена контролера порядка на два три меньше.
У Atmega 48/88/168 три таймера, на каждом по 2 ШИМа. При этом только один таймер 16ти битный. Как на 8ми битных таймерах строятся 10 бит ШИМы?
Спасибо AVR123 за его курс, у меня увлечение контролерами началось с него.
Еще вопрос не в тему. В ICC v7.04A в project\options\device configuration At90PWM3 есть, а в application builder его нет. Это значит что ICC сможет в него только готовый hex зашить, или все же скомпилять сможет. В каком из компиляторов поддержка новых микросхем появляется раньше.
avr123.nm.ru » 14 фев 2006, 17:33
Николай писал(а):В ICC v7.04A в project\options\device configuration At90PWM3 есть, а в application builder его нет. Это значит что ICC сможет в него только готовый hex зашить, или все же скомпилять сможет.
.
может компилировать но не может генерить начальный код Си.
Nihilant » 04 мар 2006, 22:48
Начинающий. Делаю ШЫМ по примеру из WinAVR demo.c, но в Кодевижне (1.24.7а Eval.)
Вот кусок проги с наиболее полезными (по моему) строками, сгенерированной Кодевиженовским CodeWizard'ом с моими строками
(тело прерывания и переменные перед ним):
- Код: Выделить всё • Развернуть
Chip type : ATmega8
Program type : Application
Clock frequency : 1,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
static enum {UP, DOWN}dir=UP;
static unsigned int pwm=0;
const unsigned int TOP=1023;
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Place your code here
switch (dir)
{
case UP:
if (++pwm == TOP)
dir=DOWN;
break;
case DOWN:
if (--pwm == 0)
dir=UP;
break;
};
OCR1A=pwm;
}
//== а это - из ф-ии main():
PORTB=0x00;
DDRB=0x02;
...
// Clock source: System Clock/64
// Clock value: 1000,000 kHz/64
// Mode: Ph. correct PWM top=00FFh
// OC1A output: Non-Inv.
// Timer 1 Overflow Interrupt: On
TCCR1A=0x81;
TCCR1B=0x03;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
TIMSK=0x04;
...
остальная периферия инициализирована в нули (как нерабочая)
потом идет бесконечный цикл
Мои ожидания: подключенный между OC1A (portB.1) и землей светодиод должен плавно загораться и гаснуть тоже плавно, т.е. график яркости такой:
.../\/\/\...
вместо этого получается пила, состоящая из циклов вида:
.../|/|/\|\|\...
т.е. четыре нарастающих яркости, потом 4 спадающих, все это повторяется.
1. В чем косяк программы?
2. В AVR Studio 3.56 ни одна из моих переменных не видна. Интересно узнать причины.
Спасибо.
Заключайте листинги в тег CODE <V>
- Вложения
-
- 1.JPG (6.03 КиБ) Просмотров: 4193
avr123.nm.ru » 05 мар 2006, 06:01
попробуй VMLAB и отладку как в задаче 6 курса МК
wolf » 09 мар 2006, 21:18
Nihilant писал(а):const unsigned int TOP=1023;
...
// Mode: Ph. correct PWM top=00FFh
1. В чем косяк программы?
Нестыковка. Топ меняете от 0 до 1023, а шим считает от 0 до 255. Приведите в соответствие.
Nihilant писал(а):2. В AVR Studio 3.56 ни одна из моих переменных не видна. Интересно узнать причины.
Спасибо.
Обновите, сейчас актуален 4.12-ый.
Nihilant » 10 мар 2006, 10:42
avr123.nm.ru писал(а):попробуй VMLAB и отладку как в задаче 6 курса МК
Кстати, ВМЛаб не помог мне выловить баг, когда я при пересылке
const char* c="Hello, world!" по UART побайтно в цикле
for(i=0; c[i]!='\n'; i++) {...}
как конец массива рассматривал '\n' вместо '\0'. Но все равно, ВМЛаб хороший.
Спасибо за ответы.
Stepan » 27 мар 2006, 16:26
Николай писал(а):Ищу контролер с 6 Шимами 10 - 12 bit.
Очень нравятся то что в At90PWM 3 называется PSC только их там 3, а мне хотя бы 4 в одном корпусе.
Может кто видел?
Заранее благодарен.
Хм.. Здесь вот кстати PSOC от Cypress поможет. Например CY8C29466.
MasterCat » 28 май 2007, 21:24
с шестью независмыми каналами ШИМ si8250.
но эту игрушку нахрапом не взять. не AVRка
Shamray » 06 июн 2007, 17:01
Можно под это дело использовать какю-нибудь простенькую ПЛИС, например ALTERA EPM3128 должно хватить на 4 12-битных ШИМ-а + МК любой AVR.