ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение Pink-Pank »

Кнопка "спасибо" - это плюсик в рейтинге сообщений, вы его уже нажали. ;)

который стоит после цикла--------загадка
как думаете в чем причина

Не знаю, как-то разбирать то, что генерирует Flow не очень хочется, но то, что требуется делать всего один раз (включение или выключение) лучше всегда выносить за цикл. Хотя бы из соображений скорости выполнения кода.
Fucking static initialization order fiasco
сарагоса
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пн авг 05, 2013 18:59:08

Re: Как включить ШИМ на тини 2313

Сообщение сарагоса »

понял
спасибо еще раз
думаю тема закрыта
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение WishMasterMax »

Всем доброго времени суток :)) Тема как я вижу имеет отношение к моему вопросу поэтому спрошу тут. Вопрос таков - а нормально ли что при установке например OCR0A = 0 на выходе все равно есть иголки? Возможно ли их как-то убрать? Таймер настроен так: TCCR0A = 0xA3;TCCR0B = 0x03;
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение Pink-Pank »

По моему, Вы уже об этом спрашивали.
Нормально. Это документированная особенность. При установке максимального значения вывод переводится в устойчивое состояние 1-цы.
Fucking static initialization order fiasco
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение WishMasterMax »

Не, это явно был не я :))
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение WishMasterMax »

И еще такой вопрос, мне нужно 4 канала шима но жирновато использовать оба таймера для этого, поэтому единственное решение это как я понимаю программный шим на одном из таймеров. Я тут произвел некоторые расчеты и хотел бы узнать правильные ли они. Мне необходим шим с частотой в 120кГц, таймер0 8битный, мк на частоте 12 мГц, предделитель таймера - 8, значит начало отсчета для TCNT0 должно быть 243. И каждое прерывание по переполнению я сравниваю свое значение канала со своей переменной счетчика. Так?
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение Pink-Pank »

WishMasterMax писал(а):...жирновато использовать оба таймера

Вы планируете использовать второй таймер в других целях? Если нет, то не вижу никаких проблем в использовании двух таймеров. К тому же, если Ваши 4 устройства будут работать синхронно - можно снимать сигнал управления с одной ножки.
значит начало отсчета для TCNT0 должно быть 243. И каждое прерывание по переполнению я сравниваю свое значение канала со своей переменной счетчика.

Можно использовать режим работы CTC (Сброс по совпадению). Частота прерываний, которую Вы рассчитали, будет 125 Гц. Для более точного получения частоты в 120 кГц устанавливайте предделитель таймера = 1 и значение в TCNT0 = 99. Режим CTC. будет Вам ровно 120 кГц.
Fucking static initialization order fiasco
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение WishMasterMax »

Ну планировал второй таймер оставить на лучшие времена, вполне возможно что адц будет нужен.
Хм, значит все же ошибся) Я так понимаю что в этом режиме таймер будет тикать до совпадения со значением OCR0A? Нет, нагрузки разные, в данном случае это RGB лента + лампа, ну а в принципе ситуации разные могут быть :))
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение Pink-Pank »

Я так понимаю что в этом режиме таймер будет тикать до совпадения со значением OCR0A?

Да. а потом сам сбросится на 0 и сгенерирует прерывание.
Fucking static initialization order fiasco
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение WishMasterMax »

Отлично :)) Спасибо огромное за советы :)) Я что-то этот режим ранее стороной обходил :)

Но 99 заносить же в OCR0A?
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение Pink-Pank »

Да. Это я спутал
Fucking static initialization order fiasco
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: Как включить ШИМ на тини 2313

Сообщение WishMasterMax »

:)) А то я просто начал тупить, решил уточнить=) Спасибо Вам огромное :))
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение WishMasterMax »

Доброго времени суток :)) Помогите пожалуйста с проблемой)
Написал следующий код:
Спойлер

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

/*
 * Lights.c
 *
 * Created: 15.07.2014 12:08:19
 *  Author: Max
 */


#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdbool.h>
#include <avr/eeprom.h>
#include <avr/sfr_defs.h>
#include <stdlib.h>

volatile int PWM_RED, PWM_GREEN, PWM_BLUE;

#define LEDSP PD5
#define BULBSP PB4
#define STNDBYL PD6

#define RED_LED PB1
#define GREEN_LED PB2
#define BLUE_LED PB3

