код ардуино не работает на attiny

blink_977
Offline
Зарегистрирован: 10.08.2013

кто может подсказать почему данный код прекрасно работает на atmega328, но неправильно работает на attiny85?

int starbutton = 0;         
int ignition_pin = 1;
int brake_pin = 3;
int starter_pin = 2;
int alt_pin = 4;

int state = 0;      
int reading;           
int previous = LOW;   
int brakeState = 0;
int buttonState = 0;
int altState;

long time = 0;         
long debounce = 200;  
long interval = 100;
void setup()
{
  pinMode(starbutton, INPUT);
  pinMode(ignition_pin, OUTPUT);
  pinMode(brake_pin, INPUT);
  pinMode(starter_pin, OUTPUT);
  pinMode(alt_pin, INPUT);
}
 
 

 void ignition(){
  digitalWrite(ignition_pin, HIGH);
 
  }
 
  void starteroff(){
  digitalWrite(starter_pin, LOW);
  }

void loop()
{
 
  reading = digitalRead(starbutton);

  if (reading == HIGH && previous == LOW && millis() - time > debounce) {
    if (state == HIGH)
      state = LOW;
    else
     state = HIGH;
     time = millis();    
  }

  digitalWrite(ignition_pin, state);
 
 {
 buttonState = digitalRead(starbutton);
 }

  previous = reading;
 
  brakeState = digitalRead(brake_pin);
  if(brakeState == HIGH && reading == HIGH && state == HIGH && millis() - time > interval){
  digitalWrite(starter_pin, HIGH);
 
  }
  else{
  digitalWrite(starter_pin, LOW);
  }
 
  altState = digitalRead(alt_pin);
  if(altState == HIGH){
  starteroff();
  }
  }

 что в нем не так?

maksim
Offline
Зарегистрирован: 12.02.2012

Для начала это почитайте:  Вставка программного кода в тему/комментарий.

blink_977 пишет:

кто может подсказать почему данный код прекрасно работает на atmega328, но неправильно работает на attiny85?

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

blink_977
Offline
Зарегистрирован: 10.08.2013

первый пост не правится.

это пргорамма старта автомобиля с кнопки, для уменьшения размеров платы хотел засунуть програму в attiny85, на дуине плата работает нормально, а вот на attiny глючит, сразу при включении питания контроллера начинается самопроизвольный старт, потом сразу отрубается и снова... так вроде при программировании контроллера ошибок нету, простой blink тоже работает нормально... да и в коде у меня не использованно недоступных для attiny команд, вроде все поддерживаются, только насчет if() неуверен.

 немного пояснения:

startbutton кнопка старта

ignition_pin выход на реле зажигания

starter_pin выход на реле стартера

brake_pin сигнал с нажатой педали тормоза (без тормоза включится только зажигание)

alt_pin сигнал с генератора (для отключения стартера)

maksim
Offline
Зарегистрирован: 12.02.2012

Думаю стоит копать в сторону аппаратной части: нестабильное питание, не подтянутые входы и т.д. и т.п.

blink_977
Offline
Зарегистрирован: 10.08.2013

вот схема, эта плата уже работала успешно с атмегой, сейчас attiny+smd компоненты и не пашет

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

Дла начала я бы РЕСЕТ (1 пин) на питание притянул....

blink_977
Offline
Зарегистрирован: 10.08.2013

через резистор? попробую.... какой номинал?

axill
Offline
Зарегистрирован: 05.09.2011

Со схемой что то не то

вход 7805 висит в воздухе, а по идее должен быть запитан на бортовый 12в. К тому же воздуху прицеплена кнопка

maksim
Offline
Зарегистрирован: 12.02.2012

Поставьте около 5 кОм, что бы наверняка.

У 7805 еще и вход с выходом перепутаны, но я думаю это просто так схема нарисована, иначе вообще бы ничего не работало.

И, кстати, это скорее всего не только начало, а еще и конец поисков вашей причины.

blink_977
Offline
Зарегистрирован: 10.08.2013

поясняю: я использую 78L05 в SOT корпусе, на которую подается + через реле, управляемое внешним сигналом. 1 пин это выход +5в, 2 масса, 3 входное напряжение.   у меня в протеусе нет стабилизатора с такой распиновкой, поэтому я просто поменял местами выводы что бы в ARES они сидели правильно. попробю с ресетом и отпишусь...

