Это прописная истина, которая вечна.edm2007 писал(а):константин_KoSS_89
P.S. А можно просто прикрутить к контроллеру обиженную женщину. Уверен, гадать на что и когда она обиделась Вы будете очень долго. Тут любой генератор случайностей отдыхает.
BASCOM AVR в вопросах и ответах
- Tankor
- Встал на лапы
- Сообщения: 139
- Зарегистрирован: Вт май 03, 2011 10:13:12
- Откуда: Россия, Татарстан
Re: BASCOM AVR в вопросах и ответах
- Реклама
Re: BASCOM AVR в вопросах и ответах
Этого контроллера мало?Tankor писал(а):ATMega328.
Это столько кода написали или есть какие-то данные, типа картинок, шрифтов и т. д.?
- Tankor
- Встал на лапы
- Сообщения: 139
- Зарегистрирован: Вт май 03, 2011 10:13:12
- Откуда: Россия, Татарстан
Re: BASCOM AVR в вопросах и ответах
Пара картинок есть, но они маленькие. Шрифты "доделываю"родные.Мурик писал(а):Этого контроллера мало?Tankor писал(а):ATMega328.![]()
![]()
Это столько кода написали или есть какие-то данные, типа картинок, шрифтов и т. д.?
- Вложения
-
- Новая папка.rar
- (14.25 КБ) 202 скачивания
-
koteika
- Встал на лапы
- Сообщения: 147
- Зарегистрирован: Пт ноя 27, 2009 18:24:25
- Откуда: Харьков
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
привет, а есть у кого код для софтового шима? с коментариями, так чтоб разобраться.
20 каналов хочу сделать
20 каналов хочу сделать
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Здравствуйте.
Если Вы знаете как работает аппаратный ШИМ, то запросто напишете программный на одном таймере. Другое дело, что контроллер только и будет занят этой задачей. Лучше посмотрите в сторону BAM.
Если Вы знаете как работает аппаратный ШИМ, то запросто напишете программный на одном таймере. Другое дело, что контроллер только и будет занят этой задачей. Лучше посмотрите в сторону BAM.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Реклама
-
koteika
- Встал на лапы
- Сообщения: 147
- Зарегистрирован: Пт ноя 27, 2009 18:24:25
- Откуда: Харьков
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
а можно поподробнее, я новичек в этом деле, как работает шим в курсе а вот как организовать его на 20 каналов не представляю 
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Примитивно об аппаратной ШИМ: таймер молотит от 0 до максимального значения. При каждом увеличении счетного регистра его значение сравнивается со значением в регистре сравнения. Если значение счетного регистра достигло значения в регистре сравнения, то на выводе OC выставляется 1 (или 0 - зависит от того, прямой или инверсный режим настроен). При переполнении счетного регистра вывод OC сбрасывается в 0 (или выставляется в 1, опять же). Таким образом, при неизменной частоте меняется скважность. Что и требуется.
Настройте и запустите таймер по переполнению, заведите переменную счетчика (которую будете увеличивать в обработчике таймера - это будет счетный регистр), заведите 20 переменных со значениями яркости каждого канала (это будут регистры сравнения) и в обработчике сравнивайте значение счетчика со значениями каналов. Если счетчик таймера не достиг значения яркости, то на выводе выставляете 0, если равен или больше - 1. Если счетчик переполнился - сбрасываем все каналы в 0. Получится инверсный режим. Как сделать прямой, догадаться не трудно...
Настройте и запустите таймер по переполнению, заведите переменную счетчика (которую будете увеличивать в обработчике таймера - это будет счетный регистр), заведите 20 переменных со значениями яркости каждого канала (это будут регистры сравнения) и в обработчике сравнивайте значение счетчика со значениями каналов. Если счетчик таймера не достиг значения яркости, то на выводе выставляете 0, если равен или больше - 1. Если счетчик переполнился - сбрасываем все каналы в 0. Получится инверсный режим. Как сделать прямой, догадаться не трудно...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
koteika
- Встал на лапы
- Сообщения: 147
- Зарегистрирован: Пт ноя 27, 2009 18:24:25
- Откуда: Харьков
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
спасибо, на досуге попробую 
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Думал, как бы и пример показать, и дать возможность самому написать, особо не давая готовое. И решил, а собственно, пусть это будет, во-первых, 8 каналов. А во-вторых - на Си.
Код можно неплохо оптимизировать, но тогда наглядность исчезнет, а я именно эту цель преследовал. Ну и главное - все работает (хоть и на фото сложно яркость светодиодов передать):

