AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
06.08.2016, 23:36
|
#91
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от Alex9797
|
А можно их перечислить, все четыре? И с описанием каждого. Пусть описания будут хоть краткими, но чтобы при этом понятно было, что там в них происходит.
|
Я их в течении месяца мучаю, и описать не смогу - мозг поплыл уже. Есть куски кода программы. Могу так привести пример...
1 пример это тот что сейчас.
2 пример - тот что раньше делал. я его тут раньше вылаживал на страницах 2-5 наверно... гдето так...
3 - я заводил на вход INT0 считал количество импульсов и потом вычислял.(этот способ само стабильно работал, но медленно) вот он ))
Сообщение от makakus
|
rpm=((tahom[0]*16)+(tahom[1]*16)+(tahom[2]*16)+(tahom[3]*16)+(tahom[4]*16)+(tahom[5]*16)+(tahom[6]*16)+(tahom[7]*16)+
(tahom[8]*16)+(tahom[9]*16)+(tahom[10]*16)+(tahom[11]*16)+(tahom[12]*16)+(tahom[13]*16)+(tahom[14]*16)+(tahom[15]*16)+
(tahom[16]*16)+(tahom[17]*16)+(tahom[18]*16)+(tahom[19]*16));
};
|
4 - он был на много раньше. Тоже заводил на вход INT0 и как то вычислял. Уже не помню....
Главное что если подаю частоту любую на вход - всё четко измеряет как на осциллографе. А на тахометре не хочет работать. Завтра точно проверю в гараже на осциллографе какой там сигнал...
Последний раз редактировалось miwutka; 07.08.2016 в 01:23.
|
|
|
|
07.08.2016, 08:54
|
#92
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от miwutka
|
Главное что если подаю частоту любую на вход - всё четко измеряет как на осциллографе. А на тахометре не хочет работать. Завтра точно проверю в гараже на осциллографе какой там сигнал...
|
Всем привет. Посмотрел я твой файл, miwutka, я вообще удивляюсь, как он работает. Ты всю программу со всеми функциями загнал в прерывания, а главный цикл пустой. Но,если от генератора частоты работает нормально, тогда попробуй включить подавление помех при захвате.
Установи в регистре TCCR1B бит ICNC1 вместо ICES1, он у тебя там установлен два раза. Тогда у тебя захват не произойдет, если в течении 4 тактов процессора на входе не будет установившегося высокого уровня.
И ты не представляешь, как трудно что-либо понять, когда даже в комментариях у меня "крякозяблы".
Лучше выложи картинку схемы подключения, тогда можно будет что-то другое думать.
Цитата:
|
почему то всё что пишу в основном цикле - не выполняется.....
|
Если честно, я бы удивился, если бы оно выполнилось. У тебя три прерывания и все они забиты не только макросами, но уже и функциями не считая обычных инструкций. Помнится makakus писал, что за такие прерывания надо жечь на медленном огне, так это и есть тот огонь который мозги плавит. А вообще-то старайся не копипастить, а что-то свое придумывать и стараться не прописывать код в портянку, а прописывать функциями и макросами. Разобрать по отдельности будет намного проще. И твоя программа будет читаться просто как книжка.
Последний раз редактировалось МВА; 07.08.2016 в 09:32.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо МВА за это сообщение:
|
|
|
07.08.2016, 12:15
|
#93
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
прерывания очистил ))
PHP код:
|
ISR(TIMER0_OVF_vect) { tim1_temp++; };
ISR(TIMER1_OVF_vect) { N=0xFFFF; speed_sr=0; }
ISR(TIMER1_CAPT_vect) { N = ICR1; TCNT1=0; flag=1; }
while(1) //в основном цикле так... { if (tim1_temp == 5 ) { if (OCR2 › 175) OCR2--; tim1_temp=0; } V=Math(N, T_clc_time, N_V); LED_bar(V);//пока без интегрирования отображение speed_temp+=V;//тут интегрируем i_speed++; if (i_speed == 10) { i_speed=0; speed_sr=speed_temp*0.1; speed_temp=0; } //LED_bar(speed_sr);//интегрированное значение }
|
вот такие они стали. Чтобы зря дрова не палить, и печь не разжигать )) Всё остальное теперь в основном цикле работает. А ведь давно уже сталкивался с такой проблемой.... Я на начальной стадии постоянно вот так некрасиво пишу код, как попало... Но на стме изначально пишу покрасивее )) Теперь поеду проверять в гараже, если и после этого будет глючить....
Последний раз редактировалось miwutka; 07.08.2016 в 12:18.
|
|
|
|
07.08.2016, 12:37
|
#94
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: Спидометр атмега 8
Ну, это уже лучше, только интегрирование в цикле у тебя будет выполнятся с одним значением. Заверни интегрирование в функцию, создай флаг типа bool, флаг устанавливай в прерывании по захвату, а сбрасывай внутри функции. А то у тебя сейчас в главном цикле будет усредняться одно значение скорости, так, как обновления не будет пока не произойдет захват. Кстати, функцию подсчета скорости, тоже можно запускать по этому флагу. Не зачем контроллеру пересчитывать все время одно и тоже. Только функцию подсчета писать выше функции интегрирования.
P.S. Да, сбрасывать флаг лучше не в функции, потому, что функцию можно сохранить в библиотеку и использовать в других местах, а внутри тела функции if(F), в которой будешь вызывать свои функции по флагу.
Последний раз редактировалось МВА; 07.08.2016 в 12:42.
|
|
|
|
07.08.2016, 12:53
|
#95
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
Подправил. Всё на много стабильнее стало работать..... ![Учучь на ошибках](images/smilies/icon_fingal.gif)
Сейчас пойду проверю в машине. Благо вайфай достает до машины....
|
|
|
|
07.08.2016, 13:31
|
#96
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от miwutka
|
t=125000/z;
speed=t*0.6;
rpm=speed;
|
скажи, пожалуйста, что означает этот код.
|
|
|
|
07.08.2016, 14:03
|
#97
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
Signalshik2, это я так скорость считал. Теперь надо переделывать. Так не буду использовать...
МВА, включил фильтр ICNC1 и интегрирование - всеравно индикация дергается также..... Любо надо осциллографом глянуть что там происходит с сигналом от катушки, либо нужен какойто фильтр хитрый... Потому что у автора который в ютубе делал всё отлично работает. Но у него динамическая индикация без рагистров сдвига, а я на регистрах решил сделать. Но думаю индикация погоды не строит....
Теперь буду думать что еще надо.....
|
|
|
|
07.08.2016, 14:03
|
#98
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от Signalshik2
|
скажи, пожалуйста, что означает этот код.
|
Я ему задавал этот вопрос в 76 посту он отвечал в 77-м.
Сейчас он вместо этого использует функцию Math(), которую я выложил в файле Tacho.
Цитата:
|
МВА, включил фильтр ICNC1 и интегрирование - всеравно индикация дергается также..... Любо надо осциллографом глянуть что там происходит с сигналом от катушки, либо нужен какойто фильтр
|
Сейчас посмотрю, на асме я точно делал фильтр, который работает стопудово, а на СИ не помню, если есть выложу, если нет наборсаю.
Последний раз редактировалось МВА; 07.08.2016 в 14:06.
|
|
|
|
07.08.2016, 14:22
|
#99
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
МВА, не думаю что чтото с железом может быть..... я сигнал с катушки подключил как тут http://avtoelectro.radioliga.com/dev...ch/an_tach.gif через транз, стабилитрон, только конденсатор С8 не подключал. Незна что он может дать..... Может в нем дело...?
Я делал трехфазный регулятор мощности на атмеге 8. И у меня он пропускал импульсы на управление которые шли. Поставил атмегу 328. Код скопипастил ничего не меняя. Ну только регистры подправил. И импульсы шли идеально.... Незнаю почему так по сей день ))) Ну не думаю что тут надо на 328-ую менять )))) Мне тогда проще наверно будет на стм32 платку маленькую сделать))) Но надо с этим разобраться.....
Кварц использую внутренный. Может ли быть из-за того что не внешний? Когда делал регулятор мощности 1-фазный там инпульсы не совсем стабильные были при внутреннем тактировании. Постави внешний кварц и стали как вкопаные...
Последний раз редактировалось miwutka; 07.08.2016 в 14:43.
|
|
|
|
07.08.2016, 15:27
|
#100
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от МВА
|
- сконфигурируй вход захвата, как выход
|
ножку ICP1 сделать выходом?
Сообщение от МВА
|
- подключи эту ножку к функции
|
эту ножку как вход сконфигурировать? Я выбрал PORTD.2
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:09.
|
|