ОТВЕТ - многоканальный АЦП- ШИМ atmega

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 74
Зарегистрирован: Пн дек 06, 2010 23:57:09
Откуда: Обнинск

Сообщение Sel4 »

ПРивет, коллеги! Решил поделиться некими наработками.
Для выполнения некоей задачи мне необходимо 4 канала ШИМа, управляемых от аналоговых сигналов.
Искал, нашел, сделал макет. Написано для atmega1280 на С в AVRStudio 4.19.
Для разнообразия сделал 6 каналов, все работают, :)
Значения для установки заполнеия ШИМа читются из массива adc_data[n]
ТАм все в комментах написано.
Еще такую увидел интересную, на мой взгляд штуку - изменение значения ШИМа на других каналах относительно выбранного:

Код: Выделить всё

OCR3A = adc_data[0];//и так назначаем выходы контроллера .....
OCR3B = adc_data[1] /0x02; //тут будет значение ШИМа вдвое меньшим, не более  50% при максимуме на входе АЦП
OCR3C = adc_data[2]/0x05;//тут в пять раз, т.е. ШИМа будет только 20%
OCR4A = adc_data[3]*adc_data[0]/0xff; //а тут будет зависимость  от adc_data[0] Можно разные арифметические действия, по усмотрению. 
Здесь можно настроить выход ШИМа для трех каналов(для других трех аналогично) - частоту, инверсию, фазу и пр, согласно таблиц в даташите:

Код: Выделить всё

TCCR3C = 0b10101001; 
TCCR3B = 0b10100001;
TCCR3A = 0b10101001;
Чтобы переделать для atmega16 надо просто переставить значения регистров и выходные порты переписать.
(OCR3B - это вывод OC3B на контроллере)
Вложения
mega2560.c
(1.92 КБ) 283 скачивания
Реклама
Открыл глаза
Сообщения: 74
Зарегистрирован: Пн дек 06, 2010 23:57:09
Откуда: Обнинск

Сообщение Sel4 »

Еще немного интересного :
Ардуина это готовый микроконтроллер с программатором. Но вот код, который выдает ардуиновский компилятор содержит барахла на все случаи жизни и хекс получается на 7 килообайт, Ы...
Можно заливать и свой хекс напрямую через ArduinoUploader.
Только вот не получится просто так залить..
Надо в строке написать то, что использует Ардуина при прошивке.
Нужно открыть ArduinoIDE.
В настройках поставить галку, типа, выводить лог при прошивке.
Внизу, при прошивке будет видна красным разная хрень.
Надо найти что-то типа этого:

Код: Выделить всё

-v -patmega1280 -carduino -P\\.\COM2 -b57600 -D -V -Uflash:w:D:\Projects\mega2560\default\mega2560.hex:i
и вставить в окно ArduinoUploader. Выбрать порт.
Вместо -carduino можно поставить -cstk500v1, работает.
И главное, нужно из папки с ардуиной перенести в папку с ArduinoUploader два файла - это avrdude.exe и avrdude.conf.
Находятся они по таким путям:
ПАПКА С АРДУИНО\hardware\tools\avr\etc\avrdude.conf и
ПАПКА С АРДУИНО\hardware\tools\avr\bin\avrdude.exe
Реклама
Ответить

Вернуться в «AVR»