Жду ответ от Вас, уже на баскоме.
Спойлер
Код: Выделить всё
//*****************************************[ОПИСАНИЕ ПРОГРАММЫ]************************************************
//
// Микроконтроллер: ATMEGA8A
// Частота: 4MHz
//
// SoftPWM 8-channel (0 - максимальная яркость, 255 - светодиод погашен)
//*************************************[ПОДКЛЮЧАЕМЫЕ ФАЙЛЫ И МАКРОСЫ]******************************************
#define F_CPU 4000000UL // тактовая частота
#include <avr/io.h> // работа с AVR
#include <avr/interrupt.h> // работа с прерываниями
#define DDR_LED DDRD // порт светодиодов
#define PORT_LED PORTD
#define LED1 PD7
#define LED2 PD6
#define LED3 PD5
#define LED4 PD4
#define LED5 PD3
#define LED6 PD2
#define LED7 PD1
#define LED8 PD0
//*****************************************[ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ]*********************************************
uint8_t counter = 0; // счетный регистр таймера
uint8_t bright[8] = {40, 70, 100, 150, 180, 200, 220, 250}; // значения яркости 8-ми каналов
//*********************************************[ПРЕРЫВАНИЯ]****************************************************
ISR(TIMER0_OVF_vect) // обработчик таймера 0 по переполнению
{
if (++counter == 255) // если счетчик переполнился
{
counter = 0; // сбрасываем его
PORT_LED = 0xFF; // и гасим все светодиоды
}
else // в ином случае, проверяем, какой светодиод пришло время зажечь
{
if (counter >= bright[0]) PORT_LED &= ~(1 << LED1);
if (counter >= bright[1]) PORT_LED &= ~(1 << LED2);
if (counter >= bright[2]) PORT_LED &= ~(1 << LED3);
if (counter >= bright[3]) PORT_LED &= ~(1 << LED4);
if (counter >= bright[4]) PORT_LED &= ~(1 << LED5);
if (counter >= bright[5]) PORT_LED &= ~(1 << LED6);
if (counter >= bright[6]) PORT_LED &= ~(1 << LED7);
if (counter >= bright[7]) PORT_LED &= ~(1 << LED8);
}
}
//********************************************[ОСНОВНОЙ ЦИКЛ]**************************************************
int main(void)
{
DDR_LED = 0xFF; // весь порт на выход
PORT_LED = 0xFF; // все светодиоды погашены (управляются 0)
TCCR0 |= ((0 << CS02) | (0 << CS01) | (1 << CS00)); // таймер 0: прескаллер - 1
TIMSK |= (1 << TOIE0); // прерывание по переполнению
sei(); // глобальное разрешение прерываний
while(1) // пустой основной цикл
{
}
}
//*******************************************[КОНЕЦ ПРОГРАММЫ]*************************************************
Жду ответ от Вас, уже на баскоме.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
Re: BASCOM AVR в вопросах и ответах
edm2007 Скажите а отладочная у вас случайно не самодельная, если да можно печаткой поделится.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Самодельнее некуда.
Но увы, канула в вечность. Шаблон для фоторезиста где-то был... На самом деле отладочная плата это очень просто. Делаем модули из того что есть (и того что нужно) на одной плате. А так как представления о нужности у каждого разные, то и плата у каждого своя.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
edm2007 круто!а такая ардуина http://www.ilyichevsk.org/2010/06/metab ... b-usb.html будет работать в BASCOM AVR?если да то какой программатор выбрать в программе?
думаю поставить атмега 168
думаю поставить атмега 168
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
Каким будете шить, тот и выбирайте. Это по сути просто МК с обвязкой, а USB реализовано программно:pavel1979 писал(а):если да то какой программатор выбрать в программе?
Metaboard - Arduino-совместимая плата с USB, но без USB-чипа. USB реализовано в микропрограмме ATmega, код основан на драйвере V-USB от Objective Development (на этом драйвере основаны все реализации протокола USB на AVR)
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
Спасибо!буду искать варианты....надоело каждый раз травить новую плату...
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
Как вариант.pavel1979 писал(а):буду искать варианты
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Re: BASCOM AVR в вопросах и ответах
Как вывести зеркально байт? Есть команда или надо программно решать?
-
sasha_1973
- Родился
- Сообщения: 9
- Зарегистрирован: Ср дек 12, 2012 23:51:21
Re: BASCOM AVR в вопросах и ответах
bumbum писал(а):Как вывести зеркально байт? Есть команда или надо программно решать?
Toggle Переменная_byte
Re: BASCOM AVR в вопросах и ответах
Это инвертирование, а надо зеркально- развернуть относительно центра )sasha_1973 писал(а):bumbum писал(а):Как вывести зеркально байт? Есть команда или надо программно решать?
Toggle Переменная_byte
-
sasha_1973
- Родился
- Сообщения: 9
- Зарегистрирован: Ср дек 12, 2012 23:51:21
Re: BASCOM AVR в вопросах и ответах
Это инвертирование, а надо зеркально- развернуть относительно центра
Поменять полубайты местами?
Поменять полубайты местами?


