ATtiny13A 101 применение

nik071
Offline
Зарегистрирован: 03.07.2013

здравствуйте ! видео конечно смотрел раз 5 при компелирование ошибки строк 7 что то про java...... и последний строка просто ....7

сейчас еще раз попробую се снова скачаю процесинг с оф сайта и Arduino 1.5.6-r2 ( Примечания к выпуску ): c Установщик Windows      

 у меня 7 винда

и архив с первой странице   UPD 08.03.2014 новая версия ядра "Version 0.18.5"(у меня на хостинге чуть доработанное).

ардуино 1,5,6 распаковал в диск с папка программ фаил

в архиве нету файла boards.txt я сам его создал а во внутри положил 

###########################################################################
attiny13int.name=Attiny13 @ 128 KHz (internal watchdog oscillator)
attiny13int.upload.using=arduino:arduinoisp
attiny13int.upload.maximum_size=1024
attiny13int.upload.speed=250 # important for not losing connection to a slow processor
attiny13int.bootloader.low_fuses=0x7B#### делитель на 8 отключен [CKDIV8=1]Частота RC - 128 kHz
attiny13int.bootloader.high_fuses=0xFF
attiny13int.bootloader.unlock_bits=0x3F#### - это еще нахрена?
attiny13int.bootloader.lock_bits=0x3F##### - аналогично?
attiny13int.build.mcu=attiny13
attiny13int.build.f_cpu=128000######- частота честная
attiny13int.build.core=core13

###############################################################

attiny13at4.name=ATtiny13 @ 4.8MHz (internal 4.8 MHz clock)
attiny13at4.upload.using=arduino:arduinoisp
attiny13at4.bootloader.low_fuses=0x69 ######- тут делитель на 8 включен [CKDIV8=0]Частота RC - 4,8 MHz
attiny13at4.bootloader.high_fuses=0xff
attiny13at4.upload.maximum_size=1024
attiny13at4.build.mcu=attiny13
attiny13at4.build.f_cpu=600000##### - частота установлена правильно (поскольку включен делитель)
attiny13at4.build.core=core13
###############################################################

attiny13.name=ATtiny13 @ 9.6MHz (internal 9.6 MHz clock)
attiny13.upload.using=arduino:arduinoisp
attiny13.bootloader.low_fuses=0x7a##### - отключен делитель на 8 ([CKDIV8=1]). Дефолт - 0x6a
attiny13.bootloader.high_fuses=0xff
attiny13.upload.maximum_size=1024
attiny13.build.mcu=attiny13
attiny13.build.f_cpu=1200000 ######- при этом частота МК таки делится на 8 !!!
attiny13.build.core=core13

###############################################################

при первом запуске поивилась папка arduino в моих документах зашол туда создал папку hardware создал папку attini13 положил туда сделанный файл boards.txt создал папку cores и распаковал в нее 14 файлов из архива перезапустил ардуино ничего не получилось в списку тини нет посмотрел видео еще раз ничего не получилась   вылжите полный архив с папкой cores13 и файлом bords.txt     ====================вот засада========================

 

nik071
Offline
Зарегистрирован: 03.07.2013

====================ВСЕРАВНО НЕ БРОШУ!!!! ATTINY13================

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Обратили внимание какая у меня версия Arduino IDE? 

nik071
Offline
Зарегистрирован: 03.07.2013

Я тоже обэтом подумал где взять старую?????

nik071
Offline
Зарегистрирован: 03.07.2013

И архив целиковый  ????

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Среда http://arduino.googlecode.com/files/arduino-1.0.5-r2-windows.zip

Специально скачал и запустил, тини13 в списке есть:

Ядро http://hwman.ho.ua/files/ATtiny13A101/attiny13.zip

nik071
Offline
Зарегистрирован: 03.07.2013

Пошол включать комп

nik071
Offline
Зарегистрирован: 03.07.2013

Я ТЕБЯ ОБАЖАЮ только пару галок подправил!!!!!!супер

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Каких галок? Может что-то допишу в статью.

nik071
Offline
Зарегистрирован: 03.07.2013

В настройках как на рисунке раширеный вид при компеляции и автомотически ассоцеировать все работает на раз главное теперь ресет не трогает нога 1 в скече пин 5

