BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

edm2007 писал(а):константин_KoSS_89
P.S. А можно просто прикрутить к контроллеру обиженную женщину. Уверен, гадать на что и когда она обиделась Вы будете очень долго. Тут любой генератор случайностей отдыхает. :tea:

Это прописная истина, которая вечна. 8)
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: BASCOM AVR в вопросах и ответах

Сообщение Мурик »

Tankor писал(а):ATMega328.
Этого контроллера мало? :shock: :shock:
Это столько кода написали или есть какие-то данные, типа картинок, шрифтов и т. д.?
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

Re: BASCOM AVR в вопросах и ответах

Сообщение Tankor »

Мурик писал(а):
Tankor писал(а):ATMega328.
Этого контроллера мало? :shock: :shock:
Это столько кода написали или есть какие-то данные, типа картинок, шрифтов и т. д.?

Пара картинок есть, но они маленькие. Шрифты "доделываю"родные.
Вложения
Новая папка.rar
(14.25 КБ) 200 скачиваний
koteika
Встал на лапы
Сообщения: 147
Зарегистрирован: Пт ноя 27, 2009 18:24:25
Откуда: Харьков
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение koteika »

привет, а есть у кого код для софтового шима? с коментариями, так чтоб разобраться.
20 каналов хочу сделать
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Здравствуйте.

Если Вы знаете как работает аппаратный ШИМ, то запросто напишете программный на одном таймере. Другое дело, что контроллер только и будет занят этой задачей. Лучше посмотрите в сторону BAM.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
koteika
Встал на лапы
Сообщения: 147
Зарегистрирован: Пт ноя 27, 2009 18:24:25
Откуда: Харьков
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение koteika »

а можно поподробнее, я новичек в этом деле, как работает шим в курсе а вот как организовать его на 20 каналов не представляю :(
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Примитивно об аппаратной ШИМ: таймер молотит от 0 до максимального значения. При каждом увеличении счетного регистра его значение сравнивается со значением в регистре сравнения. Если значение счетного регистра достигло значения в регистре сравнения, то на выводе OC выставляется 1 (или 0 - зависит от того, прямой или инверсный режим настроен). При переполнении счетного регистра вывод OC сбрасывается в 0 (или выставляется в 1, опять же). Таким образом, при неизменной частоте меняется скважность. Что и требуется.

Настройте и запустите таймер по переполнению, заведите переменную счетчика (которую будете увеличивать в обработчике таймера - это будет счетный регистр), заведите 20 переменных со значениями яркости каждого канала (это будут регистры сравнения) и в обработчике сравнивайте значение счетчика со значениями каналов. Если счетчик таймера не достиг значения яркости, то на выводе выставляете 0, если равен или больше - 1. Если счетчик переполнился - сбрасываем все каналы в 0. Получится инверсный режим. Как сделать прямой, догадаться не трудно...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
koteika
Встал на лапы
Сообщения: 147
Зарегистрирован: Пт ноя 27, 2009 18:24:25
Откуда: Харьков
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение koteika »

спасибо, на досуге попробую :beer:
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Думал, как бы и пример показать, и дать возможность самому написать, особо не давая готовое. И решил, а собственно, пусть это будет, во-первых, 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)                                    // пустой основной цикл
    {

   }
}

//*******************************************[КОНЕЦ ПРОГРАММЫ]*************************************************


Код можно неплохо оптимизировать, но тогда наглядность исчезнет, а я именно эту цель преследовал. Ну и главное - все работает (хоть и на фото сложно яркость светодиодов передать):

Изображение

Жду ответ от Вас, уже на баскоме. :tea:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
константин_KoSS_89
Вымогатель припоя
Сообщения: 602
Зарегистрирован: Пн дек 29, 2008 01:40:28
Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)

Re: BASCOM AVR в вопросах и ответах

Сообщение константин_KoSS_89 »

edm2007 Скажите а отладочная у вас случайно не самодельная, если да можно печаткой поделится.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Самодельнее некуда. :) Но увы, канула в вечность. Шаблон для фоторезиста где-то был... На самом деле отладочная плата это очень просто. Делаем модули из того что есть (и того что нужно) на одной плате. А так как представления о нужности у каждого разные, то и плата у каждого своя.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: BASCOM AVR в вопросах и ответах

Сообщение pavel1979 »

edm2007 круто!а такая ардуина http://www.ilyichevsk.org/2010/06/metaboard-arduino-usb-usb.html будет работать в BASCOM AVR?если да то какой программатор выбрать в программе?
думаю поставить атмега 168
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

Re: BASCOM AVR в вопросах и ответах

Сообщение max50 »

pavel1979 писал(а):если да то какой программатор выбрать в программе?

Каким будете шить, тот и выбирайте. Это по сути просто МК с обвязкой, а USB реализовано программно:
Metaboard - Arduino-совместимая плата с USB, но без USB-чипа. USB реализовано в микропрограмме ATmega, код основан на драйвере V-USB от Objective Development (на этом драйвере основаны все реализации протокола USB на AVR)
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: BASCOM AVR в вопросах и ответах

Сообщение pavel1979 »

Спасибо!буду искать варианты....надоело каждый раз травить новую плату...
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

Re: BASCOM AVR в вопросах и ответах

Сообщение max50 »

pavel1979 писал(а):буду искать варианты

Как вариант.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: BASCOM AVR в вопросах и ответах

Сообщение pavel1979 »

спасибо!
нашел схему этой ардуины,в принципе можно и самому спаять,найти бы прошивку под мегу16...Изображение
Аватара пользователя
bumbum
Открыл глаза
Сообщения: 66
Зарегистрирован: Сб янв 28, 2006 01:01:04

Re: BASCOM AVR в вопросах и ответах

Сообщение bumbum »

Как вывести зеркально байт? Есть команда или надо программно решать?
sasha_1973
Родился
Сообщения: 9
Зарегистрирован: Ср дек 12, 2012 23:51:21

Re: BASCOM AVR в вопросах и ответах

Сообщение sasha_1973 »

bumbum писал(а):Как вывести зеркально байт? Есть команда или надо программно решать?



Toggle Переменная_byte
Аватара пользователя
bumbum
Открыл глаза
Сообщения: 66
Зарегистрирован: Сб янв 28, 2006 01:01:04

Re: BASCOM AVR в вопросах и ответах

Сообщение bumbum »

sasha_1973 писал(а):
bumbum писал(а):Как вывести зеркально байт? Есть команда или надо программно решать?



Toggle Переменная_byte

Это инвертирование, а надо зеркально- развернуть относительно центра )
sasha_1973
Родился
Сообщения: 9
Зарегистрирован: Ср дек 12, 2012 23:51:21

Re: BASCOM AVR в вопросах и ответах

Сообщение sasha_1973 »

Это инвертирование, а надо зеркально- развернуть относительно центра


Поменять полубайты местами?
Ответить

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