maksim
Offline
Зарегистрирован: 12.02.2012

В протэусе все есть, можно к 78L05 добавить корпус и переназначить выводы.

blink_977
Offline
Зарегистрирован: 10.08.2013

поставил резистор на ресет... все работает, но при включении питания самопроизвольно включается ignition_pin, но это когда я на весу все включаю, у меня еще есть раньше сделанная макетная плата, так на ней все нормально работает.... не могу понять в чем разница?

иногда еще такие глюки замечаются: подносишь руку к контроллеру, и опять начинает игратся, включение-выключение :( что это тиньки такие капризные? такое может быть из за фильтров по питанию? у меня на стабилизаторе кондеры не стоят в данный момент?

 

......................................

кажется разобрался, нельзя напрямую нагружать выходи тиньки, даже светодиод включенный напрямую без резистора, вызывает глюки! такое же бы с реле подключеным напрямую, сейчас подключил через транзисторный ключ, вроде работает...

 

axill
Offline
Зарегистрирован: 05.09.2011

читайте даташит на стабилизатор. У них у каждого есть свои требования к конденсаторам, если требования не выполнить - будет сомавозбуждение с гулянием питания.

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

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

Неплохо-бы диод на обмотку реле, а то жалко тот контакт который его включает через 3-й пин коннектора.

Да и высоковольтные выбросы на выход стабилизатора совсем ни к чему...

Читайте про   Первый закон коммутации в

http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%...

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

Почему затворы транзисторов Q1 и Q2 не "прижаты" к земле 10 К резисторами?

axill
Offline
Зарегистрирован: 05.09.2011

trembo пишет:

Неплохо-бы диод на обмотку реле, а то жалко тот контакт который его включает через 3-й пин коннектора.

Да и высоковольтные выбросы на выход стабилизатора совсем ни к чему...

откуда там выбросы?) присмотрелся к схеме - в таком включении реле никогда не включится:

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

2. обмотка включена последовательно с резистором 10к, вы знаете электромагнитное реле с током срабатывания 1.2ма? я нет

blink_977
Offline
Зарегистрирован: 10.08.2013

реле которое я использую omron g5v-1, оно работает от 5 вольт и очень маленькое. я уже проверял: ток питания 12в резистор 10к, на обмотку идет примерно 4.7в и оно срабатывает.

axill
Offline
Зарегистрирован: 05.09.2011

как оно может сработать если его питание разорвано его же контактами?

blink_977
Offline
Зарегистрирован: 10.08.2013

на схеме неправильно, при разводке платы я поменял в аресе... R11 должен быть подключен к нижнему контакту, сначала я хотел на транзисторном ключе собрать, так и сделал но когда плата заглючила разобрал и решил сделать через реле 

sp34
Offline
Зарегистрирован: 05.03.2013

HWman пишет:

Почему затворы транзисторов Q1 и Q2 не "прижаты" к земле 10 К резисторами?

Тоже согласен с этой причиной на все сто , я ставлю даже намного выше номинал чем 10кОм :    510кОм  - 1.3мОм - что на P- канальные , что на N- канальные !

Резистор 10кОм pin1 > +5V

Позвольте полюбопытствовать , а оптроны вам зачем в этой схеме - все это можно замнить двумя резисторами сделав делитель !

xstramento
Offline
Зарегистрирован: 19.10.2013

sp34 пишет:
Позвольте полюбопытствовать , а оптроны вам зачем в этой схеме - все это можно замнить двумя резисторами сделав делитель !