nik071
Offline
Зарегистрирован: 03.07.2013

Ещё раз СПАСИБО

DimaP.
Offline
Зарегистрирован: 21.04.2013

Привет всем.  решил я зделать компактную плату Димера на симисторе, вот по этой схеме

в качестве микроконтроллера решил применить Attiny 13, так как он маленький и дешовый. Так вот нашел практически готовый код написанный Максимом. о конечно для другого микроконтроллера бы создан но все же



#define ControlSimistor 9 //выход на симистор
#define ControlZero 2 //вход контроля перехода через 0
#define steps 5 // количество шагов в 100%, разрядность, ступенчатость
volatile byte Power = 40; //начальное значение мощности в % (можно не задавать)

void setup()
{
  pinMode(ControlSimistor, OUTPUT);
  digitalWrite(ControlZero, 1);
  attachInterrupt(0, zero, FALLING); //внешнее прерывание контроля перехода через ноль
}

void zero() //если словили переход через 0
{
  static int count; 
  if(count < Power/(100/steps)) 
    digitalWrite(ControlSimistor, 1);
  else
    digitalWrite(ControlSimistor, 0);

  count++;
  if(count == steps) count = 0;
}

void loop()
{
  //здесь меняем Power согласно каким то установкам и выполняем другие задачи
}

при компиляции выдает размер 1 220 байт, но естественно в тиню он не помещается, при том что в LOOp  написал обработку сигнала от переменного ризистора.

Подскажите как выйти из сложившейся ситуации? Присматриватся к другому МК??

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Присмотритесь... Ещё что-нибудь туда допишите

По моим сведениям ATTINY13A-SU  стоит 0.63 Евро, а ATTINY45-20SU  1.011 Евро ( если брать 1 штуку)

http://www.tme.eu/ru/katalog/?idp=1&search=attiny&cleanParameters=1#sear...

DimaP.
Offline
Зарегистрирован: 21.04.2013

Да наверное целесообразнее заказать ТИНИ 45, 4 кб памяти для димера, даже используя Arduinoвские функции управления портами должно хватить!

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Если использовать С-шние функции то и тини13 должно хватит.

По идее С-шная функция буде выглядеть вот так:

#include <avr/io.h> // чисто для приличия
#include <avr/interrupt.h> // нужна
/////////////////////////////////////////////////////
#define ControlSimistor 9 //выход на симистор
#define ControlZero 2 //вход контроля перехода через 0
#define steps 5 // количество шагов в 100%, разрядность, ступенчатость
volatile byte Power = 40; //начальное значение мощности в % (можно не задавать)

ISR(PCINT0_vect) // прерывание по вектору PCINT0(ножка РВ0), тоесть по изменению состояния вывода
{
  zero(); // что-то делаем когда меняется состояние порта 
}

void InitINT0() // Инициализация прерываний
{
  MCUCR =_BV(ISC01) | _BV(ISC00);
  GIMSK = _BV(INT0);
  sei();
}

void setup() { 
  InitINT0(); // нужно
  pinMode(ControlSimistor, OUTPUT);
  digitalWrite(ControlZero, 1);
  //attachInterrupt(0, zero, FALLING); // вы есть много кушать! 
  //внешнее прерывание контроля перехода через ноль

}

void zero() //если словили переход через 0
{
  static int count; 
  if(count < Power/(100/steps)) 
    digitalWrite(ControlSimistor, 1);
  else
    digitalWrite(ControlSimistor, 0);

  count++;
  if(count == steps) count = 0;

}
void loop()
{
  //здесь меняем Power согласно каким то установкам и выполняем другие задачи
}

 

"Размер скетча в двоичном коде: 512 байт (из 1 024 байт максимум)" - прочтите второе сообщение темы и может сэкономите ещё сотню другую байт.
 
С Вас код и схема :)
HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

/*Да наверное целесообразнее заказать ТИНИ 45, 4 кб памяти для димера, даже используя Arduinoвские функции управления портами должно хватить!*/

Незнаю как там у Вас, у меня в инет магазинах ТИНИ 45 по цене как АТмега 8.

DimaP.
Offline
Зарегистрирован: 21.04.2013

HWman пишет:

Если использовать С-шние функции то и тини13 должно хватит.

