Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер-счётчик на WinAVR под Mega48 
:(
    Опции темы
kaspersky89
Дата 7.12.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Помогите плиз с исходником примера как сосчитать импульсы поступающие на вход контроллера а потом в зависимомти от частоты выдавать на определённой ноге логическую1 или 0. ОООЧЕнь нужно.
PM MAIL   Вверх
kaspersky89
Дата 7.12.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Тут все ведь такие умные и опытные в программинге МК. Очень нужно в ближайшие часы исходник. Может влом кому ламеру помогать,но ё-моё вспомните себя когда зелёными такимиже были smile 
PM MAIL   Вверх
kaspersky89
Дата 8.12.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Я то думал форум про программистов контроллеров, а тут.......  Ладно пацаны, на каждого найдётся свой кирпич. Если я лох в контроллерах и прерываниях, то это не значит что надо забивать на это.
PM MAIL   Вверх
cardinal
Дата 8.12.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Посмотри вот этот пример
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=33571
Там есть исходник. Там считаются импульсы и потом из них считается частота...

Добавлено через 26 секунд
И не надо плодить всякие ненужные сообщения...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kaspersky89
Дата 9.12.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



 cardinal   извини если флудил не по теме, просто нервишки не к чёрту. Попробую прогрызть тот исходник который по твоей ссылке. smile 
PM MAIL   Вверх
kaspersky89
Дата 10.12.2007, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Короче мужики, выручите кому невлом, тут схемку скинул, в ней номиналы ещё не проставил да и так пару косяков найдётся. Нужен исходник на WinAVR, на INT0 меги подаются импульсы с катушки зажигания, их типо нужно сосчитать, а по другому таймеру через секунду подсчёт, и вывод логической 1 или 0. Остальное доделаю сам, Я понимаю конечно тупая задача, но так уж вышло что времени в обрезю Это тестовая схема, см потом доделаю и еепром и кнопки и дисплей.

user posted image
PM MAIL   Вверх
Mazzi
Дата 10.12.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Найдутся те кому не в лом  если за бабки..  smile 


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
kaspersky89
Дата 10.12.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Mazzi Реально гворишь, Наши россияне как американцы уже, без бабок даже прикурить спичек не дадут блин smile  20-30 факинговых строчек кода ито проплачивать надо. Жаль. smile 
PM MAIL   Вверх
cardinal
Дата 10.12.2007, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



kaspersky89, чтобы написать эти факинговые 20-30 строк кода надо посидеть пару лет и бесплатно погеморроится. Тебе не кажется, что если вот так рассуждать, то можно и на поезде без билета ездить и объяснять это тем, что поезд ведь все равно туда едет, что трудно меня прихватить. Так что ты не прав!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Lazin
Дата 10.12.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 3
Всего: 154



kaspersky89, могу предложить такой вариант: ты берешь свою схему, определяешь где входы-выходы, пишешь код для настройки ножек контроллера. Понять что для работы с портом B нужны регистры PORTD и DDRD, и научиться их использовать не трудно. В общем нужно разобраться что туда записать. Затем нужно настроить прерывание по INT0, на срабатывание по нужному фронту импульса, и разрешить его. Далее нужно настроить таймер 0 на работу в нормальном режиме. После этого останется реализовать логику, а это элементарно, просто увеличивай значение счетчика при каждом новом импульсе, по прерыванию от таймера управляй выводами, и все.
Примеры программ и доки есть в дистрибутиве WinAvr, за то время что тема существует уже мог бы и прочитать))
Я могу выложить пример работы с таймером, и то только потому, что он есть в одном из моих проектов
Код

TCCR0=0x00; //stop
ASSR=0x00; //set async mode
TCNT0=0xC0; //set count
OCR0=0x40;
TCCR0=TIMER0_CLK; //start timer

ISR(TIMER0_OVF_vect)
{             
}

PM MAIL Skype GTalk   Вверх
kaspersky89
Дата 10.12.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



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

Lazin ***********************************************************
TCCR0=0x00; //stop
ASSR=0x00; //set async mode
TCNT0=0xC0; //set count
OCR0=0x40;
TCCR0=TIMER0_CLK; //start timer