исщё увы,  ни  TVS диодов ни варисторов на входах нет  :-((((((((

blink_977
Offline
Зарегистрирован: 10.08.2013

sp34 пишет:

HWman пишет:

Почему затворы транзисторов Q1 и Q2 не "прижаты" к земле 10 К резисторами?

Тоже согласен с этой причиной на все сто , я ставлю даже намного выше номинал чем 10кОм :    510кОм  - 1.3мОм - что на P- канальные , что на N- канальные !

Резистор 10кОм pin1 > +5V

Позвольте полюбопытствовать , а оптроны вам зачем в этой схеме - все это можно замнить двумя резисторами сделав делитель !

 я не настолько хорошо разбираюсь в электронике пока, потому то я и написал здесь все это, что бы советы полезные получить. все что я пока сделал, схему, плату и програмный код, все сделал сам, с нулевых знаний. может кто нибудь внесет необходимые изменения на схеме?

sp34
Offline
Зарегистрирован: 05.03.2013

1.Нужно знать , что приходит на резисторы R1 , R2 ( какие уровни и в какие моменты ) ?

2.Стабилизатор 78L05 и обмотка реле ( кстати резистор R11 там зачем ? ) - запитанны от куда АКБ ?

3.Естественно и над кодом надо еще работать - что будет например если ATtyni зависнет и будет постоянно крутить стартер ( бегом под капот отключать АКБ ? )

PS Обрисуйте полную картину по вопросам выше и далее уже будет разговор.

 

blink_977
Offline
Зарегистрирован: 10.08.2013

на R1 приходит +12в когда нажата педаль тормоза, это для того что бы сразу после включения реле зажигания включилось реле стартера, без нажатой педали тормоза включится только зажигание.

 на R2 приходит +12в когда двигатель заведется и на приборной панели гаснет индикатор зарядки, это для того чтобы автоматически отрубать реле стартера, даже если кнопка старта нажата.

R11 для того чтобы подать 12в на 5-и вольтовое реле, номинал в данный момент 330омм.

что касается зависания, эта же схема с этими же номиналами только на атмеге 328 почти год успешно проработала на моей машине, без единного глюка. кстати, с глюками я сегодня разобрался, виной всему с самого начала была шестиконтактная кнопка, которую я неправильно прозвонил, сейчас исправил и все работает. 

но все же хочется знать что бы вы поменяли на схеме?

xstramento
Offline
Зарегистрирован: 19.10.2013

blink_977 пишет:
но все же хочется знать что бы вы поменяли на схеме?
защитить все входные цепи TVS, а перед ними ппоставить резисторные делители.

sp34
Offline
Зарегистрирован: 05.03.2013

blink_977 пишет:

но все же хочется знать что бы вы поменяли на схеме?

Все правильно ответили , но добавлю немного конкретики.

Делаете делитель:  IN>2кОм + 1кОм>GND , к точки соединения этих резисторов подключаете вот такую TVS  SRDA05-4 сборку из 4-х каналов ( попробовать можно и без нее , работать будет) далее на вход ATtiny.

И сделайте то что описывал выше (подтянуть к GND входы полевиков , и к +5в reset)

PS Тиньку 85 не смотрел , но если в нем есть аналоговый вход то и вход > R2 вешаете на +12в ( при этом вот такой делитель IN>3кОм + 1кОм>GND) , а впрограмме указываете порог  сробатывания (примерно 750) по этому входу - что будет соответствовать ( что двигатель запущен ) при напряжении 13в и более.

про 78L05  не ответили   +12V откуда на него идет ?

blink_977
Offline
Зарегистрирован: 10.08.2013

reset я подтянул через резистор на 5.1 килоомм, транзисторы сделаю.

в тиньке аналогового входа нет, только цифровые. а 7805 получает 12в через 5 вольтное реле и от АКБ. реле управляется отрицательным сигналом с Аллигатора. система такая: как только я открываю машину пультом, сигналка включет реле ACC, тоесть первое положение ключа зажигания, а также эту плату, потом просто нажатие кнопки это зажигание а если с тормозом то зажигание с стартером. закрытием машины с пульта отключится и реле ACC.

как с програмным кодом? у меня такая проблема: когда с индикатора зарядки поступает 12в и кнопка старта нажата, на стартер идут импульсы, по крайней мере протеус так показывает и макет на светодиодах тоже, тоесть реле стартера не полностью отрубается. в реале это не имеет значения так так эти импулсы настолько слабы что не крутят стартер, но все же хочется знать из за чего это?

sp34
Offline
Зарегистрирован: 05.03.2013

Посмотрел ATtiny 85 - в ней 6 АЦП и 1 ЦАП - т.е есть аналоговые входы !

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

maksim
Offline
Зарегистрирован: 12.02.2012

sp34 пишет:

Посмотрел ATtiny 85 - в ней 6 АЦП и 1 ЦАП - т.е есть аналоговые входы !

Если не секрет где смотрели? ЦАПов, как таковых, даже на мегах нет, не говоря уже о тинях.

АЦП всегда один, а вот аналоговых входов может быть несколько.

Вот те выводы где написано ADCx и есть аналоговые входы. Так же не забывайте что так как у вас нет высоковольтного программатора ADC0 задействовать не получится. Итого 3 аналоговых входа.

 

blink_977
Offline
Зарегистрирован: 10.08.2013

так включается реле

sp34
Offline
Зарегистрирован: 05.03.2013

maksim пишет:

sp34 пишет:

Посмотрел ATtiny 85 - в ней 6 АЦП и 1 ЦАП - т.е есть аналоговые входы !

Если не секрет где смотрели? ЦАПов, как таковых, даже на мегах нет, не говоря уже о тинях.

АЦП всегда один, а вот аналоговых входов может быть несколько.

Вот те выводы где написано ADCx и есть аналоговые входы. Так же не забывайте что так как у вас нет высоковольтного программатора ADC0 задействовать не получится. Итого 3 аналоговых входа.

 

Не секрет  , здесь http://www.chipdip.ru/product/attiny85-20pu/ по ADC0 - получиться но только один раз !

Есть и ADC4 - встроенный сенсор температуры - программно вызывается ! так что - 5 ADC каналов есть!

DATASHIT - конечно не смотрел у меня нет тинек 85 , пока без надобности , а инфа в ЧипеДипе может быть и не достоверна согласен !

maksim
Offline
Зарегистрирован: 12.02.2012

Я вам даже больше скажу, тот кто это написал либо полный идиот, либо написал это специально с припиской "Внутренний" что бы дурить людей. Скланяюсь ко второму.

Дело в том что, да есть в тине ЦАП, но к этому ЦАПу нет никакого доступа, так как он является частью АЦП. А каналов у мультиплексора 5, но к ADC4 тоже нет никакого доступа, так как на нем висит датчик температуры. Откуда взялся шестой канал не ясно, может вход опорного напряжения ЦАПа посчитали за один канал.

Работает у тини АЦП примерно так:

  • АЦП последовательного приближения или АЦП с поразрядным уравновешиванием содержит компаратор, вспомогательный ЦАП и регистр последовательного приближения. АЦП преобразует аналоговый сигнал в цифровой за N шагов, где N — разрядность АЦП. На каждом шаге определяется по одному биту искомого цифрового значения, начиная от СЗР и заканчивая МЗР. Последовательность действий по определению очередного бита заключается в следующем. На вспомогательном ЦАП выставляется аналоговое значение, образованное из битов, уже определённых на предыдущих шагах; бит, который должен быть определён на этом шаге, выставляется в 1, более младшие биты установлены в 0. Полученное на вспомогательном ЦАП значение сравнивается с входным аналоговым значением. Если значение входного сигнала больше значения на вспомогательном ЦАП, то определяемый бит получает значение 1, в противном случае 0. Таким образом, определение итогового цифрового значения напоминает двоичный поиск. АЦП этого типа обладают одновременно высокой скоростью и хорошим разрешением. Однако при отсутствии устройства выборки хранения погрешность будет значительно больше (представьте, что после оцифровки самого большого разряда сигнал начал меняться).

или так:

  • АЦП дифференциального кодирования (англ. delta-encoded ADC) содержат реверсивный счётчик, код с которого поступает на вспомогательный ЦАП. Входной сигнал и сигнал со вспомогательного ЦАП сравниваются на компараторе. Благодаря отрицательной обратной связи с компаратора на счётчик код на счётчике постоянно меняется так, чтобы сигнал со вспомогательного ЦАП как можно меньше отличался от входного сигнала. По прошествии некоторого времени разница сигналов становится меньше, чем МЗР, при этом код счётчика считывается как выходной цифровой сигнал АЦП. АЦП этого типа имеют очень большой диапазон входного сигнала и высокое разрешение, но время преобразования зависит от входного сигнала, хотя и ограничено сверху. В худшем случае время преобразования равно Tmax=(2q)/fс, где q — разрядность АЦП, fс — частота тактового генератора счётчика. АЦП дифференциального кодирования обычно являются хорошим выбором для оцифровки сигналов реального мира, так как большинство сигналов в физических системах не склонны к скачкообразным изменениям. В некоторых АЦП применяется комбинированный подход: дифференциальное кодирование и последовательное приближение; это особенно хорошо работает в случаях, когда известно, что высокочастотные компоненты в сигнале относительно невелики.

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

sp34
Offline
Зарегистрирован: 05.03.2013

maksim - меня заинтересовал внутренний сенсор температуры , нет ли данных - что он может и действительно ли програмно можно вызвать его показания прописав коде A4 - актуально если нужно разово выполнить действие по температуре пока камень не изменил свою температуру после включения !

maksim
Offline
Зарегистрирован: 12.02.2012

sp34 пишет:

програмно можно вызвать его показания прописав коде A4

Нет. 

Если точность +/-10 градусов (при однократном измерении) вас устроит, то нужно все биты MUX[3:0] в регистре ADMUX установить в единицы. 

sp34
Offline
Зарегистрирован: 05.03.2013

maksim пишет:

sp34 пишет:

програмно можно вызвать его показания прописав коде A4

Нет. 

Если точность +/-10 градусов (при однократном измерении) вас устроит, то нужно все биты MUX[3:0] в регистре ADMUX установить в единицы. 

А какова тогда  задача термо-датчика в камне - чисто для внутренних нужд ?

axill
Offline
Зарегистрирован: 05.09.2011

датчик есть почти во всех более менее последних разработках AVR8 к коим относится tiny85, если сравнить ее с tiny13 то от внешней схожести не останется и следа. tiny85 например имеет встроенный генератор на 16мгц. Термометр наверно придумали для внутрисхемных нужд, например контролировать выход режима работы самого МК за пределы доспустимого. Проблема в использовании этого датчик для измерения окружающей температуры не в точности самого датчика, а в том, что МК как любой электрический прибор при работе нагревается

blink_977
Offline
Зарегистрирован: 10.08.2013

кажется у меня в коде что то не так :( когда я подключаю оптроны, контроллер отказывается работать до сброса... при подаче уровней на R1 и R2, зависает тинька. а на светодиодном макете то как работает тогда??

sp34
Offline
Зарегистрирован: 05.03.2013

blink_977 пишет:

кажется у меня в коде что то не так :( когда я подключаю оптроны, контроллер отказывается работать до сброса... при подаче уровней на R1 и R2, зависает тинька. а на светодиодном макете то как работает тогда??

Что то не состыковочка - писали что год отработала без проблем !

У меня есть интерес к запуску авто с кнопки , но буду делать на ATtiny13 и чуть позже.

blink_977
Offline
Зарегистрирован: 10.08.2013

схема да,  а вот код я сначала переписал недавно.... нашел старый код, где запуск осуществляется одним нажатием, сегодня проверю...

blink_977
Offline
Зарегистрирован: 10.08.2013
int startbutton = 0;
int ignition_pin = 1;
int starter_pin = 2;
int brake_pin = 3;
int alt_pin = 4;

long time;

int button_state = 0;
int brake_state = 0;
int alt_state = 0;

void setup(){
pinMode(startbutton, INPUT);
pinMode(ignition_pin, OUTPUT);
pinMode(starter_pin, OUTPUT);
pinMode(brake_pin, INPUT);
pinMode(alt_pin, INPUT);
}

void ignition(){
if(digitalRead(8) == HIGH&&button_state == 0){
digitalWrite(9,!digitalRead(9));
button_state=1;
}
if(digitalRead(8)==LOW&&button_state==1){
button_state=0;

}
}

void start(){
if(digitalRead(8) == HIGH&&button_state == 0){
digitalWrite(9,!digitalRead(9));
button_state=1;
delay(500);
digitalWrite(starter_pin, HIGH);
}
if(digitalRead(8)==LOW&&button_state==1){
button_state=0;
}
}


void loop(){
  brake_state = digitalRead(brake_pin);
  if(brake_state == LOW){
  ignition();
  }
  if(brake_state == HIGH){
  start();
  }
  alt_state = digitalRead(alt_pin);
  if(alt_state == HIGH){
  digitalWrite(starter_pin, LOW);
  }
}

с этим кодом тинька совсем не подает признаков жизни, атмега работает :( с пинами может быть проблема?

maksim
Offline
Зарегистрирован: 12.02.2012
int startbutton = 0;
int ignition_pin = 1;
int starter_pin = 2;
int brake_pin = 3;
int alt_pin = 4;

long time;

int button_state = 0;
int brake_state = 0;
int alt_state = 0;

void setup(){
pinMode(startbutton, INPUT);
pinMode(ignition_pin, OUTPUT);
pinMode(starter_pin, OUTPUT);
pinMode(brake_pin, INPUT);
pinMode(alt_pin, INPUT);
}

void ignition(){
if(digitalRead(8) == HIGH&&button_state == 0){
digitalWrite(9,!digitalRead(9));
button_state=1;
}
if(digitalRead(8)==LOW&&button_state==1){
button_state=0;

}
}

void start(){
if(digitalRead(8) == HIGH&&button_state == 0){
digitalWrite(9,!digitalRead(9));
button_state=1;
delay(500);
digitalWrite(starter_pin, HIGH);
}
if(digitalRead(8)==LOW&&button_state==1){
button_state=0;
}
}


void loop(){
  brake_state = digitalRead(brake_pin);
  if(brake_state == LOW){
  ignition();
  }
  if(brake_state == HIGH){
  start();
  }
  alt_state = digitalRead(alt_pin);
  if(alt_state == HIGH){
  digitalWrite(starter_pin, LOW);
  }
}

 

blink_977
Offline
Зарегистрирован: 10.08.2013

невнимательность.... :(

в других кодах у меня пины именами назывались, потому и пропустил

 

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

А Вы знаете что комбинация клавиш Ctrl + t в среде Arduino облегчает Вам жизнь и другим? :)

Я вот уже завёл привычку перед Ctrl + s нажимать Ctrl + t, а это делаю очень часто, особенно когда часть кода работает как надо.

Сила привычки.

 

Кстати, у Вам переменная time не используется, а тип long довольно прожорлив к памяти.

axill
Offline
Зарегистрирован: 05.09.2011

HWman пишет:

Кстати, у Вам переменная time не используется, а тип long довольно прожорлив к памяти.

все что неиспользовано линкером и компилятором выбрасывается

переписывал тут библиотеку с ардуино на Atmel studio - много узнал нового про качество написания кода )) по умолчанию в atmel studio высвечивается много всяких интересных предупреждений. И если скажем лишняя переменная не скажется на работе программы, то вот присвоение занчение переменной при котором происходит обрезание значения - вот это уже проблема. В ардуино ничего этого не видно при компиляции, хотя может это где то включается?

blink_977
Offline
Зарегистрирован: 10.08.2013
int startbutton = 0;
int ignition_pin = 1;
int starter_pin = 2;
int brake_pin = 3;
int alt_pin = 4;

long time;

int button_state = 0;
int brake_state = 0;
int alt_state = 0;

void setup(){
pinMode(startbutton, INPUT);
pinMode(ignition_pin, OUTPUT);
pinMode(starter_pin, OUTPUT);
pinMode(brake_pin, INPUT);
pinMode(alt_pin, INPUT);
}

void ignition(){
if(digitalRead(startbutton) == HIGH&&button_state == 0){
digitalWrite(ignition_pin,!digitalRead(ignition_pin));
button_state=1;
}
if(digitalRead(startbutton)==LOW&&button_state==1){
button_state=0;

}
}

void start(){
if(digitalRead(startbutton) == HIGH&&button_state == 0){
digitalWrite(ignition_pin,!digitalRead(ignition_pin));
button_state=1;
delay(500);
digitalWrite(starter_pin, HIGH);
}
if(digitalRead(ignition_pin)==LOW&&button_state==1){
button_state=0;
}
}


void loop(){
  brake_state = digitalRead(brake_pin);
  if(brake_state == LOW){
  ignition();
  }
  if(brake_state == HIGH){
  start();
  }
  alt_state = digitalRead(alt_pin);
  if(alt_state == HIGH){
  digitalWrite(starter_pin, LOW);
  }
}

исправил вроде, но тинька опять не пашет, атмега - да.

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

Этот код вообще может поместиться в тиньку13 ,только оптимизировать немного...

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

Даже без оптимизации Размер скетча в двоичном коде: 698 байт (из 1 024 байт максимум).

http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie?page=1#comment-42790

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

HWman пишет:

Даже без оптимизации Размер скетча в двоичном коде: 698 байт (из 1 024 байт максимум).

http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie?page=1#comment-42790

Да ,точно ,не пробовал компилировать по тиньку13 :)

А,так я бы ещё константы через дефенед переделал -ещё бы меньше было..

blink_977
Offline
Зарегистрирован: 10.08.2013

можете сказать почему в 85-ой тиньке не работает?

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

Всеравно похоже на проблемы в электрике , может питание ей не нравится ,я бы электролит попробовал поставить на выходе 7805 .

atmega328 работала голая или в составе платы ардуино ??

 

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

blink_977 пишет:

можете сказать почему в 85-ой тиньке не работает?

А банальный  Debounce работает?