По идее С-шная функция буде выглядеть вот так:





#include <avr/io.h> // чисто для приличия
#include <avr/interrupt.h> // нужна
/////////////////////////////////////////////////////
#define ControlSimistor 9 //выход на симистор
#define ControlZero 2 //вход контроля перехода через 0
#define steps 5 // количество шагов в 100%, разрядность, ступенчатость
volatile byte Power = 40; //начальное значение мощности в % (можно не задавать)

ISR(PCINT0_vect) // прерывание по вектору PCINT0(ножка РВ0), тоесть по изменению состояния вывода
{
  zero(); // что-то делаем когда меняется состояние порта 
}

void InitINT0() // Инициализация прерываний
{
  MCUCR =_BV(ISC01) | _BV(ISC00);
  GIMSK = _BV(INT0);
  sei();
}

void setup() { 
  InitINT0(); // нужно
  pinMode(ControlSimistor, OUTPUT);
  digitalWrite(ControlZero, 1);
  //attachInterrupt(0, zero, FALLING); // вы есть много кушать! 
  //внешнее прерывание контроля перехода через ноль

}

void zero() //если словили переход через 0
{
  static int count; 
  if(count < Power/(100/steps)) 
    digitalWrite(ControlSimistor, 1);
  else
    digitalWrite(ControlSimistor, 0);

  count++;
  if(count == steps) count = 0;

}
void loop()
{
  //здесь меняем Power согласно каким то установкам и выполняем другие задачи
}

 

"Размер скетча в двоичном коде: 512 байт (из 1 024 байт максимум)" - прочтите второе сообщение темы и может сэкономите ещё сотню другую байт.
 
С Вас код и схема :)

Да обязательно выложу! схема достаточно простая!!

А вот применение сишных функций возможно пожет! вот только придется подумать хорошенько, особенно С заменой digitalWrite? пока сложновато для меня)

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013
digitalWrite(2, HIGH); пишется на С:  PORTB |= (1<<2); // устанавливаем лог. 1 (высокий уровень) на выводе PB2            
digitalWrite(2, LOW); пишется на С: PORTB &= ~(1<<2); // устанавливаем лог.  0 (низкий уровень) на выводе PB2
pinMode(2, OUTPUT); пишется на С:  DDRB |= (1<<2);     // устанавливаем вывод PB2 как выход 
pinMode(2, INPUT); пишется на С: DDRB &= ~(1<<2);  // устанавливаем вывод PB2 как вход

Двойка в конце - номер порта.

 

DimaP.
Offline
Зарегистрирован: 21.04.2013

О спасибо огромно сохраню себе, оч полезная инфа!

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Как я уже говорил, всё это есть во втором посте.

DimaP.
Offline
Зарегистрирован: 21.04.2013

вот набросал примерную схему устройства

жду критику

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Сигнал с первой  ножки  ( RESET )  никак на вторую или седьмую или шестую не перебросить?

Хотите лишиться втрой попытки программирования? 

DimaP.
Offline
Зарегистрирован: 21.04.2013

Да точно, хорошее замечание сейчас поправлю!

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Стабилитрон VD1 выкиньте, потенциометр R4 подключается Х2 к +5В, Х1 к минусу(GND), средняя точка(где стрелочка) идёт к пину А2(ADC2),R3 выкиньте, Vcc к +5В.

РВ5 просто так использовать не получиться, лучше не трогайте этот пин, возьмите РВ1 к примеру под управление MOC3021.

Могу поспорить что АЦП будет довольно таки неплохо шуметь, для уменьшения шумов емкость С2 увеличьте хотя бы до 470 мкФ.

DimaP.
Offline
Зарегистрирован: 21.04.2013

вот несколько подправил схему согласно замечаний

на счет АЦП подумал что 10 битного разрешения здесь и ненужно будет, оставлю 8 бит, плюс усреднение значений думаю для моих целей вполне пойдет

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

/*...на счет АЦП подумал что 10 битного разрешения здесь и ненужно будет, оставлю 8 бит, плюс усреднение значений думаю для моих целей вполне пойдет*/

Главное чтобы места хватило, если делать всё правильно то думаю хватит.

DimaP.
Offline
Зарегистрирован: 21.04.2013