ISR(TIMER0_OVF_vect)
{             
}
*********************************************************************
Kaspersky89******************************************************
// прерывание импульсами от катушки зажигания
INTERRUPT (SIG_INTERRUPT0) {

    //останавливаем счетчик 1
    TCCR0 = 0;

    //записываем замеренное значение в переменную типа INT
    oboroty = TCNT0;

    //увеличиваем счетчик на единицу
     oboroty++;
    
    //обнуляем и запускаем счетчик 1
    TCNT0 = 0;
    TCCR0 = 0x05;
*******************************************************************

У меня два вопроса:

Правильно ли я настроил прерывание на ногу INT0 ?
Lazin  как из твоего примера настроить таймер на 1 секунду чтобы из него колдовать с подсчитанными оборотами


P.S. Заранне извиняюсь если туплю чего, и путаюсь в терминах.

PM MAIL   Вверх
kaspersky89
Дата 10.12.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Решил на форуме продолжать свой проект по мере его развития.

Если что, Модератор всегда может его удалить(кстати насчёт бесплатного проезда в поезде, было дело катался  по стране автостопом на фурах, типа курс выживания молодога бойца с ночёвкой в чистом поле smile ,красота,  проехал бесплатно, и впечатлений набрался и проехал на халяву, правдо пневматический друг всегда был при  себе всё таки в России живём)

Тут добавил окончательный вариант тестовой схемы(назовём её ver0.1)

Сегодня в Eagl-е сделаю печатку, завтра спаяю, и надеюсь напишу программу для Меги48(благо программа  для тестовой версии будет небольшая попробую написать) если кто поможет буду только рад smile smile , жаль пиво   бандеролью в благодарность кодэрам которые мне помогают не выйдет отослать.

<a href="http://ipicture.ru/Gallery/Viewfull/162523.html" target="_blank"><img src="http://ipicture.ru/uploads/071210/thumbs/Ur55DIDM2F.jpg"</img></a>
PM MAIL   Вверх
kaspersky89
Дата 11.12.2007, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Знаю что достал всех своим ламерством, но situation.

Тут скидываю файл с плохим, но всё-же качеством, это PCB-фотка из Eagle, плата односторонняя, автоматическая разводка выполнилась только на 71%, а остальное пришлось самому, вручную на перемычках доделывать.
user posted image


!!! ОГРОМНЕЙШАЯ ПРОСЬБА !!! Если вдруг, ктонить забредёт, и по какомуто невероятному случаю захочет мне помочь, то благодарности моей не будет границ. 
  
Схему то я сегодня ночью буду делать, напечатал уже, потом утюг, сверло и т.д. Попробую работать как можно тише, соседи злые(но иногда они меня достают,и тогда в отместку ночью включаю свой ламповый комбик в него электро-гитару и Ария с Кипеловым снова оживает smile ), нужно обязатьльно успеть к завтрашнему утру, полностью собрать и запрограммировать схему. Как говориться всё или ничего, быть или не быть, со щитом а может быть на щите, назад пути нет а впереди одна Ж.... .

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

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

Это так,  для философских рассуждений за хорошей закусью и и стаканом водки.

P.S. Я по приколу и свою фотку скинул, что то отмечали, косячили рок, а тут цифрофик под руками 
оказался.

user posted image




PM MAIL   Вверх
Lazin
Дата 12.12.2007, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 3
Всего: 154



Цитата(kaspersky89 @  10.12.2007,  18:13 Найти цитируемый пост)
Lazin  как из твоего примера настроить таймер на 1 секунду чтобы из него колдовать с подсчитанными оборотами

Зависит от частоты кварц. генератора. 
Цитата(kaspersky89 @  10.12.2007,  18:13 Найти цитируемый пост)
Правильно ли я настроил прерывание на ногу INT0 ?

Я вообще не понял что ты написал, в WinAVR используется макрос ISR()  для определения прерываний. Для int0 он выглядит так
Код

#include <avr/interrupt.h>

ISR(INT0_vect)
{
}

помимо этого прерывание нужно разрешить.
Цитата(kaspersky89 @  11.12.2007,  23:39 Найти цитируемый пост)
Если не поможет мне никто сегодня и не напишет программу, то так тому и быть, буду в гордом одиночестве пополняя запасы кофе в желудке работать мозгами и руками пока не свалюсь спать.

Поверь мне, все через это прошли smile

Добавлено через 2 минуты и 46 секунд
WinAVR Tutorials
PM MAIL Skype GTalk   Вверх
kaspersky89
Дата 12.12.2007, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Lazin Респект тебе. Наставил меня хоть на путь истиный, типа по нужному вектору прерывания начал думать мозг(точно крыша уже едет smile ). Доделаю сегодня к вечеру проект, и скину исходники. С преподом кое-как отбрехался до завтрого.
Препёрло значит прийдётся сделать.

Так один раз директор ко мне подходит и говорит, "если через два дня не будет программы, то у меня на столе будет лежать приказ о твоём отчислении" я вообще в шоке минуты две на одном месте как зомби стоял,(а программа эта в Blitz3D территория колледжа нашего с физикой и спец эффектами, я застрял както из за сложности проекта) так потом все чакры на связь с космосом открылись, сразу и алгоритмы в голове появились, и фотошоп с 3Дмаксом только и летали к моему процессору на обработку графики smile   

После этого случая выработался эммунитет на  подушку, а сплю теперь в маршрутке, благо дорога минут 40 гдето  smile  
PM MAIL   Вверх
kaspersky89
Дата 24.12.2007, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Тут пытался колдовать с прерываниями

на INT0 от внешнего положительного импульса происходит прерывание, переменная ROT увеличивается на единицу, а в подпрограмме которая запускается в цикле 
for (;;) {
klapan_on_off();
         }  
в зависимости от числа в переменной ROT устанавливается 1 или 0 на одну из ног порта.

проблема в том что диод на ноге загорается не после пяти прерываний на ноге INT0 а сразу же.


В следствии чего вопрос как настроить таимер на увеличение сётчика по внешнему прерыванию. Из каких регистров считывать значение, как их обнулять. А то информации много, а пока разберусь крыша поедет. smile 
(Покромсайте этот код если кто помочь захочет.)  smile 
*******************************************************************************
#include <avr/io.h>  
#include <avr/interrupt.h> 
#include <avr/stdint.h> 
#include <stdlib.h>
#include <avr/signal.h>
#include <avr/wdt.h>
#include <math.h>
#include <inttypes.h>


void IO_init(void); 
void interrupt_init(void); 
void klapan_on_off(void);


char lecture,out,clock,vcap; 
volatile uint8_t rot;

int main(void) 
{    
rot=0;
   IO_init();       
    interrupt_init(); 
   
   for (;;) {
    klapan_on_off();
    }     

   return(0);    


void IO_init(void) 

   DDRD=0x00;  //set all pin of PORTD as input 
     DDRB=0xFF;  //set all pin of PORTB as output 
   DDRC=0xFF;  //set all pin of PORTB as output 


void interrupt_init(void) 
{    
   EICRA=0x0F; //Настройка прерываний INT0 and INT1 , прерывание происходит при высоком уровне сигнала(лог1)
   EIMSK=0x03;   
   SREG=0x82;   


ISR(INT0_vect) 

 rot++;


ISR(INT1_vect) 

    PORTB=0<<PB1;


void klapan_on_off(void)
{
if (rot==5){
 PORTB=1<<PB1;
 }
}
PM MAIL   Вверх
cardinal
Дата 24.12.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99




M
cardinal
Пользуйся тегом "код"!


1. По прерыванию INT1 все правильно происходит? Диод гаснет?
2. Уверен, что дребезга на INT0 нет?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kaspersky89
Дата 24.12.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Набросал тут схему, и мне кажется с транзистора на INT0 наверно реально дребезг идёт, как мне потделать схему?
user posted image
PM MAIL   Вверх
cardinal
Дата 24.12.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Посмотри рис. 4.7

И еще как вариант можешь глянуть на рис. 285. Думаю тоже пойдет...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kaspersky89
Дата 25.12.2007, 03:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Кстати в ходе экспириментов возник ещё один вопрос, а экранирует ли кто микруху, а то по моему на входные ноги МК очень сильно действуют наводки, т.е. наверно нужна оптимизированая разводка платы(кратчайшие пути) + постройка входного каскада с учётом этого бага.

У кого какие мысли?
PM MAIL   Вверх
cardinal
Дата 25.12.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(kaspersky89 @  25.12.2007,  02:59 Найти цитируемый пост)
а экранирует ли кто микруху

А кто там есть?

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


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kaspersky89
Дата 25.12.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



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


user posted image
PM MAIL   Вверх
kaspersky89
Дата 26.12.2007, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Наконецто свершилось ЧУДО!!! Поставил защиту от дребезга на двух резисторах и конденсаторе, а также для дополнительной защиты старую микруху 155ЛН2 .  Теперь работает как часы, всё точно и чётко. После определённого количества нажатий происходит нужное мне событие.

ПАНАЦЕЯ ОТ ВСЕХ ПРОБЛЕМ - ПРОСТЕЙШАЯ ЗАЩИТА ОТ ДРЕБЕЗГА!!!

   Смысл защиты от дребезга прост, он фрмирует короткий отрицательный импульс длительностью гдето 7нано или мили секунд (сорри забыл). есть ссылка в этой ветке на описание этой схемы с временными диаграммами. сейчас обьяснять и писать лень.
   

Ещё разбирался с даташитом на Mega48 хорошо что английский неплохо знаю(даже собираюсь в Канаду на подработку свалить) там регистр весьма интересный и подлый smile Status Register-SREG который много чего может подпортить в системе.

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

И тутже код на WinAVR который на данном этапе полностью функционален.

Большая работа проделана(по крайней мере для меня полного новичка в МК и регистрах), подучил Си-шник, что такое регистры и т.д. 

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

Дальше будет больше, Теперь надо разбираться с таймером по переполнению, 16-битный или 8-битный, делитель на 1025, 256 и т.д. Покачто обовсём этом я имею смутное представление , так что надо изучать. Надеюсь до нового года успею всё сделать, иначе после празднованья и веселья наверно умрут последние мозговые клеткки окончательно smile 

user posted image

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

Код

// header file 
#include <avr/io.h>  
#include <avr/interrupt.h> 
#include <avr/stdint.h> 
#include <stdlib.h>
#include <avr/signal.h>
#include <avr/wdt.h>
#include <math.h>
#include <inttypes.h>
#include<avr/sleep.h>

#define F_CPU 1000000UL //1MHz

void IO_init(void); 
void interrupt_init(void); 
void klapan_on_off(void);


char lecture,out,clock,vcap; 
volatile uint8_t rot;

int main(void) 
{    
rot=0;
   IO_init();       
    interrupt_init(); 
   
   for (;;) {
    klapan_on_off();
    }     

   return(0);    


void IO_init(void) 

   DDRD=0x00;  //set all pin of PORTD as input 
     DDRB=0xFF;  //set all pin of PORTB as output 
   DDRC=0xFF;  //set all pin of PORTB as output 


void interrupt_init(void) 
{    
   EICRA=0b00000010; 
   EIMSK=0b00000001;   
   SREG=0b10000000;   //default 82


ISR(INT0_vect) 

rot++;



void klapan_on_off(void)
{
if (rot>5){
 PORTB=1<<PB1;
 }



PM MAIL   Вверх
kaspersky89
Дата 26.12.2007, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Меня смущает ещё конденсатор на входном каскаде, будут ли через него проходить импульсы, и зачем он там вообще нужен(просто тупо скопировал из одной схемы)?

Может его вообще убрать?

Я поставил красный фирмовый кондёр WIMA на 0.1mf
PM MAIL   Вверх
cardinal
Дата 26.12.2007, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Форматируй нормально код, чтобы читался и выбирай правильную подсветку кода!
Цитата(kaspersky89 @  26.12.2007,  00:46 Найти цитируемый пост)
Теперь надо разбираться с таймером по переполнению, 16-битный или 8-битный, делитель на 1025, 256 и т.д.

1024
Цитата(kaspersky89 @  26.12.2007,  01:11 Найти цитируемый пост)
Меня смущает ещё конденсатор на входном каскаде

Думаю объяснение тоже как и здесь
http://electronix.ru/forum/index.php?s=&am...st&p=298189

А вообще: поздравляю! smile 



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Den64
Дата 26.12.2007, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



Первый раз прочитал эту тему.... Както игнорировал всегда... Название наверно неинтересное. Если б было названо: "Устройство для ..." или "Схема таковато устройства".


Цитата

  Меня смущает ещё конденсатор на входном каскаде, будут ли через него проходить импульсы, и зачем он там вообще нужен(просто тупо скопировал из одной схемы)?

Может его вообще убрать?

  Меня вобще смущает вся схема...  Я б поставил 2 RC ФНЧ последовательно и усилитель на одном транзисторе...

  А какие переметры импульсов? (Форму импульсов видел на рисунке)
  И какие параметры катушки зажигания?

Добавлено через 3 минуты и 34 секунды
По идее схема хорошо должна пропускать дребезг а не полезный сгнал...
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
kaspersky89
Дата 26.12.2007, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Цитата

Меня вобще смущает вся схема...  Я б поставил 2 RC ФНЧ последовательно и усилитель на одном транзисторе...


Поверь мне, я на экспириментах с фнч по твоей идее спалил пару транзисторов(ставил и транзистор с фнч и наоборот вариантах в 5-ти гдето), изуродовал печатку, а в результате дребезг так и шёл, 

так что единственно рабочий вариант правдо опробованый пока-что только от кнопки это последняя схема входного каскада

А полную печатку первого варианта сейчас делаю , через пару часов скину на эту ветку

Добавлено через 3 минуты и 3 секунды
Цитата

А какие переметры импульсов? (Форму импульсов видел на рисунке)
  И какие параметры катушки зажигания?


Форму импульсов смотри в посте выше там до 300в гдето сигнал с ужасным дребезгом
PM MAIL   Вверх
Lazin
Дата 26.12.2007, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 3
Всего: 154



Можно использовать какой-нить фильтр низких частот, а потом формирователь импульсов (хотя-бы триггер шмидта).
PM MAIL Skype GTalk   Вверх
kaspersky89
Дата 26.12.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Ну вот как и обещал базовая простейшая версия, без LED-дисплея? кнопок и т.д.

Надеюсь заработает иначе поедет крыша точно smile   smile   smile  smile 


user posted image
PM MAIL   Вверх
Den64
Дата 26.12.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2




Цитата

Поверь мне, я на экспириментах с фнч по твоей идее спалил пару транзисторов


  Значит неправильно элементы ращитал...

  Кстати у тебя на выходе конденсатор 220пФ и резистор 3.6к - ФВЧ настроенный на частоту среза  > 3 Мгц по уровню 3 дБ.  Краме дребезга ничего непропустит. Только если у тебя импульсы с частотой 3МГц, то они пройдут.

Цитата

А полную печатку первого варианта сейчас делаю , через пару часов скину на эту ветку
И принципиалку скинь.

  Какей частоты импульсов?


--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
kaspersky89
Дата 26.12.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



порог срабатывания экономайзера будет, 1000об/мин тоесть в секунду 16 импульсов, плюс доработки будут с учётом всех режимов эксплуатации авто, вообщем импульсы в пределах примерно 10 - 150 в секунду

Цитата

 Кстати у тебя на выходе конденсатор 220пФ и резистор 3.6к - ФВЧ настроенный на частоту среза  > 3 Мгц по уровню 3 дБ.  Краме дребезга ничего непропустит. Только если у тебя импульсы с частотой 3МГц, то они пройдут.


это не ФВЧ!!! посмотри на резисторы по обе стороны конденсатора они подсоеденены к плюсу схемы +5в, смысл в то что когда с инвертора 155ЛА3 поступает отрицательный импульс он разряжает быстро кондёр который на 220пФ, и в течении пары милисекунд после разрядки кондёра шёрох не проходит
PM MAIL   Вверх
kaspersky89
Дата 26.12.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Всётаки не стабильно работает шумодав моего варианта, 
Попробую использовать вот этот на тригере шмитта

user posted image

Я даже и не хочу думать что он может не заработать, smile 

Den64 как думаешь, подойдёт такая схема для моего варианта? smile 
PM MAIL   Вверх
kaspersky89
Дата 26.12.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



вот он очередной бесчисленный вариант входного каскада, 

Зацените, на работоспособность,(номиналы не проставлены верно)

БЛИИИИИИИИИИИИИИИИИИИИИИИН у меня точно крыша едет, smile  smile  уже ничего не соображаю, пойду за текстолитом лучше в магазин.



user posted image
PM MAIL   Вверх
Den64
Дата 26.12.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



Цитата

порог срабатывания экономайзера будет, 1000об/мин тоесть в секунду 16 импульсов, плюс доработки будут с учётом всех режимов эксплуатации авто, вообщем импульсы в пределах примерно 10 - 150 в секунду

  Вобщем здесь частоту среза нужно брать примерно 150 Гц, можно 200.

Цитата

это не ФВЧ!!! посмотри на резисторы по обе стороны конденсатора они подсоеденены к плюсу схемы +5в, 

  Это какраз ФВЧ, потому что +5В подключено к земле по ВЧ.


Цитата(kaspersky89 @  26.12.2007,  11:01 Найти цитируемый пост)
Попробую использовать вот этот на тригере шмитта
...
Я даже и не хочу думать что он может не заработать, 

  Эта схема должна работать 100%.  Точнее 80%. Её нужно только правильно настроить, в смысле номиналы подобрать.
  И ещё я бы вместо одного ФНЧ поставил 2. (зависит от дребезга)

  А чтоб правильно ращитать номиналы нужно знать параметры выхода катушки. Какое сопротивление? (Хоть примерно. +- 500%)
  

Цитата(kaspersky89 @  26.12.2007,  12:36 Найти цитируемый пост)
вот он очередной бесчисленный вариант входного каскада, Зацените, на работоспособность,(номиналы не проставлены верно)БЛИИИИИИИИИИИИИИИИИИИИИИИН у меня точно крыша едет,     уже ничего не соображаю, пойду за текстолитом лучше в магазин.

  Работать, скорей всего, правильно небудет.  С C5 по R5 включительно лишнее. И R1 номинал неправильный.
  И ФНЧ R4, С6 (навскидку) неправильно расчитаны...

Я б предложил такую схему:

user posted image


Это сообщение отредактировал(а) Den64 - 26.12.2007, 14:25
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
kaspersky89
Дата 26.12.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Цитата

И R1 номинал неправильный.
  И ФНЧ R4, С6 (навскидку) неправильно расчитаны...


Я просто схему когда рисовал то номиналы не ставил, на схеме они левые совсем а твой вариант  Den64 я чделаю на печатке + добавлю шмитта в конец
PM MAIL   Вверх
kaspersky89
Дата 26.12.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



У меня вообще скоро всё опустится, даже виагра не поможет smile 
Думал самое сложное будет запрограммировать мегу а тут, всё наоборот smile 
Когда доделаю полностью с доработками и дисплеями всякими чтоб типа как и тахометр схема работала точно запатентую и бабки буду снимать за продажу устройствоа smile 

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

user posted image
PM MAIL   Вверх
Den64
Дата 26.12.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



 ИМХО: Схема абсолютно правильная. И диод, и тригер правильно что поставил. И ФНЧ 3 штуки а не 2, правильно, должен качественно дребезг гасить. Теперь только наминалы рассчитать. Только диод лучше поставить паралельно R3.

Цитата(Den64 @  26.12.2007,  14:21 Найти цитируемый пост)
 А чтоб правильно ращитать номиналы нужно знать параметры выхода катушки. Какое сопротивление? (Хоть примерно. +- 500%)

Кокое сопротивление??? Я уже третий раз спрашиваю.



Это сообщение отредактировал(а) Den64 - 26.12.2007, 22:06
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
kaspersky89
Дата 26.12.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Цитата

Кокое сопротивление??? Я уже третий раз спрашиваю.


Я чисто теоритически себе представляю Просто мысль была что примерной скажем формы импульсы и с такой-то амплитудой которые просто нужно сосчитать. 
Надеюсь заработает.
Den64 спасибо что помог и проконсультировал. smile 
PM MAIL   Вверх
Den64
Дата 26.12.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2




  Если неизвесны параметры.... Ну значит примерно посчитать...

  1. Условимся что отбирать будем 1Вт. При амплитуде импульса 200В (при большей больше отбирать). Посчитаем R2.
 R2 = Uвх ^ 2 / P = (200 * 200) / 1 ~= 33КОм. Мощьность резистора не меньше 1Вт. (сильно грется будет только на высоких оборотах >100)

  2. Реактивное сопротивление XC5 = R2 = 33КОм. (если по уровню 0.5 т.е 6дБ). Напряжение пробоя >=400В
 С5 = 1 / (2 * 3.14 * f * XC5) = 1 / (2 * 3.14 * 200 * 33000) ~= 0.022 мкФ. 

  3. R8 берём на вскидку 100КОм, чтоб сильно не вносить изменений. Тоже не меньше 1Вт. (Грется будет на средних оборотах)

  4. Реактивное сопротивление XC7 = R8 = 100КОм. (если по уровню 0.5 т.е 6дБ)
 С7 = 1 / (2 * 3.14 * f * XC7) = 1 / (2 * 3.14 * 200 * 100000) ~= 6.8 нФ.  На >=400В.

  5. R5 ~= 470 КОм. 0.25 Вт.
  
  6. R3 ~= 1МОм. 

  7. R7 подбором настроить, зависит от Q2. Примерно 1..2 КОм, для начала. А там может и от 100 до 100К добится качества и стабильной работы.

  R4 лишний наверно, а вот C6 зависит от R7. Можно не ставить, а вот дырки под него, делать можно...
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
kaspersky89
Дата 26.12.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



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

НЕ, реально ты написал целый научный труд  smile 

Thanks типа very match, когда буду отдавать проект нашему преподавателю, я обязательно включу в документацию твои расчёты.

Я бы долго ещё мучался подбирая детали методом "научного тыка" smile 

Такие расчёты впечатляют, и показывают всю серьёзность разрабатываемого устройства smile .

Этот проек ведь будет серьёзным аргументом, в плане финансирования наших автомобильных мастерских, это вопервых современное оборудование, во воторых интерес студентов появиться к обучению, ведь намного интересней разбираться хотябы в инжекторной системе "Калины" чем по локоть в масле копаться в старом Зил-овском движке smile 

Вообщем огромное спасибо Den64 smile

Добавлено через 5 минут и 16 секунд
Цитата

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

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

Во загнул я smile 
PM MAIL   Вверх
cardinal
Дата 27.12.2007, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(kaspersky89 @  26.12.2007,  22:52 Найти цитируемый пост)
very match

much

извини у меня просто на ошибки аллергия smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Den64
Дата 27.12.2007, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



Проблемы то со схемой ещё будут... Обращайся...
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
kaspersky89
Дата 28.12.2007, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Вот он, очередной шедевр smile  Всю ночь за компом просидел  smile  Блин, я себя когда нибудь точно угроблю, точнее своё здоровье,  smile 
Это как у Задорного по телеку вчера смотрел: объявление в газете - покупаю огурцы, сажаю огурцы, поливаю огурцы, полю огурцы - НЕНАВИЖУ ОГУРЦЫ smile 

user posted image

!!!!!!!!!!!!!!!!!      ВНИМАНИЕ ВСЁ ЧТО НАПИСАНО ДАЛЬШЕ ЭТО ПОЛНЫЙ БРЕД И ЕСЛИ ВЫ НЕ ХОТИТЕ НАПРЯГАТЬ СВОИ МОЗГИ ТО НЕ ЧИТАЙТЕ        !!!!!!!!!

Ну вот он господа и Новый Год не загорами, может буду на форуме тока после праздника, так что скажу всё зараннее, а то мало ли вдруг комп сгорит, или глоб.потепление там   smile 

Поздравляю всех с наступающим. Хоть поздравлять то особо и несчем, потому как д%рьма и в новом году на всех хватит, но всёже... уж лучше быть оптимистом. А главное не поддаваться влиянию окружающей так сказать среды. 
  Не знаю как вы мужики, но я например если случаеться какой-нибудь праздник, когда все сидят, пьют и веселятся, потом ктонить с блаженным видом идиота, кричит, мол , иди к нам Денис, пару секунд постояв и подумав, я выхожу за порог, достаю сигарету, и глядя в окно думаю, что не моё это блин, чуствую что ждут меня ещё великие подвиги в жизни, и что буду я добиваться этого с рвением харлея стоящего на старте с натянутой гашеткой газа, не для того я в этой жизни создан, чтоб просто безсмысленно упиваться вдрызг.

 Так что вывод тут один, тут однако как в кино "Брат", сила в правде, и кто прав, тот и сильней, а кто прав и силён духом тот и будет королём на этом празднике жизни smile 


Ну тут ещё на счёт этой схемы экономайзера мысль есть, Думаю когда доделаю этот тестовый вариант, и если всем понравиться, то пущу дело на поток стопудово, Доделаю LED-дисплей, кнопки, пару светодиодов, научусь работать с EEPROM, найду магазин с подхлдящими корпусами. Буду продавать если удасться, благо тачек старых у нас в Брянске процентов 60 гдето, так что покупатели найдутся, 1000р - думаю адекватная цена за экземпляр. Так как тут чуть ли не научная разработка.

Ну ладно, удачи всем, пока.  Хотя по моему всётаки мы сами создаём себе эту самую удачу. 

PM MAIL   Вверх
cardinal
Дата 28.12.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(kaspersky89 @  28.12.2007,  06:34 Найти цитируемый пост)
Хотя по моему всётаки мы сами создаём себе эту самую удачу. 

Не заблуждайся! smile

А так:
С наступающим!



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kaspersky89
Дата 28.12.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Цитата

Не заблуждайся! 

А так:

С наступающим!


Ну знаешь на эту тему можно беседовать долго и аргументировано.

А так: добавлю к словам cardinal

 Желаю всем оторваться по полной!!!  smile  smile 

Не помню кто говорил но: Наша великая и могучая страна как никогда беззащитна только два дня в году так это 23февраля и Новый Год  smile  smile  smile 
PM MAIL   Вверх
kaspersky89
Дата 11.1.2008, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



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

   Просьба к гуру в программинге МК, как мне оптимизировать код чтоб он правильней выглядел и чётче работал, а то компиленый файл чёто большой получается. Критикуйте если есть желание и время. 
   Мне кажется главный косяк в коде, так это таймер, я сделал его без делителя, и программной задержкой выставлял время ровно на 1 секунду. Мне кажется таймер этот всю программу будет тормозить.

  На данном этапе покачто алгоритм, будет шлифоваться.

  Следующий этап эволюции это надо приладить к схеме термодатчик, необходимо учитывать температуру двигателя, чтобы когда движок холодный то ЭПХХ работал в режиме прогрева, с открытым клапаном Холостого Хода, 
  Есть мысль взять термод-к в виде транзистора цифровой вроде как из серии DS18(точно не помню) както его прекрепить к двиглу и по I2c вести контроль температуры.

  Как кто думает, стоит ли брать, и морочиться с этим DS ? 

   Просто я чего помощи в оптимизации кода прошу, потому как проект будет разростаться, может даже на диплом пойдёт smile , так вот, боюсь наделать на начальном этапе ошибок что потом код вообще работать не будет, нужен так сказать костяк, простой, и по умному сделаный код первого варианта, от которого буду плясать так сказать, дальше smile 


Код


#include <avr/io.h>  
#include <avr/interrupt.h> 
#include <avr/delay.h> 
#include <stdlib.h>
#include <avr/signal.h>
#include <avr/wdt.h>
#include <math.h>
#include <inttypes.h>
#include<avr/sleep.h>

#define XX PD1

void IO_init(void); 
void interrupt_init(void);
void timer0_init(void);
void Knopka_XX(void);

unsigned int  timer0; 
unsigned int  presc;
unsigned long  rot;
unsigned char block;


unsigned char key (unsigned char s)
{ if (bit_is_clear(PIND,s))
  {  _delay_loop_2(12500);
     if (bit_is_clear(PIND,s))
     { return (0);
     }
  }
  return (1);
}

ISR(INT0_vect) 

rot++;


int main(void) 
{    
 rot=0;
  block=0;
   presc=3900;
  
   IO_init();       
    interrupt_init(); 
     timer0_init(); 
      sei(); 
   
  while(1) { 
                
    if ((key(XX)) == 0 ) {
          
          block=1;
          PORTD |= _BV(PD0);
          PORTD |= _BV(PD7);
          
       }else if ((key(XX)) == 1){
       
       _delay_loop_2(62500);
    
          block=0;
      }
    }
  return(0);    



ISR(TIMER0_OVF_vect)     //Прерывание происходящие с интервалом в 1секунду

    if (++timer0 == presc)
    {     
           timer0=0;
           if (rot>=17)
           { 
              if (block==0){
               PORTD &= ~_BV(PD0);   
               PORTD &= ~_BV(PD7); 
                            }
               
           }else{ 
 
              PORTD |= _BV(PD0);
               PORTD |= _BV(PD7);
                }  
        rot=0;
    }
     
}

void IO_init(void)    //Настройка портов контроллера

   DDRD=0b11111001;  //Выводы порта  D  1-2 входы остальные выходы  
   DDRB=0xFF;         //Все выводы порта  В  выходы 
   DDRC=0xFF;         //Все выводы порта  С  выходы 


void interrupt_init(void) //Настройка регистров разрешающих прерывание от входных импульсов
{    
   EICRA=0b00000010; 
   EIMSK=0b00000001;   
   SREG=0b10000000;   


void timer0_init(void) 

         timer0 = 0; 
         TCCR0B |= _BV(CS00); 
         TCNT0 = 0; 
         TIMSK0 |= _BV(TOIE0); 




PM MAIL   Вверх
cardinal
Дата 12.1.2008, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



1.
Если после if только одна строка, то скобки { и } не нужны
Код

if (bit_is_clear(PIND,s))
     { return (0);
     }

=>
Код

if (bit_is_clear(PIND,s))
    return (0);

2.
Код

return (0);

=>
Код

return 0;

3.
Код

DDRD=0b11111001;  //Выводы порта  D  1-2 входы остальные выходы 

=>
Код

DDRD=0xF9;  //Выводы порта  D  1-2 входы остальные выходы

4. _BV это что?
5. bit_is_clear никто так не проверяет!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kaspersky89
Дата 12.1.2008, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Цитата

4. _BV это что?


cardinal Я думал ты пошутил с этим вопросом, _BV 

Немного лекции
 AVR GCC сдвиг можно осуществлять и с помощью функции _BV(), что даже предпочтительней, так как в этом случае компилятор сам выполняет поразрядный сдвиг и вставляет результат в компилируемый код. Это обеспечивает отсутствие затрат времени во время непосредственного выполнения кода в микроконтроллере.

В случае использования функции _BV() две предыдущие команды будут выглядеть следующим образом.

PORTD |= _BV(PD3);      // установить "1" на линии 3 порта D

PORTD &= ~_BV(PD4);      // установить "0" на линии 4 порта D


Цитата

5. bit_is_clear никто так не проверяет! 


 Наверно это старый дедовский сполсоб, Но он работает, покажи мне как сделать иначе, обязательно учту

P.S. Я поставил на WinAVR патч, поэтому могу использовать некоторые старые команды

Добавлено через 7 минут и 52 секунды
Cardinal

Может заменить так

Статый вариант
if (bit_is_clear(PIND,3)) 
{
...



На новую версию
if (!(PIND & (1<<PIND3)))
{
...

PM MAIL   Вверх
cardinal
Дата 12.1.2008, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(kaspersky89 @  11.1.2008,  23:30 Найти цитируемый пост)
Может заменить так

Статый вариант
if (bit_is_clear(PIND,3)) 
{
...



На новую версию
if (!(PIND & (1<<PIND3)))
{
...
}  

Без восклицательного знака!
Код

if((PIND & (1 <<  PD3))


Насчет _BV не знал на самом деле. Почитал тут
http://www.myrobot.ru/stepbystep/pr_mcports.php
буду пользоваться  smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
kaspersky89
Дата 12.1.2008, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Так как насчёт DS18 ?  Адекватно ли будет прицепить его на движок копейки?

PM MAIL   Вверх
cardinal
Дата 12.1.2008, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Ну если его темп. характеристики говорят что можно (я не смотрел), то какие сомнения?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Den64
Дата 12.1.2008, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2




  Датчик темпиратуры класный. Самое главное точно измеряет +-0.5.  Стоит использовать! Измеряет от -55 до +125.

--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
kaspersky89
Дата 12.1.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



Спасиб, убедили насчёт DS  smile .  

   Теперь надо подучить протокол I2c . Адресация устройств, временные интервалы протокола, какие команды слать, и какие принимать. 

Думаю сложного особо ничего не будет smile 

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

Ну ладно, Думаю следующее моё сообщение на этой ветке будет с новой схемой, и прошивкой. А то окончательно загажу форум спамом smile  smile 
PM MAIL   Вверх
makwen
Дата 12.1.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 9.11.2005
Где: Киев

Репутация: 1
Всего: 1



Цитата(kaspersky89 @ 12.1.2008,  10:58)
Спасиб, убедили насчёт DS  smile .  

   Теперь надо подучить протокол I2c . Адресация устройств, временные интервалы протокола, какие команды слать, и какие принимать. 

Думаю сложного особо ничего не будет smile 

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

Ну ладно, Думаю следующее моё сообщение на этой ветке будет с новой схемой, и прошивкой. А то окончательно загажу форум спамом smile  smile

а чего I2C?! Если ты будешь использовать датчик температуры DS1820, то у него интерфейс 1WIRE. 
ЗЫ: С работай этого датчика проблем не возникалоsmile
PM MAIL   Вверх
kaspersky89
Дата 12.1.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 7.12.2007

Репутация: 1
Всего: 1



makwen

Цитата

а чего I2C?! Если ты будешь использовать датчик температуры DS1820, то у него интерфейс 1WIRE. 
ЗЫ: С работай этого датчика проблем не возникало 


Извиняюсь не знал.  

Тут функция из одного кода, как раз считает температуру по 1WIRE. 
  Так что разобраться с датчиком не сможет только ленивый или в доску пьяный программёр smile 

Код

void izmerenie_t(void)
{

if ( !count_com_1w ){//сброс
    count_com_1w++;
    detectPresence();//если датчик присутствует
    }
    else
    if ( count_com_1w==1 ){
        count_com_1w++;
        writebyte(0xCC);//SKIP ROM [CCh]
        writebyte(0xB4);//READ POWER SUPPLY [B4h]
        power_suplly_1w=readbit();//если низкий уровень то паразитное питание
        power_suplly_1w=~power_suplly_1w;//где был низкий вкл высокий, паразитное питание
        power_suplly_1w &= out_1wire;//pwire0|pwire1;
        }
    else
    if ( count_com_1w==2 ){    //старт преобразования
        count_com_1w++;
        detectPresence();//сброс
        }
    else
    if ( count_com_1w==3 ){
        count_com_1w++;
        writebyte(0xCC);//SKIP ROM [CCh]
        writebyte(0x44);//CONVERT T [44h]
        pullup_on();
        time[wire1]=125;//1sek
        }
    else
    if ( count_com_1w==4 ){
        if (time[wire1]<-10) count_com_1w++;
        }
    else
    if ( count_com_1w==5 ){//чтение темпиратуры
        count_com_1w++;
        detectPresence();//сброс
        }
    else
    if ( count_com_1w==6 ){
        count_com_1w++;
        writebyte(0xCC);//SKIP ROM [CCh]
        writebyte(0xBE);//READ SCRATCHPAD [BEh]
        }
    else
    if ( count_com_1w==7 ){
        count_com_1w=0;

        readbyte(&tempir_lsb[0]);//LSB  читаем темпиратуру
        readbyte(&tempir_msb[0]);//MSB  читаем темпиратуру
        
        //for(i=0; i<kolvo_datchikov; i++){
        //    format_t(i);
        //    }
        format_t(0);
        format_t(1);
        }
}

PM MAIL   Вверх
makwen
Дата 12.1.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 9.11.2005
Где: Киев

Репутация: 1
Всего: 1



Цитата(kaspersky89 @  12.1.2008,  19:15 Найти цитируемый пост)
Тут функция из одного кода, как раз считает температуру по 1WIRE.   Так что разобраться с датчиком не сможет только ленивый или в доску пьяный программёр 


прикрепил файлик с библиотекой под DS1820, которую сам писал 2 года назад.  Может чем-то поможетsmile
Только нумжно временные интервалы соблюдать. 

Это сообщение отредактировал(а) makwen - 12.1.2008, 19:47

Присоединённый файл ( Кол-во скачиваний: 23 )
Присоединённый файл  DS1820.rar 1,33 Kb
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1876 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.