roboforum.ru

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

Шим >8 bit

Шим >8 bit

Николай » 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
1.JPG (6.03 КиБ) Просмотров: 4193

avr123.nm.ru » 05 мар 2006, 06:01

попробуй VMLAB и отладку как в задаче 6 курса МК

Re: ШЫМ

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'. Но все равно, ВМЛаб хороший.
Спасибо за ответы.

Re: Шим >8 bit

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.


Rambler\'s Top100 Mail.ru counter