Вопрос на счет АЦП, а вот этого самого разрешения в 10 бит мы получаем относительно какого напряжения??

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Vcc(+5 В).

DimaP.
Offline
Зарегистрирован: 21.04.2013

Все понятно, спасибо)

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

В Вашем случае +5В, по сути аналогрид - измерение относительно напряжения питания, будь то 3.7 В или 2.6 В или 5.7 В.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Для чего будет использоватся данный диммер ? Для управления лампочкой он не подойдет - она будет сильно мигать судя по алгоритму скетча..

 

DimaP.
Offline
Зарегистрирован: 21.04.2013

MaksMS пишет:

Для чего будет использоватся данный диммер ? Для управления лампочкой он не подойдет - она будет сильно мигать судя по алгоритму скетча..

 

Да по поводу алгоритма я уже догадался, что пропуск полупериодов  не подйдет для изменения яркости свечения лампы накаливания, если я правильно прочитал найденую информацию на просторах интернета, нужен так называемый фазовый метод управления симистором? 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Да ,там надо управлять временем полупериуда,  сейчас как раз пишу прошивку под диммер на радиомодуле+м/к nRF24LE1. Но там немного другой микроконтроллер: более бедные настройки таймеров ,которые как раз тут необходимы.

Unreturned
Offline
Зарегистрирован: 04.05.2013

разобрался. аппаратный шим на 5 ноге с частотой 17кГц и программный шим ~1Гц на 6 и 7 ноге. показания с потенциометра снимаются на 2 ноге.









int s,b,a=0;
byte pwm;
void setup() {
  PORTB=0x00;  //записать в весь порт В 0
  DDRB=0b00111;   //настроить порт В PB4 вход, PB3 вход, PB2 выход, PB1 выход, PB0 выход
  //Настройка аппаратного ШИМ 
  TCCR0A=0xC1; // настраиваем аппартанный шим на PB0 с частотой 17кГц(аппаратный шим только на PB0 и PB1) 0x83-37,5кГц
  TCCR0B=0x01; //делитель
  OCR0A=0x00;  //обнуляем пин
}

void loop() {
  a = analogRead(3);  //показания потенциометра
  pwm = (a-0)*(0-255)/(1023-0)+255;  //инвертируем для аппаратного шима, формула из функции map()
  b = (a-0)*(0-1000)/(1023-0)+1000;  
  s = 1000-b;

static unsigned long prevTime1=0;
static unsigned long prevTime2=0;

if(millis()-prevTime1>1000){    //каждую секунду подаём на ноги единицу
prevTime1=millis();
    PORTB |= (1<<2)|(1<<1); 
prevTime2=millis();                
}

if(millis()-prevTime2>s){  //в завиимоти от положения движка потенциометра обнулям ноги
    PORTB &=~ ((1<<2)|(1<<1));
prevTime2=millis();                
}


  OCR0A=pwm;   //аппаратный шим
}

 

наткнулся ещё на одну беду - неработает map() на тиньке13, вообще. формуллу подпихиваю - на выходе рандомные числа. мало оперативы?

Илья73
Offline
Зарегистрирован: 06.09.2013

Что то не подключается опорное. Подскажите пожалуйста что не так делаю.

#define ADC_VREF_TYPE 0x40
int x =0;
void setup() 
{ 
  pinMode(PB0,1);
  pinMode(PB1,1);
}
void loop() 
{ 
  x= analogRead(A1);
  if(x>=500)
  {
    digitalWrite(PB1, 0); 
    digitalWrite(PB0, 0);
  }
   if(x<499) 
  {
    digitalWrite(PB1,1);   
    digitalWrite(PB0, 1);
  }
}

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Юзайте analogReference(INTERNAL) - 1.1В / analogReference(EXTERNAL) - напряжение питания.

Аналог на Си analogReference(INTERNAL) - ADMUX |= _BV(REFS0); и analogReference(EXTERNAL) - ADMUX &= ~_BV(REFS0);

Кстати, у меня на тини13 при использовании ИОНа шумы АЦП были побольше чем простое измерение относительно напряжения питания.

Илья73
Offline
Зарегистрирован: 06.09.2013

Оказывается все так просто! Спасибо, получилось!

