Не знаю, как-то разбирать то, что генерирует Flow не очень хочется, но то, что требуется делать всего один раз (включение или выключение) лучше всегда выносить за цикл. Хотя бы из соображений скорости выполнения кода.который стоит после цикла--------загадка
как думаете в чем причина
ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: Как включить ШИМ на тини 2313
Кнопка "спасибо" - это плюсик в рейтинге сообщений, вы его уже нажали. 
Fucking static initialization order fiasco
- Реклама
Re: Как включить ШИМ на тини 2313
понял
спасибо еще раз
думаю тема закрыта
спасибо еще раз
думаю тема закрыта
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: Как включить ШИМ на тини 2313
Всем доброго времени суток
Тема как я вижу имеет отношение к моему вопросу поэтому спрошу тут. Вопрос таков - а нормально ли что при установке например OCR0A = 0 на выходе все равно есть иголки? Возможно ли их как-то убрать? Таймер настроен так: TCCR0A = 0xA3;TCCR0B = 0x03;
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: Как включить ШИМ на тини 2313
По моему, Вы уже об этом спрашивали.
Нормально. Это документированная особенность. При установке максимального значения вывод переводится в устойчивое состояние 1-цы.
Нормально. Это документированная особенность. При установке максимального значения вывод переводится в устойчивое состояние 1-цы.
Fucking static initialization order fiasco
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
- Реклама
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: Как включить ШИМ на тини 2313
И еще такой вопрос, мне нужно 4 канала шима но жирновато использовать оба таймера для этого, поэтому единственное решение это как я понимаю программный шим на одном из таймеров. Я тут произвел некоторые расчеты и хотел бы узнать правильные ли они. Мне необходим шим с частотой в 120кГц, таймер0 8битный, мк на частоте 12 мГц, предделитель таймера - 8, значит начало отсчета для TCNT0 должно быть 243. И каждое прерывание по переполнению я сравниваю свое значение канала со своей переменной счетчика. Так?
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: Как включить ШИМ на тини 2313
Вы планируете использовать второй таймер в других целях? Если нет, то не вижу никаких проблем в использовании двух таймеров. К тому же, если Ваши 4 устройства будут работать синхронно - можно снимать сигнал управления с одной ножки.WishMasterMax писал(а):...жирновато использовать оба таймера
Можно использовать режим работы CTC (Сброс по совпадению). Частота прерываний, которую Вы рассчитали, будет 125 Гц. Для более точного получения частоты в 120 кГц устанавливайте предделитель таймера = 1 и значение в TCNT0 = 99. Режим CTC. будет Вам ровно 120 кГц.значит начало отсчета для TCNT0 должно быть 243. И каждое прерывание по переполнению я сравниваю свое значение канала со своей переменной счетчика.
Fucking static initialization order fiasco
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: Как включить ШИМ на тини 2313
Ну планировал второй таймер оставить на лучшие времена, вполне возможно что адц будет нужен.
Хм, значит все же ошибся) Я так понимаю что в этом режиме таймер будет тикать до совпадения со значением OCR0A? Нет, нагрузки разные, в данном случае это RGB лента + лампа, ну а в принципе ситуации разные могут быть
Хм, значит все же ошибся) Я так понимаю что в этом режиме таймер будет тикать до совпадения со значением OCR0A? Нет, нагрузки разные, в данном случае это RGB лента + лампа, ну а в принципе ситуации разные могут быть
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: Как включить ШИМ на тини 2313
Да. а потом сам сбросится на 0 и сгенерирует прерывание.Я так понимаю что в этом режиме таймер будет тикать до совпадения со значением OCR0A?
Fucking static initialization order fiasco
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: Как включить ШИМ на тини 2313
Отлично
Спасибо огромное за советы
Я что-то этот режим ранее стороной обходил 
Но 99 заносить же в OCR0A?
Но 99 заносить же в OCR0A?
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: Как включить ШИМ на тини 2313
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Доброго времени суток
Помогите пожалуйста с проблемой)
Написал следующий код:
В протеусе отрабатывает адекватно, на железке дилей выглядит не на 20 а на все 1000-2000.
Фьюзы выглядят так:
Написал следующий код:
Спойлер
Код: Выделить всё
/*
* 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);
}
}Фьюзы выглядят так:
Спойлер
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
фьюз CKDIV сбросьте (установите галочку). Он делит частоту на 8
Fucking static initialization order fiasco
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
А разве 0 не означает что он включен? И при включении начинается моргание шима программного)
Последний раз редактировалось WishMasterMax Пн июл 21, 2014 18:16:18, всего редактировалось 1 раз.
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Означает. Вам надо выключить. либо в заголовочнике меняйте частоту на 1000000
Fucking static initialization order fiasco
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Так он отключен, я переносил фьюзы с тиньки, после прочтения скопировал и убрал галку, затем записал их
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Так поставьте галку!
Стоять!!!


Вам надо в CKSEL3, CKSEL1, CKSEL0 галки убрать, а в CKSEL2 поставить.
Сам запутался!
У Atmel так, у CodeVision наоборот! ))
У Вас в свойствах проекта какая частота стоит?
Стоять!!!
Вам надо в CKSEL3, CKSEL1, CKSEL0 галки убрать, а в CKSEL2 поставить.
У Вас в свойствах проекта какая частота стоит?
Последний раз редактировалось Pink-Pank Пн июл 21, 2014 18:28:25, всего редактировалось 7 раз.
Fucking static initialization order fiasco
- WishMasterMax
- Потрогал лапой паяльник
- Сообщения: 389
- Зарегистрирован: Пн июл 09, 2012 11:07:59
- Откуда: Ukraine
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Почему наоборот, все так же) Я бы другой утилитой шил но протосс 910 не со многим работает
А в студии нет частоты в проекте
А в студии нет частоты в проекте
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Есть в студии частота.
По крайней мере, в 5 и 6 версиях
Fucking static initialization order fiasco




