После включения моргаем вторым пином и спать, отключая лишнее!(
так как это ни какое не устройство то и ответ без картинок))
Если программируете тини через ардуино, значит вы сами в файл boards.txt добавляли меню ATtiny13.
так там есть строка с lock_bits ее и редактируете.
Лично я заливая прошивки через Arduini ISP использую для установки фьюзов SinaProg она поддерживает ардуино.
Спасибо за пинок в нужном направлении ;)
это устройство юзается в мишени. При попадании срабатывает микрик на ресете тиньки, моргает диод и наступает сон, чтоб батарейку не жрать.
ЗЫ: Хотя я думаю, что человек, который сможет клонировать прошивку, сможет такое и сам запилить.
Собираю простую электронную свечку. Вот по этой схеме.
Три леда, два из них запаролелены и сидят на PB1, а третий сидит на PB0.
Для ШИМ хотел использовать RANDOM но в тиньку он не влезает. Поэтому сделал два вектора и в цикле по ним бегаю.
Но почемуто, если в десятой строке вместо переменной pwmY[i] ставлю какое нибуть постоянное число, оба выхода ШИМ отключаются (проверял скопом).
Если в девятой строке вместо переменной pwmR[i] прописываю какую нибуть постоянную, то тогда всё вроде работает но всё равно как то не корректно, в концеили в начале цикла FOR происходит какаято задержка и леды горят около 2 секунд постоянно (не мерцают).
Что я не правильно делаю?
int pwmY[100]={121,114,156,188,180,163,163,116,166,109,127,144,170,150,165,183,119,151,190,169,133,167,172,146,175,139,100,172,190,179,137,108,127,191,167,155,111,125,192,101,161,176,177,173,128,146,178,187,174,136,191,159,118,192,140,133,165,125,140,157,129,118,107,129,134,133,182,197,135,160,154,195,179,192,177,188,182,192,102,180,106,151,110,167,128,115,133,170,154,199,110,115,111,107,115,125,119,178,131,105,};
int pwmR[100]={97,75,75,78,96,73,78,86,54,61,94,85,51,84,82,56,54,59,73,100,71,52,54,58,96,72,51,55,86,67,64,61,62,53,61,61,56,73,54,83,74,82,73,61,53,79,65,100,81,81,77,87,59,52,71,91,98,78,68,100,80,83,73,92,74,90,50,82,100,54,57,98,67,50,100,81,51,61,89,73,98,66,75,78,75,67,76,87,97,99,63,74,58,59,74,76,61,65,96,92,};
void setup()
{
}
void loop()
{
for (int i=0;i<100;i++){
analogWrite(0,pwmR[i]);// Выводим шим для красного
analogWrite(1,pwmY[i]);// Выводим шим для желього
delay(50);
}
}
Моя версия - проблемма в том что функция delay и шимы используют один и тот же тинькин таймер и мешают друг другу. Попробуйте вместо delay использовать цикл для программной задержки.
int pwmY[100]={121,114,156,188,180,163,163,116,166,109,127,144,170,150,165,183,119,151,190,169,133,167,172,146,175,139,100,172,190,179,137,108,127,191,167,155,111,125,192,101,161,176,177,173,128,146,178,187,174,136,191,159,118,192,140,133,165,125,140,157,129,118,107,129,134,133,182,197,135,160,154,195,179,192,177,188,182,192,102,180,106,151,110,167,128,115,133,170,154,199,110,115,111,107,115,125,119,178,131,105,};
int pwmR[100]={97,75,75,78,96,73,78,86,54,61,94,85,51,84,82,56,54,59,73,100,71,52,54,58,96,72,51,55,86,67,64,61,62,53,61,61,56,73,54,83,74,82,73,61,53,79,65,100,81,81,77,87,59,52,71,91,98,78,68,100,80,83,73,92,74,90,50,82,100,54,57,98,67,50,100,81,51,61,89,73,98,66,75,78,75,67,76,87,97,99,63,74,58,59,74,76,61,65,96,92,};
void setup()
{
pinMode(PB3, OUTPUT);
}
void loop()
{
for (byte i=0;i<10;i++){
analogWrite(0,pwmR[i]);// Выводим шим для красного
analogWrite(1,pwmY[i]);// Выводим шим для желього
for (int i=0;i<1000;i++){
digitalWrite(PB3, LOW);//вместо задержки
}
}
}
int pwmY[100]={121,114,156,188,180,163,163,116,166,109,127,144,170,150,165,183,119,151,190,169,133,167,172,146,175,139,100,172,190,179,137,108,127,191,167,155,111,125,192,101,161,176,177,173,128,146,178,187,174,136,191,159,118,192,140,133,165,125,140,157,129,118,107,129,134,133,182,197,135,160,154,195,179,192,177,188,182,192,102,180,106,151,110,167,128,115,133,170,154,199,110,115,111,107,115,125,119,178,131,105,};
int pwmR[100]={97,75,75,78,96,73,78,86,54,61,94,85,51,84,82,56,54,59,73,100,71,52,54,58,96,72,51,55,86,67,64,61,62,53,61,61,56,73,54,83,74,82,73,61,53,79,65,100,81,81,77,87,59,52,71,91,98,78,68,100,80,83,73,92,74,90,50,82,100,54,57,98,67,50,100,81,51,61,89,73,98,66,75,78,75,67,76,87,97,99,63,74,58,59,74,76,61,65,96,92,};
void setup()
{
pinMode(PB3, OUTPUT);
}
void loop()
{
for (byte i=0;i<10;i++){
analogWrite(0,pwmR[i]);// Выводим шим для красного
analogWrite(1,pwmY[i]);// Выводим шим для желього
for (int i=0;i<1000;i++){
digitalWrite(PB3, LOW);//вместо задержки
}
}
}
Zahar, посмотрел ваш скетч на осциллографе, и пожалуй есть что сказать. Похоже скетч ваш не работал никогда. Не в вашем случае, и не в том (к сожалению), что вам предложил мой коллега bodriy2014. То что вы считали работой -был какой-то хаос к работе никак не относящийся. Давайте вспомним сколько памяти в тини13, что б не лезть в даташит -напомню -64 байта. Давайте посмотрим сколько вы ему пытаетесь засунуть в память -два массива по 100 слов, т.е. 400 байт!!! В принципе вы могли бы создавать массивы не INT а byte, но глобально бы это проблему не решило -вы б получили суммарный массив в 200 байт. А у нас всего 64. Ваша задумка совершенно негодится. Но выход есть, записывать массив во флэш, через PROGMEM , соответссно и читать потом через PROGMEM, тогда скорее всего идея заработает.
Тини13 с помощью Ардуины легко управляет 12 светодиодами в режиме вольтметра. А если не страшно вывод сброса задействовать то как-раз 20 светиков доступно. Не чип а сказка.
Пытаюсь прошить attiny 13a как при помощи ардуино, так и при помощи USBasp v.2 (перемычку JP3 ставить пробовал) в IDE 1.6.7 и получаю вот такую ошибку:
Скетч использует 350 байт (34%) памяти устройства. Всего доступно 1 024 байт.
Глобальные переменные используют 4 байт динамической памяти.
java.lang.NullPointerException
at cc.arduino.packages.uploaders.SerialUploader.uploadUsingProgrammer(SerialUploader.java:272)
at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:83)
at cc.arduino.UploaderUtils.upload(UploaderUtils.java:78)
at processing.app.Sketch.upload(Sketch.java:1178)
at processing.app.Sketch.exportApplet(Sketch.java:1152)
at processing.app.Sketch.exportApplet(Sketch.java:1124)
at processing.app.Editor$DefaultExportAppHandler.run(Editor.java:2525)
at java.lang.Thread.run(Thread.java:745)
(пробовал использовать другую версию IDE или свежую ночную сборку - результат не меняется)
Последний раз использовал простейший код мигания светодиодом:
Доброго дня! Подскажите, правильно ли написан скетч. Алгоритм такой: ноги 2 и 3 входы, на которые подается 0( скажем кнопки на землю), 5 выход ШИМ. Задача: на 2 - 0, на 3 - 0 -- ШИМ100%, на 2 - 0, на 3 -1 -- ШИМ75%, на 2 - 1, на 3 - 1 -- ШИМ50%. И с частотой ШИМ, что-то никак не разберусь. Нужна от 1 до 5 кГц любая. Какая в моем скетче?
vvg10, в вашем скетче частота шим = тактовая частота МК / 255. Не понятно что вы подразумеваете под пинами 2,3 и 5. Указывать нужно по битам порта. Выход oc0a на PB0, соответссно PWMpin 0
Пины 2, 3 и 5 - нумерация ног тиньки. Соответственно PB3, PB4, PB0. Как задать частоту 1 кГц? И про правильность написания хотелось бы услышать. Да, кнопки подразумеваются с фиксацией.
vvg10, 1) не припомню такой возможности, что бы номер ноги можно было давать вместо номера порта для pinMode и прочего digitalWrite. Так что если не заработает -не удивляйтесь)
2)в таймере тини13 можно выбрать что-то одно: либо гибко регулировать скважность, либо частоту. В вашем случае можно частоту менять делителем прескалера. А именно задавая параметр в регистр TCCR0B=; как дополнительный делитель к вышеупомянутой формуле.
vvg10, про остальное особо не к чему придраться. Я бы лично применил энкодер, и регулировал бы скважность по-человечески от 0 до 255. Или переменный резистор на аналоговый вход. Хотя конечно смотря какая задача. Например для управления фонариком достаточно одной кнопки, и перебирать ею несколько градаций скважности.
она зажигает светодиоды при наличии определённого напряжения(это для повербанка мастырю). Диоды горят в при наличии напряжения в указанном коридоре напряжений.
в УНО работает(порты другие) а при заливке в Тини13 - не алё.
#define Led 0 // led
#define Led 1 // led
#define Led 2 // led
int analogIn = 4; // input
int analogValue = 0;
void setup()
{
//pinMode(0, OUTPUT);
//pinMode(1, OUTPUT);
//pinMode(2, OUTPUT);
}
void loop()
{
if(millis() % 500 == 0) // Каждые 500 мс (% - остаток от деления)
analogValue = analogRead(analogIn);
if (analogValue > 800)// 800=16,4V;
{
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
}
if (analogValue > 700 & analogValue < 799) // 700=14,4V; 700-799
{
digitalWrite(0, LOW);
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
}
if (analogValue > 650 & analogValue < 699) // 600=12,8V;650-699
{
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
}
/if (analogValue < 649)
{
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
}
подскажите, плз, что не так?
скетч BLINK заливал в Тини13, всё работает, а этот ни в какую.
karl2233, да тоже самое что и у предыдущего товарища. Вы читаете якобы аналоговый вход 4, но такого не существует. Их всего4, но счёт с ноля. Поэтому последний -вход 3.
Но Вы же сами скопировали его (функцию сна), у товарища, который выложил код в свобоный доступ и зачем-то хотите его защищать.
Проект из которого Вы копировали называется "Шар судьбы".
Хотя может я и ошибаюсь...Может Вы и есть тот автор?
Я не автор. "Шар судьбы" на Хабре как учебник для меня был.
После включения моргаем вторым пином и спать, отключая лишнее!(
так как это ни какое не устройство то и ответ без картинок))
Если программируете тини через ардуино, значит вы сами в файл boards.txt добавляли меню ATtiny13.
так там есть строка с lock_bits ее и редактируете.
Лично я заливая прошивки через Arduini ISP использую для установки фьюзов SinaProg она поддерживает ардуино.
Спасибо за пинок в нужном направлении ;)
это устройство юзается в мишени. При попадании срабатывает микрик на ресете тиньки, моргает диод и наступает сон, чтоб батарейку не жрать.
ЗЫ: Хотя я думаю, что человек, который сможет клонировать прошивку, сможет такое и сам запилить.
Может ли Attiny работать как HID?
Например, получать из Serial координаты мыши и пихать в USB HID команды перемещения курсора.
Или это умеют только 32u4?
Tomasina, может. Но библа V-USB занимает примерно 2 кило флеша. Соответссно в МК должно быть хотя бы 4 кило флэша)
Всем привет.
Есть какието непонятки с работой PWM в Attine13.
Собираю простую электронную свечку. Вот по этой схеме.
Три леда, два из них запаролелены и сидят на PB1, а третий сидит на PB0.
Для ШИМ хотел использовать RANDOM но в тиньку он не влезает. Поэтому сделал два вектора и в цикле по ним бегаю.
Но почемуто, если в десятой строке вместо переменной pwmY[i] ставлю какое нибуть постоянное число, оба выхода ШИМ отключаются (проверял скопом).
Если в девятой строке вместо переменной pwmR[i] прописываю какую нибуть постоянную, то тогда всё вроде работает но всё равно как то не корректно, в концеили в начале цикла FOR происходит какаято задержка и леды горят около 2 секунд постоянно (не мерцают).
Что я не правильно делаю?
Насчёт USB - точно помню, у микросина читал о порте V-USB на ATTiny10 - uWire. Гуглите, может и то)
Моя версия - проблемма в том что функция delay и шимы используют один и тот же тинькин таймер и мешают друг другу. Попробуйте вместо delay использовать цикл для программной задержки.
Не помогло :(
Не помогло :(
Привет.
Могу написать.
И проверить на своем шилде https://www.youtube.com/watch?v=TS-b9FpGlYs
Укоротите для пробы массивы, оставте по 10 значений. Может памяти не хватает.
Zahar Скетч под видео.
bodriy2014
Огромное спасибо за проделанную работу.
Вот только один вопрос, почему когда я комментирую одну из этих строк
OCR0A=pwmR[i];
OCR0B=pwmY[i];
ШИМ проподает на обоих каналах?
bodriy2014
Огромное спасибо за проделанную работу.
Вот только один вопрос, почему когда я комментирую одну из этих строк
OCR0A=pwmR[i];
OCR0B=pwmY[i];
ШИМ проподает на обоих каналах?
Такой задачи не стояло, буду вечером посмотрю даташит может я настроил шим так.
если еще будут корректировки пишите сразу чтоб все проверил и внес в скетч.
Нет, нет, корректировок больше не будет.
Просто я пытаюсь понять что и как. Я учился на 5081, там всё по другому, вот и пытаюсь понять как работать с этим зверем.
Нет, нет, корректировок больше не будет.
Просто я пытаюсь понять что и как. Я учился на 5081, там всё по другому, вот и пытаюсь понять как работать с этим зверем.
А зачем в схеме Q4,Q5,Q6 ?
Как только мосфет откроется они подтянут затвор к земле и мосфет закроется диод не успеет разгореться.
А в какой программе схему рисовали?
Так должно работать
А зачем в схеме Q4,Q5,Q6 ? Как только мосфет откроется они подтянут затвор к земле и мосфет закроется диод не успеет разгореться.
Это схема управления со стабилизацией тока, :)
Это схема управления со стабилизацией тока, :)
Спасибо понял, вы как всегда-зрите в корень.
Zahar, посмотрел ваш скетч на осциллографе, и пожалуй есть что сказать. Похоже скетч ваш не работал никогда. Не в вашем случае, и не в том (к сожалению), что вам предложил мой коллега bodriy2014. То что вы считали работой -был какой-то хаос к работе никак не относящийся. Давайте вспомним сколько памяти в тини13, что б не лезть в даташит -напомню -64 байта. Давайте посмотрим сколько вы ему пытаетесь засунуть в память -два массива по 100 слов, т.е. 400 байт!!! В принципе вы могли бы создавать массивы не INT а byte, но глобально бы это проблему не решило -вы б получили суммарный массив в 200 байт. А у нас всего 64. Ваша задумка совершенно негодится. Но выход есть, записывать массив во флэш, через PROGMEM , соответссно и читать потом через PROGMEM, тогда скорее всего идея заработает.
Простите что так долго не отвечал.
dimax прав, Q4-Q6 это действительно стабилизация тока. Кстати если кому интересно, считается очень просто.
На R7-R9 должно падать около 0,7В. Следовательно, если Диод трёх ватный его ток 0,7А, отсюда 0,7В/0,7А=1Ом.
dimax, я так и предпологал что там какойто бред на выходе. Поэтому хотел посмотреть каждый выход отдельно.
Массив byte, я тоже пробовал, вообще переставало работать. Щас попробую загнать во флэш.
Вот так, правильно?
Zahar, ну да, похоже . Если не считать того, что массивы нужно сделать const и пинмоде не правильно.
Всё заработало :)
Не много подкорректировал под свои нужды и всё прекрасно работает.
Когда закончу, выложу фотки.
Всем огромное спасибо!!!
всем привет в этом чатике(с)
суть такова - хочу сделать индикатор типа вольтметра на Тиньке, что б три диодика поочерёдно зажигались при разных напряжениях на батарее.
вопрос:
правильно ли я понимаю, что можно написать программку для Attiny13 в ИДЕ.
потом, выбрав соответствующий МК, загрузить в Тиньку?
понятно что библиотеки и прочее надо(уже поставил).
Практика показывает, что на Attiny13 с дуиновскими функциями далеко не уедешь... уж слишком они объемные.
а на меге на них катаетесь значит. выкидывайте их потихоньку.
....
правильно ли я понимаю, что можно написать программку для Attiny13 в ИДЕ.
потом, выбрав соответствующий МК, загрузить в Тиньку?
...
Да можно.
Тини13 с помощью Ардуины легко управляет 12 светодиодами в режиме вольтметра. А если не страшно вывод сброса задействовать то как-раз 20 светиков доступно. Не чип а сказка.
Ну наконец-то написал. Как восстановить неправильно выставленные фьюзы в ATtiny:
http://habrahabr.ru/post/249967/
Пользуйтесь.
HWman, а этот вариант не собирал?
https://sites.google.com/site/wayneholder/attiny-fuse-reset-with-12-volt-charge-pump
выглядит более безопасно, собрать платку под него что-ли... две tiny45 лежат заблокированные.
Кто интересуется поделками на Тини13, вот моя еще одна.
Устройство генерирует сигналы прямоугольной формы заданной частоты, есть 8 режимов частоты и индикация тремя светодиодами.
Видео работы.
Однозначно забираю в коллекцию!!!
Уважаемые, помогите разобраться!
Пытаюсь прошить attiny 13a как при помощи ардуино, так и при помощи USBasp v.2 (перемычку JP3 ставить пробовал) в IDE 1.6.7 и получаю вот такую ошибку:
(пробовал использовать другую версию IDE или свежую ночную сборку - результат не меняется)
Последний раз использовал простейший код мигания светодиодом:
Может быть у кого-то еще была подобная ошибка?
Пробовал устанавливать частоту 1,2; 4,8; 9,6 Мгц - на результат это не повлияло.
И вообще какую софтину вы используете совместно с USBasp?
Может быть у кого-то еще была подобная ошибка?
И вообще какую софтину вы используете совместно с USBasp?
бывает такое - нужно проверить корректность установки драйверов для программатора и перезагрузить систему.
С драйверами все ок, этим USBasp шил atmega 328P без как-либо проблем.
Откатись на более старую версию IDE, например 1.6.6. - 1.6.0. Свежие ночные сборки лучше не ставить вообще, сырые и глючные.
С драйверами все ок, этим USBasp шил atmega 328P без как-либо проблем.
ты компьютер перезагрузил?
Откатись на более старую версию IDE, например 1.6.6. - 1.6.0. Свежие ночные сборки лучше не ставить вообще, сырые и глючные.
такая ошибка джавы случается на всех версиях иде
Да, я писал, что более старые пробовал и комп конечно же перезагружал.
Доброго дня! Подскажите, правильно ли написан скетч. Алгоритм такой: ноги 2 и 3 входы, на которые подается 0( скажем кнопки на землю), 5 выход ШИМ. Задача: на 2 - 0, на 3 - 0 -- ШИМ100%, на 2 - 0, на 3 -1 -- ШИМ75%, на 2 - 1, на 3 - 1 -- ШИМ50%. И с частотой ШИМ, что-то никак не разберусь. Нужна от 1 до 5 кГц любая. Какая в моем скетче?
vvg10, в вашем скетче частота шим = тактовая частота МК / 255. Не понятно что вы подразумеваете под пинами 2,3 и 5. Указывать нужно по битам порта. Выход oc0a на PB0, соответссно PWMpin 0
Пины 2, 3 и 5 - нумерация ног тиньки. Соответственно PB3, PB4, PB0. Как задать частоту 1 кГц? И про правильность написания хотелось бы услышать. Да, кнопки подразумеваются с фиксацией.
vvg10, 1) не припомню такой возможности, что бы номер ноги можно было давать вместо номера порта для pinMode и прочего digitalWrite. Так что если не заработает -не удивляйтесь)
2)в таймере тини13 можно выбрать что-то одно: либо гибко регулировать скважность, либо частоту. В вашем случае можно частоту менять делителем прескалера. А именно задавая параметр в регистр TCCR0B=; как дополнительный делитель к вышеупомянутой формуле.
1 -дополнительно делить на 1
2-.. на8
3 -.. на64
4-..на 256
5-..на 1024
Я понял, что нужно задавать так
01
#define in1Pin 4
02
#define in2Pin 3
03
#define PWMPin 0
vvg10, про остальное особо не к чему придраться. Я бы лично применил энкодер, и регулировал бы скважность по-человечески от 0 до 255. Или переменный резистор на аналоговый вход. Хотя конечно смотря какая задача. Например для управления фонариком достаточно одной кнопки, и перебирать ею несколько градаций скважности.
Спасибо. Именно для фонаря, но управление двумя сигналами, поэтому так как есть. Еще раз спасибо.
я эта, программу написал =)
она зажигает светодиоды при наличии определённого напряжения(это для повербанка мастырю). Диоды горят в при наличии напряжения в указанном коридоре напряжений.
в УНО работает(порты другие) а при заливке в Тини13 - не алё.
подскажите, плз, что не так?
скетч BLINK заливал в Тини13, всё работает, а этот ни в какую.
karl2233, да тоже самое что и у предыдущего товарища. Вы читаете якобы аналоговый вход 4, но такого не существует. Их всего4, но счёт с ноля. Поэтому последний -вход 3.
dimax, отблин... я невнимательтный тормоз.
спасибо за подсказку!
в первом посту прочитал, а последний не удосужился.
всё работает =) я теперь Великий Кукурузо
====================================
з.ы. возникает вопрос - ведь в Тини13 пять портов(RST не считаю), как их обозначать? или я что-то не так понимаю?
karl2233, что значит обозначить? Всё уже обозначено. У портов есть номера. У цифровых от 0 до 5, у аналоговых от 0 до 3.
17.03.2016 Обновил статью на geektimes, об нововведениях читайте тут.