#define LEDS_ON PORTD |= _BV(LEDSP)
#define LEDS_OFF PORTD &= ~_BV(LEDSP)
#define isLEDS_ON bit_is_set(PORTD,5)
#define LEDS_S if(isLEDS_ON){LEDS_OFF;}else{LEDS_ON;}

#define BULBS_ON PORTB |= _BV(BULBSP)
#define BULBS_OFF PORTB &= ~_BV(BULBSP)
#define isBULBS_ON bit_is_set(PORTB,4)
#define BULBS_S if(isBULBS_ON){BULBS_OFF;}else{BULBS_ON;}


#define RED_ON PORTB |= _BV(RED_LED)
#define RED_OFF PORTB &= ~_BV(RED_LED)
#define GREEN_ON PORTB |= _BV(GREEN_LED)
#define GREEN_OFF PORTB &= ~_BV(GREEN_LED)
#define BLUE_ON PORTB |= _BV(BLUE_LED)
#define BLUE_OFF PORTB &= ~_BV(BLUE_LED)

#define STNDBY_LED_ON PORTD |= _BV(STNDBYL)
#define STNDBY_LED_OFF PORTD &= ~_BV(STNDBYL)

#define E_RANDOM (random() % 255);

#define SET_COLOR(R,G,B) {PWM_RED = R; PWM_GREEN = G; PWM_BLUE = B;}

 

ISR(TIMER0_COMPA_vect)
{
   static unsigned int CNT = 0;
   //if(CNT < PWM_RED) RED_ON; else RED_OFF;
   if(CNT < PWM_GREEN) GREEN_ON; else GREEN_OFF;
   //if(CNT < PWM_BLUE) BLUE_ON; else BLUE_OFF;
   
   if(CNT < 255)CNT++; else CNT = 0;
}


void config(void)
{
      DDRB = 0x1E;
      PORTB = 0x00;
      DDRD = 0x60;
      PORTD = 0x00;
      
      
      TCCR0A |= (1 << WGM01 );
      OCR0A = 20;//99
      TCCR0B |= (1<<CS00);
      TIMSK |= (1 << OCIE0A );   
      /*TCCR1A = 0xA1;
      TCCR1B = 0x0B;// /64*/      
}

int main(void)
{
   config();
   asm("sei");
   int i=0;
   
    while(1)
    {
        //TODO:: Please write your application code
      i++;
      PWM_GREEN = i;
      if (i==255) i=0;
      _delay_ms(20);


    }
}


В протеусе отрабатывает адекватно, на железке дилей выглядит не на 20 а на все 1000-2000.
Фьюзы выглядят так:
СпойлерИзображение
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Pink-Pank »

фьюз CKDIV сбросьте (установите галочку). Он делит частоту на 8
Fucking static initialization order fiasco
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение WishMasterMax »

А разве 0 не означает что он включен? И при включении начинается моргание шима программного)
Последний раз редактировалось WishMasterMax Пн июл 21, 2014 18:16:18, всего редактировалось 1 раз.
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Pink-Pank »

Означает. Вам надо выключить. либо в заголовочнике меняйте частоту на 1000000
Fucking static initialization order fiasco
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение WishMasterMax »

Так он отключен, я переносил фьюзы с тиньки, после прочтения скопировал и убрал галку, затем записал их
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Pink-Pank »

Так поставьте галку!

Стоять!!!

Изображение

Изображение


Вам надо в CKSEL3, CKSEL1, CKSEL0 галки убрать, а в CKSEL2 поставить.

:facepalm: Сам запутался! :))) У Atmel так, у CodeVision наоборот! ))

У Вас в свойствах проекта какая частота стоит?
Вложения
12345.png
(12.19 КБ) 452 скачивания
12345.png
(50.38 КБ) 423 скачивания
Последний раз редактировалось Pink-Pank Пн июл 21, 2014 18:28:25, всего редактировалось 7 раз.
Fucking static initialization order fiasco
Аватара пользователя
WishMasterMax
Потрогал лапой паяльник
Сообщения: 389
Зарегистрирован: Пн июл 09, 2012 11:07:59
Откуда: Ukraine
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение WishMasterMax »

Почему наоборот, все так же) Я бы другой утилитой шил но протосс 910 не со многим работает :))

А в студии нет частоты в проекте
In me the WishMaster...
Изображение
Изображение
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сообщение Pink-Pank »

Есть в студии частота. ;) По крайней мере, в 5 и 6 версиях
Fucking static initialization order fiasco
Ответить

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