Про шумы пока ни чего сказать не могу.

Можно еще в первом посте дописать что поддерживает analogReference.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Нет, первый править нельзя.

DimaP.
Offline
Зарегистрирован: 21.04.2013

Сегодня написал код димера, его еще не проверял, так что выкладываю на обсуждение, надеюсь на помощь и подсказки))





#include <avr/io.h> // чисто для приличия
#include <avr/interrupt.h> // нужна
/////////////////////////////////////////////////////
volatile boolean time_flag = false; //начальное значение мощности в % (можно не задавать)
#define INTERVAL 40UL 
byte counter = 0;
byte light_time = 0;
byte ADC_rezylt=0; 
void InitINT0() // Инициализация прерываний
{
  MCUCR =_BV(ISC01) | _BV(ISC00);
  GIMSK = _BV(INT0);
  sei();
}
 
void setup() { 
  InitINT0(); // нужно
  DDRB |=(1<<3);//pb3 установить как выход
  PORTB |=(1<<3);//включаем симистор
  ADMUX |=(1<<ADLAR);//читаем только ADCH ! 8 бит разрешение
}
 
ISR(PCINT0_vect) // прерывание по вектору PCINT0(ножка РВ0), тоесть по изменению состояния вывода
{
 PORTB &=~(1<<3);//вsключаем симистор 
 time_flag = true;
}
void loop()
{
  if(time_flag == true)
  {
    static unsigned long prevMicros = 0;
    if(micros()- prevMicros > INTERVAL)
    {
      prevMicros = micros();
      counter++;
    }
  }
  else{counter=0;}
  if(counter == light_time)
  {
    PORTB |=(1<<3);//включаем симистор
    counter=0;
    time_flag = false;
  }
  ADC_rezylt = Read_ADC(2);//читаем pb4
  light_time = map(ADC_rezylt, 0 , 255, 0, 250); // изменение напряжения
                                                // вызовет изменение переменной light_time
                                                //от 0 до 250, что в свою очередь заст задержку от 0 до 
                                                //10 мсек, т.е половины полупериода сиусоиды
}


  byte Read_ADC(byte channel){  
  ADMUX = channel; // ADC pin
  ADCSRA |= 1<<ADEN;
  ADCSRA |= 1<<ADSC;
  while(!(ADCSRA & (1<<ADIF)));
  ADCSRA |= 1<<ADIF;
  ADCSRA &= ~(1 << ADEN);  // отключаем АЦП, для уменьшения энергопотребления
  return ADCH;
}

 

 



Размер скетча в двоичном коде: 816 байт (из 1 024 байт максимум)

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Тип даных byte может хранить значение от 0 до 255, советую заглянуть сюда (подскажу - 54 строчка).

Не используйте функцию map(); она "эсть много кушат", для тини13 негодиться.

Считать когда фаза будет переходить через ноль не лучшая идея, частота не всегда ровно 50 герц

DimaP.
Offline
Зарегистрирован: 21.04.2013

HWman пишет:

Тип даных byte может хранить значение от 0 до 255, советую заглянуть сюда (подскажу - 54 строчка).

Не используйте функцию map(); она "эсть много кушат", для тини13 негодиться.

Считать когда фаза будет переходить через ноль не лучшая идея, частота не всегда ровно 50 герц

Но я же читаю только ADCH, а он у меня будет хранить значения 8 битного разрешения, я же в setup установил ADLAR в 1.

А на счет map она не подходит потому что жрет много оперативы???

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

А ну да, недосмотрел. Кстати, если инкрементировать переменную типа byte значение которой 255 она обнулиться, ну это так, может кто-то не знает.

Функция map(); кушает много места под код, две три таких функции и у Вас практически не останется места. Почему? сами посмотрите:

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Насколько я помню при компилировании постоянных значений компилятор использует тот тип данных который влазит текущее число -так что нормально тут эта функция работает и не жрет многа ресурсов. Накройняк можно свою функцию сделать с типом byte  - скорее всего будет точно столько же занято байт..

Unreturned
Offline
Зарегистрирован: 04.05.2013

подправил пост #334, unsigned long как в примере с BlinkWithoutDelay не работает, заработало с static unsigned long 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013
Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

