1. нет прескелера, частота таймера равна частоте процессора;
2. режим 3, фаст ШИМ, счет от 0 до 255;
3. разрешить прерывание переполнения
4. 0 - в счетчик таймера
--------------------------
В setup() ты можешь написать все, что тебе угодно, оно перекроет эту инициализацию.
Чтобы указать тебе "волшебные строчки" вместо 1,2,3, нужно знать:
1. на какой частоте ты запускаешь камень?
2. будешь ли ты в программе пользоваться миллис и микрос. Если будешь - все сильно сложнее, тебе - явно не под силу, а я не стану делать это бесплатно.
-------------------------------------------
Вот пример для 9600КГц, миллис, микрос - недоступны.
Ещё вопрос. Если я настроил таймеры, прерывания, векторы... А потом в коде поставлю "millis", что произойдет?
Команда "millis" просто не сработает или перепашет все мои настройки?
Убивать нужно за такие вопросы. Я уже об этом писал где-то.
Ничего не произойдет. Миллис вернет всякую ерунду. В нашем случае - просто ноль.
откройте ../hardware/attiny13/avr/cores или каким ядром для тиньки пользуетесь и смотрите, что там написано. Ей б..гу не трудно прочитать пару строк кода. Все о чем писал я и спрашивали вы написано в файле wiring.c.
#include "wiring_private.h"
#include <avr/interrupt.h>
volatile unsigned long ovrf=0;
ISR(TIM0_OVF_vect){
ovrf++; //Increment counter every 256 clock cycles
}
Там В ПЕРВЫХ СТРОЧКАХ уже определен вектор прерывания.
1.В тиньке 13 он назывется TIM0. Так сложилось.
2. компилятор ругнется на переопределение вектора, если назовете правильно.
3. Если вам для чего-то нужен таймер0, то закоментируйте в wiring.c этот обработчик. Можете написать свой и переписать микрос и миллис. Это примитивно.
Не надо ничего комментировать. После установки чипа в систему в папке с файлами пакета появляются насколько папок с разными ядрами, в которых уже всё что надо закоментировано. Достаточно в папку CORE скопировать содержимое CORENOMILLIS.
В продолжение темы работы ядра "операционной системы" на микроконтроллере. Когда увожу микроконтроллер в режим сна "Idle", он просыпается каждые 8 мс, это работа системного таймера 0? Вероятно при переполнении выполняется прерывание, примерно соответствует
256 * 256 / 8000000МГц - 8 мс
Получается встроенная система пробуждения. В моем случае вполне удобно. Если будет надо чаще, есть еще таймеры. А реже не получится, да и не нужно, микроконтроллер просыпается, смотрит на время и спит дальше, потребление почти не возрастает.
Да весь форум помогает, постоянно в поиске показывает множество полезных решений.
void sleper(unsigned long timeout)
{
//int timer0_millis;
unsigned long time_sleeper;
unsigned long cc=0;
byte oldADC=ADCSRA; //сохраняем настройки АЦП, не обязательно и результат не однозначный
//noInterrupts (); // timed sequence follows
//interrupts (); // guarantees next instruction executed
set_sleep_mode(SLEEP_MODE_IDLE); // выбор режима
//set_sleep_mode(SLEEP_MODE_STANDBY); // выбор режима, просыпаться можно по WDT или внешнему сигналу
sleep_enable();
// ADC initialization
// ADC disabled
//ADCSRA=0;
//Serial.print(ADCSRA);
//Serial.flush();
ADCSRA=ADCSRA&B01111111; // очень странная работа, выключается не всегда, лучше отключить 1 раз при инициализации или не отключать если нужен АПЦ
//power_adc_disable(); // ADC converter помоему команда ничего не делает, снижение потребления не заметил
//power_spi_disable(); // SPI
//power_usart0_disable();// Serial (USART)
//power_timer0_disable();// Timer 0 если отключить таймер 0 не проснется уже, а так будет переполнение через 8 мс
power_timer1_disable();// Timer 1
power_timer2_disable();// Timer 2
power_twi_disable(); // TWI (I2C)
// delay(1); не нужно
//time_sleeper=millis()+timeout; // вариант для работы как с delay(timeout), но мне удобнее сразу указать время пробуждения
byte tb_old=0; // старшая часть millis(), нужно чтобы отследить переполнение через 50 дней работы.
while(timeout >= millis())
{
sleep_mode(); // уходим в спячку на 8 мс, в спячке может произойти переполнение и вечный сон, нужно учесть это
cc++; // счетчик засыпаний, просто для удобства
byte tb_new=millis() >> 24; // старший разряд времени, увеличивается каждые 4 часа, берем 1 байт старший для экономии памяти
if (tb_new<tb_old) timeout=1000; // произошло переполнение таймера (50 дней работы!) отменяем паузу, однократное досрочное пробуждение (поставил 1000 мс, можно 0 поставить)
tb_old==tb_new;
// ...тут можно сделать опрос входов и прочий анализ почти в реальном времени (каждые 8 мс)
}
// выходим из спящего режима
//s=s+" tb="+String(tb_old,HEX)+"; ";
power_adc_enable(); // ADC converter, тут не факт что корректно указал включение в комплекте с ADCSRA
//power_spi_enable(); // SPI
power_usart0_enable(); // Serial (USART)
//power_timer0_enable(); // Timer всегда включен и так
//power_timer1_enable(); // Timer 1
//power_timer2_enable(); // Timer 2
//power_twi_enable(); // TWI (I2C)
//Serial.print("c="); // сколько было циклов сна
//Serial.println(cc);
//Serial.flush();
//ADCSRA=oldADC;
ADCSRA=ADCSRA|B10000000; //enable
sleep_disable();
// wdt_reset();
}
Все что связано с ADCSRA, POWER_xxx можно убрать, их влияние на потребление невелико. ADCSRA=0 можно указать 1 раз в секции Setup, при частом переключении он ведет себя странно в плане потребления.
Есть еще вариант глубокого сна в режиме
set_sleep_mode(SLEEP_MODE_STANDBY);
Пробуждать можно по сигналу WDT для Atmega328, если WDT занят для защиты от зависания, или контроллер Atmega8, пробуждать можно про прерыванию на входе, которое формирует сам микроконтроллер через RC цепочку. Конденсатор 1 мкф, резистор 1 мегаом, дает время сна около 1 секунды. Потребление около 7 мкА. После пробуждения меняем на резисторе сигнал на обратный, с 1 на 0, засыпаем и снова микроконтролле некоторое время разряжается конденсатор и пробуждает его при переходе с 1 на 0, три строчки кода.
Здесь для примера PD1 вход на котором висит прерывание, PD2 выход.
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/power.h>
/*
5 режимов энергосбережения:
SLEEP_MODE_IDLE
SLEEP_MODE_ADC
SLEEP_MODE_PWR_SAVE
SLEEP_MODE_STANDBY
SLEEP_MODE_PWR_DOWN
*/
int cc=0;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
byte i;
for(i=0; i<20 ; i++)
{
pinMode(i, OUTPUT); // для снижения потребления все ноги отключаем, дает несколько микроампер экономии
digitalWrite(i, LOW);
}
//pinMode(interruptPin, INPUT_PULLUP);
//attachInterrupt(digitalPinToInterrupt(interruptPin), blink, RISING);
Serial.begin(19200);
Serial.println("start");
Serial.flush(); // а то может не успеть передать, в спящем режиме передача останавливается
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // выбор режима
pinMode(2, INPUT); // RC висит тут
digitalWrite(2, LOW);
attachInterrupt(digitalPinToInterrupt(2), blink, CHANGE );
wdt_enable(WDTO_8S); // на всякий случай, если генерация сорвется
//WDTO_15MS // 15 мс
//WDTO_30MS // 30 мс
//WDTO_60MS // 60 мс
//WDTO_120MS // 120 мс
//WDTO_250MS // 250 мс
//WDTO_500MS // 500 мс
//WDTO_1S // 1 сек
//WDTO_2S // 2 сек
//WDTO_4S // 4 сек
//WDTO_8S // 8 сек
wdt_reset();
pinMode(8, OUTPUT);
blink();
}
void loop() {
//digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
//sleep_mode();
//digitalWrite(LED_BUILTIN, LOW); // turn the LED on (HIGH is the voltage level)
//noInterrupts ();
//byte adcsra_save = ADCSRA;
//ADCSRA = 0; // запрещаем работу АЦП
power_all_disable (); // выключаем все модули
//set_sleep_mode (SLEEP_MODE_PWR_DOWN); // устанавливаем режим сна
//sleep_enable();
//interrupts ();
// sleep_cpu (); // переходим в сон и ожидаем прерывание
sleep_mode();
//ADCSRA = adcsra_save; // восстанавливаем как было
power_all_enable (); // включаем все модули
// sleep_mode();
wdt_reset();
cc++; // счетчик циклов сна, привязка к реальному времени, так как таймер отключен, период сна можно предварительно измерить по длительности далее меняться не будет
if (cc>=25) {
Serial.print(";");
Serial.print(analogRead(0));
Serial.flush();
cc=0;
}
}
void blink()
{
boolean in_my=digitalRead(2);
digitalWrite(8, !in_my); // на выход отправили обратное тому, что на входе
digitalWrite(LED_BUILTIN, !in_my); // просто индикация работы
//delay(1);
//Serial.print(in_my);
//Serial.flush();
}
ISR (WDT_vect) // пробуждение можно сделать по WDT таймеру, если он свободен
{
}
Ну понятно что в плате Arduino спящие режимы бесполезны. Тестировать надо на макетной плате, проще всего при работе от внутренного RC генератора на 8 МГц и с делением частоты до 1 МГц фьюзом. И напряжением питания около 3В, при 5В потребляет очень много.
Зачем это всё нужно. При питании от батарейки типа CR2032 микроконтроллер просыпается периодически, делает измерения и по радиоканалу отправляет данные. Фото не мое, но похоже:
Одна из проблем здесь АЦП, оно потребляет около 0.3 мА и его нужно отключать после завершения измерений. Все работает, но это усложняет код и АЦП иногда странно себя ведет, вроде и отключен, а потребление не снижается некоторое время. Или это осбенность микроконтроллера (типа конфигурируем АЦП 1 раз и не дергаем далее), или Arduino компилятор добавляет что-то от себя в код для управления АЦП.
У Вас красиво и интересно снеято видео - это здорово, но Вы забыли показать ваше оборудование.
Вы контроллер ATTINY13A - програмируете, а чем, каким устройством и какими програмтроами, Китайскими? Разясните пожалуйста - внесите ясность для тех кто хочет но не знает какое должно быть оборудование. У Китайцев ведь есть платы в которую можно установить контроллер, что бы потом (его) прошить и не использовать макетную плату и без неё программировать? Для тех кто начинает - это (согласитесь) очень важно!
Если без макетной платы не обойтись (понимаю, что просто нет такой платы у Китайцев что бы подошла под данный контроллер), то значит есть и в её покупке нужда, что бы собрать полностью программатор. Ниже я пишу что вам понятно - прошу вас: объясните (подскажите) мне что нужно и что нет...
Я не разу не прошивал контроллеры, но мне нужно запрограммировать контроллер
ATTINY13A-PU DIP-8 и есть желание и возможность этим заняться.
Смотрел ролики, объясняют так (конечно) хорошо, но не достаточно для того что бы все было разложено по полочкам от самого начала для полного понимания какое должно быть оборудование.
Проблема возникла при покупке оборудования которым можно запрограммировать этот (
ATTINY13A-PU DIP-8) 8 ножковый контроллер. Нашел два устройства на Китайском сайте:
Прошу помощи, сообщите чем Вы програмируете - какими устройствами или объясните что из этих (приведенных выше) устройств понадобится и что еще нужно купить или собрать для варианта №1 (ссылки что я дал). По ссылке №2 - так же прошу подсказать что это за устройство - может быть оно будет полезно или вообще нет.
Китайцы молодцы что дают возможность у них купить, вот только стесняются писать как их устройства применять.
Одной группе китайцев дали топологию и перечень элементов: "Сделать 300 тыс. плат".
Другой группе китайцев предложили эти изготовленные платы: "Купи оптом партию плат за XXX юаней. Продашь в розницу дороже - вся прибыль твоя."
Как собрать или из каких деталей собрать программатор - на Алиэкспресс есть кучи вариантов, а вот что из сего купить стоит, что бы это стало программатором для прошивки ATTINY13A-PU ?
Serg-24, программатор можно сделать на коленке за 15 минут "из говна и палок", погуглите "программатор 5 проводков" , программатором может быть любая плата ардуино на мк мега 328 или мега 32U4 , программатор можно купить , -на том же Али в огромном ассортименте от 200р и выше. Тот, что у вас на первой картинке подойдёт, но может подадобится джампер JP3, который нужно будет припаять. На второй картинке не программатор, а отладочная плата для тини25-85.
Вот спасибо, кое что теперь понятно. Значит что бы не паять (ставить, перепаивать с места на место) перемычку JP3 или другую (мало ли что нужно будет программировать), то нужно приобрести другой программатор например (этот что-то нравится больше, по описанию что он вообще может и с какими виндами он работает): USB ISP USBasp USBisp Программист 51 ATMEL AVR поддержка Win 7 64 - в этой модиф икации (пологаю, так как корпус не является разборным) уже не нужно перекидывать джампера выбирая нужное значение и скорости прошивки, все уже предусмотрено и согласованно.
Остается вопрос - как теперь подключиться к МС которую нужно программировать. Можно:
Макетной платой - её нет и нет необходимости её покупать, значит нужна переходная плата, которая ставится к выводу этого программатора? Что здесь можете мне посоветовать для прошивки 8 ножкового контроллера ATTINY13A - для него в плате нужна панелька (в которую его вставлять для прошивки) на 8 ножек, если на этой плате будет и другая панелька (с большим количеством - для других мс) это думаю будет тоже хорошо. Так же, можно проводками (РИНы их вроде кличат) один конец с папой в выходящий шнур разема - а другой его конец (что уже с мамой) в нужную ножку. Способ с "перетыкиванием" пользуется спросом у многих (если нет макетной платы и лень купить и макетную плату и как мне нужно плату для вставки её в шлейф) кто прошивает разные контроллеры. ПОСОВЕТУЙТЕ - возможно я не прав в том что написал выше - подкорректируйте (поправьте меня) и напишите какую плату мне нужно купить для избежания обезьянничества с перетыкиванием проводков на контакты МС (контроллера) которые нужно программировать.
Serg-24, я вам все варианты (кроме дорогих) написал. Просто запаяйте этот джампер. Можно впаять намертво перемычку и всё -снимать её нет необходимости. Как подсоединить МК к программатору -сто тыщ вариантов. Если не нужно отлаживать, перепрошивая множество раз -то просто припаяться к МК проводками. Что вы вобще хотите прошить? Тини13 -старое говно из эпохи динозавров.
Да, и тот программатор в корпусе на последнем скрине - не совместим с USBAsp, о чём красноречиво говорит надпись USB ISP
Этому контроллеру можно задать питание низкое 1,2 - 1,6 вольт, если поставить конденсатор на 22 мкФ или более. Так как устройство автономное - то пока только есть вариант на ATTINY13A-PU DIP-8 с питанием от пальчиковой батарейки (LR 6, AA size). Есть альтернативные варианты контроллеров с низким питанием на 1,2 вольта? Подскажите о них.
На одном форуме - выставили схемку на этом контроллере - питание подняли танталовым конденсатором на 22 мкФ до 1,8 вольта и схема заработала. Питание шагового двигателя (движок часов). Можно поставить и большего номинала емкость - будет выше напряжение, что обеспечит нужное питание МС. Не знаю других контроллеров (не встречал пока) которые могут работать от питания 1,2 - 1,5 вольта. Если что известно = сообщите пожалуйста.
USB-Asp - лучше брать те, что без корпуса. В них реально последняя прошивка от оригинального.
Прошивать тиньку можно чем угодно, но лучше ардуинкой, я нанку использую.
Макетка "втыкалка", она же "барборда", совершенно необходимая вещь. Любую, только не огрызок, нормальной длины.
С ней будет много проще все. Даже провода -соединители не обязательно покупать - можно от витой пары нарезать и облудить.
Например в програматоре, на ваший фотках, разъем не такой, как нужно для ардуиновских плат или для макетки с панелькой. Поэтому проще всего коммутировать через барборду. Любую мелочь проверить на практике - барборда быстрее, чем пайка.
На одном форуме - выставили схемку на этом контроллере - питание подняли танталовым конденсатором на 22 мкФ до 1,8 вольта и схема заработала.
Главное, конденсатор - танталовый! Это вам не керамика сраная! ;) ;) ;), Военные модели поднимают до 220 Вольт 50Гц! Но их достать трудно ...со старых, еще советских, военных складов только. :(
1.Гы! После того, как на схема По Вашей ссылке написано +1.5В и -1.5В, дальше можно не читать. Только "изпоцтола" вылезти надо.
2. Какая, к Б..гу, ссылка? ArduinoISP - скетч, в стандартных примерах Ардуино IDE. Про него и подключение в начале той темы, в которой Вы пишите.
3. Если еще раз повторите херню, про поднятие напряжения конденсаторами - отправитесь нахер, учить физику по школьным учебникам.
1) Автор в схеме указал куда подключать питание от батарейки, к каким контактам - об этом написано наже.
2) Спасибо, еще раз просмотрю тему.
3) В далекие 90-е я, как и многие другие радиолюбители собирали УНЧ, такие как Сухова (например, крутой УНЧ с кг = 0,006), собирали и БП (Блоки Питания) в которые ставили емкости приличных значений, от 2000 до 4000 микофорад. Таким образом и поднимали напряжение питания НУЧ. Вы находите странным, что из 40 вольт постоянного напряжения, можно емкостями вытянуть напряжение 45-50 вольт? Кто радиолюбитель - тот знает, обьяснять и тратить время на обучение не собираюсь - это знают все кто брал в руки паяльник и собирал схемы, в данном случае БП (Блоки Питания).
Вы находите странным, что из 40 вольт постоянного напряжения, можно емкостями вытянуть напряжение 45-50 вольт?
Хотел нахер послать, но подумал, что таких жалеть нужно.
Просто интересно, ты родился дебилом, или таблетки какие-то пил? Может диета специальная?
Раз уж клоуном заделался - нарисуй схему, чтобы из 40В постоянки, только на конденсаторах, пусть еще резисторы будут ;), поднять напряжение до 45В. Тебя не вылечить, так хоть народ поржет.
что из 40 вольт постоянного напряжения, можно емкостями вытянуть напряжение 45-50 вольт?
Из 40 вольт пульсирующего. Не стадись уже, если вы что-то и знали, то всё позабыли уже. Постоянное напрядение невозможно увеличить не преобразовав его сперва в переменное или импульсное.
что из 40 вольт постоянного напряжения, можно емкостями вытянуть напряжение 45-50 вольт?
Из 40 вольт пульсирующего. Не стадись уже, если вы что-то и знали, то всё позабыли уже. Постоянное напрядение невозможно увеличить не преобразовав его сперва в переменное или импульсное.
Дима! Конечно всем ясно, что изначально имелось ввиду. Но автор столь безапелляционен, что не поглумиться нельзя!
М---да. Вы о чем вообще? Блоки питания в период 1985 по 1995 года на самодельные УНЧ собирались не как не импульсные - об импульсных БП многие мечтали но то ферита нормального в магазинах и на развалах не было, то др. деталей, по этому собирали БП взяв в основу троидального вида сердечники и сами мотали и первичную обмотку и вторичные тоже, сами, своими рученьками...
Знаний ради - возьмите БП на обычном (железном) сердечнике (лучше троидальный трансформатор) а не на ферите (не как не импульсный) - подключите питание, повесте допустимую небольшую нагрузку = замерь-те питание (НАПРЯЖЕНИЕ) на выхое в месте где подключена нагрузка. Далее, подключите емкость к примеру на 1000 микрофорад = опять замерьте напряжение. Сравните что получается в итоге. И давайте по теме вести беседы, а то складывается мнение что кого-то нужно обучать прежде чем давать возможность чатится.
wdrakula - если Вы модератор, то забаньте меня пожалуйста если не модератор, то идите в песочницу с детишками играйте - все просто и спокойнее от этого будет всем от охинеи которую Вы тут несете ведя себя как даун...
идите в песочницу с детишками играйте - все просто и спокойнее от этого будет всем от охинеи которую Вы тут несете ведя себя как даун...
Родное серце! Ты папе своему советы давай, если с ним знаком, хорошо?
Ты сам то понял, что написал выше? Что ты измерял до и после подключения конденсатора? Слова "амплитудное", "среднее" и "действующее" слышал, недоумок?
Иди уже в школу, дебил. Или двор мести, а то уволят.
Знаний ради - возьмите БП на обычном (железном) сердечнике (лучше троидальный трансформатор) а не на ферите (не как не импульсный) - подключите питание, повесте допустимую небольшую нагрузку = замерь-те питание (НАПРЯЖЕНИЕ) на выхое в месте где подключена нагрузка. Далее, подключите емкость к примеру на 1000 микрофорад = опять замерьте напряжение. Сравните что получается в итоге.
Получится напряжение в корень из двух выше чем без кондера (примерно, зависит от нагрузки и мощи транса).
А теперь Вы, знаний ради, возьмите батарейку и проделайте тоже самое. Сравните что получается в итоге.
Нашлась информация по заданному вопросу: Чем програмировать - Простейщий программатор Attiny13а
Надеюсь что люди, которые впервые сталкивается с программированием (но как видно некоторые личности, которые умеют вести себя неадекватно, так как не знают правил этики общения) будут в курсе и меньше будут отвечать тем кто чатится ковыряясь в носу в поисках виноватого в их личной (обиженной) жизни.
Да и не будет лишним на сайте поставить такую тему - заодно можно и программаторы реализовывать, надеюсь, что даже и есть кому их прошивать если будет заказ от тех (кто как и я) сталкивается в первые с программированием а прошитые на заказ контроллеры (имею в виду под разные для прошивки ЧИПы и МС контроллеров). Желаю всем прекрасного дня!
у кого она есть и кто как ее использует? можно ли эту плату использовать как держатель для Attini13 для программирования, соответственно подключив программато к ней ?
Вот этот попался мне на глаза))) его и заказал)))
1 шт. Новый samiore робот USBASP USBISP AVR программист USB ISP USB ASP ATMEGA8 ATMEGA128 Поддержка Win7 64 К http://s.aliexpress.com/B7FnEreY
(from AliExpress Android)
В крайнем случае перешить можно, на обратной стороне платы перемычку припаять для прошивки с оригинального немецкого сайта.
==========================
Добавлю при редактировании:
А чем вас не устраивает Ардуина как программатор? Я понимаю, мне по профилю положено программатор иметь, хотя бы для ответов на глупые вопросы... ;). А по делу он вам зачем нужен?
Ардуиной тиньку проще всего прошивать на барборде, как описано в сотне мест в сети... зачем какие-то извращения?
Здравствуйте.
Подскажите пожалуйста, как освободить единственный таймер от функций arduino, чтобы работать с ним напрямую?
Daget, а что мешает работать напрямую?
Если "T" ставлю менее 220, то на выходе меандр с периодом 400 микросекунд.
В коде кроме того что я написал ничего нет. Кто так тупит???
Как мне получить нужные 10 микросекунд?
Daget, а что мешает работать напрямую?
Я так понимаю что функции "micros" и "millis" навязанны на этом таймере, и ставят свои делители.
Когда пытаюсь настроить таймер, нет никаких изменений при изменении предделителя таймера.
Похоже правильне код такой
ПС: А еще лучше вместо ОN и OFF организовать с помощью побитового исключающего ИЛИ [^]
Залил Ваш код (без изменений).
Меандр 800 микросекунд.
ПС: у micros() шаг изменеия 4мкс. так что программно не выйдет 10мкс. Только аппаратно.
Тоже самое. Меандр 800 микросекунд.
Я так понимаю что arduino вешает какой-то свой код на 0 таймер, чтобы работали "micros" и "millis".
Как выпилить этот код, чтобы только я управлял таймером?
Я так понимаю что arduino вешает какой-то свой код на 0 таймер, чтобы работали "micros" и "millis".
Как выпилить этот код, чтобы только я управлял таймером?
Вам написали выше,
берите и управляйте таймером как хотите.
Не нужно вызывать функцию micros().
В сетап настраиваете таймер и запускаете, loop остается пустой.
Вот код, который, как ты выразился "вешает" Ардуино.
По строкам:
1. нет прескелера, частота таймера равна частоте процессора;
2. режим 3, фаст ШИМ, счет от 0 до 255;
3. разрешить прерывание переполнения
4. 0 - в счетчик таймера
--------------------------
В setup() ты можешь написать все, что тебе угодно, оно перекроет эту инициализацию.
Чтобы указать тебе "волшебные строчки" вместо 1,2,3, нужно знать:
1. на какой частоте ты запускаешь камень?
2. будешь ли ты в программе пользоваться миллис и микрос. Если будешь - все сильно сложнее, тебе - явно не под силу, а я не стану делать это бесплатно.
-------------------------------------------
Вот пример для 9600КГц, миллис, микрос - недоступны.
96 - тактов в 10 мкс, при частоте 9600КГц;
48 - половина от 96, чтобы получить меандр;
WGM01, WGM02 и WGM03 - режим 7, счет от 0 до числа в OCR0A (96);
-----
Меандр с периодом 10 мкс на ноге №6 == пин1.
Нашел проблему.
Не работает команда ISR(TIMER0_OVF_vect)
Прерывание по переполнению включенно.
В итоге сделал на прерывании по сравнению.
Ещё вопрос. Если я настроил таймеры, прерывания, векторы... А потом в коде поставлю "millis", что произойдет?
Команда "millis" просто не сработает или перепашет все мои настройки?
Ещё вопрос. Если я настроил таймеры, прерывания, векторы... А потом в коде поставлю "millis", что произойдет?
Команда "millis" просто не сработает или перепашет все мои настройки?
Убивать нужно за такие вопросы. Я уже об этом писал где-то.
Ничего не произойдет. Миллис вернет всякую ерунду. В нашем случае - просто ноль.
откройте ../hardware/attiny13/avr/cores или каким ядром для тиньки пользуетесь и смотрите, что там написано. Ей б..гу не трудно прочитать пару строк кода. Все о чем писал я и спрашивали вы написано в файле wiring.c.
А почему может не срабатывать прерывание по переполнению?
"ISR(TIM0_OVF_vect)"
Откройте же код, наконец!!!!!!!!!
Там В ПЕРВЫХ СТРОЧКАХ уже определен вектор прерывания.
1.В тиньке 13 он назывется TIM0. Так сложилось.
2. компилятор ругнется на переопределение вектора, если назовете правильно.
3. Если вам для чего-то нужен таймер0, то закоментируйте в wiring.c этот обработчик. Можете написать свой и переписать микрос и миллис. Это примитивно.
Не надо ничего комментировать. После установки чипа в систему в папке с файлами пакета появляются насколько папок с разными ядрами, в которых уже всё что надо закоментировано. Достаточно в папку CORE скопировать содержимое CORENOMILLIS.
В продолжение темы работы ядра "операционной системы" на микроконтроллере. Когда увожу микроконтроллер в режим сна "Idle", он просыпается каждые 8 мс, это работа системного таймера 0? Вероятно при переполнении выполняется прерывание, примерно соответствует
256 * 256 / 8000000МГц - 8 мс
Получается встроенная система пробуждения. В моем случае вполне удобно. Если будет надо чаще, есть еще таймеры. А реже не получится, да и не нужно, микроконтроллер просыпается, смотрит на время и спит дальше, потребление почти не возрастает.
sim31
Пожалуйста, выложите этот код здесь.
Эта ветка многим помогает.
Эта ветка многим помогает.
Да весь форум помогает, постоянно в поиске показывает множество полезных решений.
Все что связано с ADCSRA, POWER_xxx можно убрать, их влияние на потребление невелико. ADCSRA=0 можно указать 1 раз в секции Setup, при частом переключении он ведет себя странно в плане потребления.
Есть еще вариант глубокого сна в режиме
Пробуждать можно по сигналу WDT для Atmega328, если WDT занят для защиты от зависания, или контроллер Atmega8, пробуждать можно про прерыванию на входе, которое формирует сам микроконтроллер через RC цепочку. Конденсатор 1 мкф, резистор 1 мегаом, дает время сна около 1 секунды. Потребление около 7 мкА. После пробуждения меняем на резисторе сигнал на обратный, с 1 на 0, засыпаем и снова микроконтролле некоторое время разряжается конденсатор и пробуждает его при переходе с 1 на 0, три строчки кода.
Здесь для примера PD1 вход на котором висит прерывание, PD2 выход.
Ну понятно что в плате Arduino спящие режимы бесполезны. Тестировать надо на макетной плате, проще всего при работе от внутренного RC генератора на 8 МГц и с делением частоты до 1 МГц фьюзом. И напряжением питания около 3В, при 5В потребляет очень много.
Зачем это всё нужно. При питании от батарейки типа CR2032 микроконтроллер просыпается периодически, делает измерения и по радиоканалу отправляет данные. Фото не мое, но похоже:
http://mtdata.ru/u25/photoEDC1/20457957665-0/original.jpg
Одна из проблем здесь АЦП, оно потребляет около 0.3 мА и его нужно отключать после завершения измерений. Все работает, но это усложняет код и АЦП иногда странно себя ведет, вроде и отключен, а потребление не снижается некоторое время. Или это осбенность микроконтроллера (типа конфигурируем АЦП 1 раз и не дергаем далее), или Arduino компилятор добавляет что-то от себя в код для управления АЦП.
Они не стесняются, они просто не знают :)
Одной группе китайцев дали топологию и перечень элементов: "Сделать 300 тыс. плат".
Другой группе китайцев предложили эти изготовленные платы: "Купи оптом партию плат за XXX юаней. Продашь в розницу дороже - вся прибыль твоя."
По моему вопросу может кто знает что либо?
Как собрать или из каких деталей собрать программатор - на Алиэкспресс есть кучи вариантов, а вот что из сего купить стоит, что бы это стало программатором для прошивки ATTINY13A-PU ?
Serg-24, программатор можно сделать на коленке за 15 минут "из говна и палок", погуглите "программатор 5 проводков" , программатором может быть любая плата ардуино на мк мега 328 или мега 32U4 , программатор можно купить , -на том же Али в огромном ассортименте от 200р и выше. Тот, что у вас на первой картинке подойдёт, но может подадобится джампер JP3, который нужно будет припаять. На второй картинке не программатор, а отладочная плата для тини25-85.
Вот спасибо, кое что теперь понятно. Значит что бы не паять (ставить, перепаивать с места на место) перемычку JP3 или другую (мало ли что нужно будет программировать), то нужно приобрести другой программатор например (этот что-то нравится больше, по описанию что он вообще может и с какими виндами он работает): USB ISP USBasp USBisp Программист 51 ATMEL AVR поддержка Win 7 64 - в этой модиф икации (пологаю, так как корпус не является разборным) уже не нужно перекидывать джампера выбирая нужное значение и скорости прошивки, все уже предусмотрено и согласованно.
Остается вопрос - как теперь подключиться к МС которую нужно программировать. Можно:
Макетной платой - её нет и нет необходимости её покупать, значит нужна переходная плата, которая ставится к выводу этого программатора? Что здесь можете мне посоветовать для прошивки 8 ножкового контроллера ATTINY13A - для него в плате нужна панелька (в которую его вставлять для прошивки) на 8 ножек, если на этой плате будет и другая панелька (с большим количеством - для других мс) это думаю будет тоже хорошо. Так же, можно проводками (РИНы их вроде кличат) один конец с папой в выходящий шнур разема - а другой его конец (что уже с мамой) в нужную ножку. Способ с "перетыкиванием" пользуется спросом у многих (если нет макетной платы и лень купить и макетную плату и как мне нужно плату для вставки её в шлейф) кто прошивает разные контроллеры. ПОСОВЕТУЙТЕ - возможно я не прав в том что написал выше - подкорректируйте (поправьте меня) и напишите какую плату мне нужно купить для избежания обезьянничества с перетыкиванием проводков на контакты МС (контроллера) которые нужно программировать.
Serg-24, я вам все варианты (кроме дорогих) написал. Просто запаяйте этот джампер. Можно впаять намертво перемычку и всё -снимать её нет необходимости. Как подсоединить МК к программатору -сто тыщ вариантов. Если не нужно отлаживать, перепрошивая множество раз -то просто припаяться к МК проводками. Что вы вобще хотите прошить? Тини13 -старое говно из эпохи динозавров.
Да, и тот программатор в корпусе на последнем скрине - не совместим с USBAsp, о чём красноречиво говорит надпись USB ISP
Этому контроллеру можно задать питание низкое 1,2 - 1,6 вольт, если поставить конденсатор на 22 мкФ или более. Так как устройство автономное - то пока только есть вариант на ATTINY13A-PU DIP-8 с питанием от пальчиковой батарейки (LR 6, AA size). Есть альтернативные варианты контроллеров с низким питанием на 1,2 вольта? Подскажите о них.
Serg-24, от 1,2 вольта??? Это в даташите написано? Не припомню что-то. И тини, мега -минимум у них 1,8 вольта. Всё,что ниже -никакой гарантии.
На одном форуме - выставили схемку на этом контроллере - питание подняли танталовым конденсатором на 22 мкФ до 1,8 вольта и схема заработала. Питание шагового двигателя (движок часов). Можно поставить и большего номинала емкость - будет выше напряжение, что обеспечит нужное питание МС. Не знаю других контроллеров (не встречал пока) которые могут работать от питания 1,2 - 1,5 вольта. Если что известно = сообщите пожалуйста.
Serg-24, ссылка есть? Конденсатор ведь сам по себе питание не поднимает -он хранит заряд.
USB-Asp - лучше брать те, что без корпуса. В них реально последняя прошивка от оригинального.
Прошивать тиньку можно чем угодно, но лучше ардуинкой, я нанку использую.
Макетка "втыкалка", она же "барборда", совершенно необходимая вещь. Любую, только не огрызок, нормальной длины.
С ней будет много проще все. Даже провода -соединители не обязательно покупать - можно от витой пары нарезать и облудить.
Например в програматоре, на ваший фотках, разъем не такой, как нужно для ардуиновских плат или для макетки с панелькой. Поэтому проще всего коммутировать через барборду. Любую мелочь проверить на практике - барборда быстрее, чем пайка.
На одном форуме - выставили схемку на этом контроллере - питание подняли танталовым конденсатором на 22 мкФ до 1,8 вольта и схема заработала.
Главное, конденсатор - танталовый! Это вам не керамика сраная! ;) ;) ;), Военные модели поднимают до 220 Вольт 50Гц! Но их достать трудно ...со старых, еще советских, военных складов только. :(
Вот что хочу сделать: Пример - что нужно сделать. Кто Вам сказал что емкостями не поднять напряжение - не верьте этому человеку...
wdrakula - Вы пишите "Но лучше ардуинкой" - можете ссылку дать на этот программатор?
1.Гы! После того, как на схема По Вашей ссылке написано +1.5В и -1.5В, дальше можно не читать. Только "изпоцтола" вылезти надо.
2. Какая, к Б..гу, ссылка? ArduinoISP - скетч, в стандартных примерах Ардуино IDE. Про него и подключение в начале той темы, в которой Вы пишите.
3. Если еще раз повторите херню, про поднятие напряжения конденсаторами - отправитесь нахер, учить физику по школьным учебникам.
1.Гы! После того, как на схема По Вашей ссылке написано +1.5В и -1.5В, дальше можно не читать. Только "изпоцтола" вылезти надо.
2. Какая, к Б..гу, ссылка? ArduinoISP - скетч, в стандартных примерах Ардуино IDE. Про него и подключение в начале той темы, в которой Вы пишите.
3. Если еще раз повторите херню, про поднятие напряжения конденсаторами - отправитесь нахер, учить физику по школьным учебникам.
1) Автор в схеме указал куда подключать питание от батарейки, к каким контактам - об этом написано наже.
2) Спасибо, еще раз просмотрю тему.
3) В далекие 90-е я, как и многие другие радиолюбители собирали УНЧ, такие как Сухова (например, крутой УНЧ с кг = 0,006), собирали и БП (Блоки Питания) в которые ставили емкости приличных значений, от 2000 до 4000 микофорад. Таким образом и поднимали напряжение питания НУЧ. Вы находите странным, что из 40 вольт постоянного напряжения, можно емкостями вытянуть напряжение 45-50 вольт? Кто радиолюбитель - тот знает, обьяснять и тратить время на обучение не собираюсь - это знают все кто брал в руки паяльник и собирал схемы, в данном случае БП (Блоки Питания).
Вы находите странным, что из 40 вольт постоянного напряжения, можно емкостями вытянуть напряжение 45-50 вольт?
Хотел нахер послать, но подумал, что таких жалеть нужно.
Просто интересно, ты родился дебилом, или таблетки какие-то пил? Может диета специальная?
Раз уж клоуном заделался - нарисуй схему, чтобы из 40В постоянки, только на конденсаторах, пусть еще резисторы будут ;), поднять напряжение до 45В. Тебя не вылечить, так хоть народ поржет.
что из 40 вольт постоянного напряжения, можно емкостями вытянуть напряжение 45-50 вольт?
Из 40 вольт пульсирующего. Не стадись уже, если вы что-то и знали, то всё позабыли уже. Постоянное напрядение невозможно увеличить не преобразовав его сперва в переменное или импульсное.
Не иначе как Клапа разрешил. Тантал это сила.
что из 40 вольт постоянного напряжения, можно емкостями вытянуть напряжение 45-50 вольт?
Из 40 вольт пульсирующего. Не стадись уже, если вы что-то и знали, то всё позабыли уже. Постоянное напрядение невозможно увеличить не преобразовав его сперва в переменное или импульсное.
Дима! Конечно всем ясно, что изначально имелось ввиду. Но автор столь безапелляционен, что не поглумиться нельзя!
М---да. Вы о чем вообще? Блоки питания в период 1985 по 1995 года на самодельные УНЧ собирались не как не импульсные - об импульсных БП многие мечтали но то ферита нормального в магазинах и на развалах не было, то др. деталей, по этому собирали БП взяв в основу троидального вида сердечники и сами мотали и первичную обмотку и вторичные тоже, сами, своими рученьками...
Знаний ради - возьмите БП на обычном (железном) сердечнике (лучше троидальный трансформатор) а не на ферите (не как не импульсный) - подключите питание, повесте допустимую небольшую нагрузку = замерь-те питание (НАПРЯЖЕНИЕ) на выхое в месте где подключена нагрузка. Далее, подключите емкость к примеру на 1000 микрофорад = опять замерьте напряжение. Сравните что получается в итоге. И давайте по теме вести беседы, а то складывается мнение что кого-то нужно обучать прежде чем давать возможность чатится.
wdrakula - если Вы модератор, то забаньте меня пожалуйста если не модератор, то идите в песочницу с детишками играйте - все просто и спокойнее от этого будет всем от охинеи которую Вы тут несете ведя себя как даун...
wdrakula, вы правы. Автор песец как безнадёжен :)
Афтар, ты примерно хоть знаешь чотакое действующее напряжение?
идите в песочницу с детишками играйте - все просто и спокойнее от этого будет всем от охинеи которую Вы тут несете ведя себя как даун...
Родное серце! Ты папе своему советы давай, если с ним знаком, хорошо?
Ты сам то понял, что написал выше? Что ты измерял до и после подключения конденсатора? Слова "амплитудное", "среднее" и "действующее" слышал, недоумок?
Иди уже в школу, дебил. Или двор мести, а то уволят.
Знаний ради - возьмите БП на обычном (железном) сердечнике (лучше троидальный трансформатор) а не на ферите (не как не импульсный) - подключите питание, повесте допустимую небольшую нагрузку = замерь-те питание (НАПРЯЖЕНИЕ) на выхое в месте где подключена нагрузка. Далее, подключите емкость к примеру на 1000 микрофорад = опять замерьте напряжение. Сравните что получается в итоге.
Получится напряжение в корень из двух выше чем без кондера (примерно, зависит от нагрузки и мощи транса).
А теперь Вы, знаний ради, возьмите батарейку и проделайте тоже самое. Сравните что получается в итоге.
Нашлась информация по заданному вопросу: Чем програмировать - Простейщий программатор Attiny13а
Надеюсь что люди, которые впервые сталкивается с программированием (но как видно некоторые личности, которые умеют вести себя неадекватно, так как не знают правил этики общения) будут в курсе и меньше будут отвечать тем кто чатится ковыряясь в носу в поисках виноватого в их личной (обиженной) жизни.
Да и не будет лишним на сайте поставить такую тему - заодно можно и программаторы реализовывать, надеюсь, что даже и есть кому их прошивать если будет заказ от тех (кто как и я) сталкивается в первые с программированием а прошитые на заказ контроллеры (имею в виду под разные для прошивки ЧИПы и МС контроллеров). Желаю всем прекрасного дня!
заказал тинек13, программатор usbisp и отладочную плату https://cloud.mail.ru/public/8PUm/a6ysmairi
а вот что с отладочной платой делать не знаю)))
у кого она есть и кто как ее использует? можно ли эту плату использовать как держатель для Attini13 для программирования, соответственно подключив программато к ней ?
Baks, прогрмматор не то ли говно, что на картинке #1174 ? Отладочную плату для тини85 можно использовать как сокет для программирования тини13.
Вот этот попался мне на глаза))) его и заказал)))
1 шт. Новый samiore робот USBASP USBISP AVR программист USB ISP USB ASP ATMEGA8 ATMEGA128 Поддержка Win7 64 К
http://s.aliexpress.com/B7FnEreY
(from AliExpress Android)
этот нормальный должен быть.
В крайнем случае перешить можно, на обратной стороне платы перемычку припаять для прошивки с оригинального немецкого сайта.
==========================
Добавлю при редактировании:
А чем вас не устраивает Ардуина как программатор? Я понимаю, мне по профилю положено программатор иметь, хотя бы для ответов на глупые вопросы... ;). А по делу он вам зачем нужен?
Ардуиной тиньку проще всего прошивать на барборде, как описано в сотне мест в сети... зачем какие-то извращения?
тут дело не в том что устроило или нет, я если честно не знаю как луче и удобнее, поэтому и купил чтобы попробовать..
да и 70 р не такая уж и большая сумма)))
wdrakula а вы сами что используете? программатор или ардуинку для прошивки?
я - чаще ардуину. Программатор нужен для студии.