у тебя prevTime1 обнуляется чаще, чем успевает натикать 1000 мс. Вынеси инициализацию из loop

DimaP.
Offline
Зарегистрирован: 21.04.2013

вот поправил немного код, избавился от функции map, по сути в моем коде она все же была излишнее нагромождние, осталось собрать макет и проверить) 

переработанный код

#include <avr/io.h> // чисто для приличия
#include <avr/interrupt.h> // биба для настройки прерываний
/////////////////////////////////////////////////////
volatile boolean ADC_stop = false;     //флаг остановки считывания АЦП при рыдержке времени
volatile boolean time_flag = false;    //флаг разрешения задержки на включение симистора
#define INTERVAL 39UL                  //время равное 39 микросекундам участвует в конструкции TIME OUT
byte counter = 0;                      //счетчик для отчета времени
byte light_time = 0;                   //переменная непосредственногог управления выдержкой на включение симистора


 
void setup() { 
  InitINT0(); // нужно
  DDRB |=(1<<3);//PB3 установить как выход
  PORTB |=(1<<3);//включаем симистор
  ADMUX |=(1<<ADLAR);//читаем только ADCH ! 8 бит разрешение
}
void InitINT0() // Инициализация прерываний
{
  MCUCR =_BV(ISC01) | _BV(ISC00);
  GIMSK = _BV(INT0);
  sei();
} 
 
ISR(PCINT0_vect) // прерывание по вектору PCINT0(ножка РВ0), тоесть по изменению состояния вывода
{
 PORTB &=~(1<<3); //выключаем симистор 
 time_flag = true;//разрешаем отсчет времени на включение симистора 
 ADC_stop = true; // ставим запрет на считывание АЦП, это для того чтобы не менялось значение
                  // выдержки в процессе отсчета
}
void loop()
{
  if(time_flag)   //если переменная TRUE то запускаем конструкцию отсчета выдержки времени
  {               //тоесть выдержка начнется как только словим переход чез ноль
    static unsigned long prevMicros = 0;//устанавливаем переменную для хранения предыдущего значения micros()
    if(micros()- prevMicros > INTERVAL) //если натикало больще 39 микросекунд то 
    {
      prevMicros = micros(); // обновляем переменную
      counter++;             // увиличиваем значение счетчика на 1  
    }
  }
  else{counter = 0;}         // иначе если переменная time_flag == false сбрасываем значение счтчика
  if(counter == light_time)  // если счетчик досчитак до значения устаеовленного потенциометром
  {
    PORTB |=(1<<3);   //включаем симистор
    counter = 0;      // обнуляем счетчик
    time_flag = false;//устанавливаем флаги
    ADC_stop = false;
  }
  if(!ADC_stop)       // если разрешено считывание АЦП , то
  {
   light_time = Read_ADC(2); //читаем канал ADC2 и сохранияем значение в переменную light_time
  }                          // так как считываем значение чтолько из ADCH то значения будут от 0 до 255
}                            // что задаст в свою очередь выдержку на включение симистора от 0 до приблизительно 
                             //9000 микросекунд, а это примерно диапазон полупериода сусоиды на 50 Гц


  byte Read_ADC(byte channel){  
  ADMUX = channel; // ADC pin
  ADCSRA |= 1<<ADEN;
  ADCSRA |= 1<<ADSC;
  while(!(ADCSRA & (1<<ADIF)));
  ADCSRA |= 1<<ADIF;
  ADCSRA &= ~(1 << ADEN);  // отключаем АЦП, для уменьшения энергопотребления
  return ADCH;
} 

 

Размер скетча в двоичном коде: 468 байт (из 1 024 байт максимум)

DimaP.
Offline
Зарегистрирован: 21.04.2013

Ну подскажите еще вот такую вещь, как тиньку 13 прошить USBasp ом, не могу в архиве найти бутлодер, там есть все микроконтроллеры кроме тини 13 или же можно применить от 26 тини??

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

http://razniepodelki.blogspot.com/2014/05/attiny13-arduino.html только в Вашем случае тип программатора не Arduino as ISP а USBasp.
Но это всего лишь предположение, могу ошибаться.

DimaP.
Offline
Зарегистрирован: 21.04.2013

Пытаюсь прошить тиньку выдает вот это 

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13