Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/47: Рейтинг темы: голосов - 47, средняя оценка - 4.83
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
1

ATmega8a-pu и TSOP v4836

15.04.2014, 15:07. Просмотров 8601. Ответов 25
Метки нет (Все метки)

есть TSOP v4836 подключен как указано на схеме. Выход подключен к ATmega8a-pu PD2 и подтянут через 10кОм к VCC. Вопрос почему любой ИК-сигнал сбрасывает схему?


<Изображение удалено>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2014, 15:07
Ответы с готовыми решениями:

tsop 1738 atmega32
Всем привет! Решил тут считать со всех пультов сигнал и создать базу ик...

Нужно подружить AVR & TSOP & MikroPascal
Хочу подружить ИК-ПДУ и свою мегу. нашел только это...

Сон в Atmega8a
Решил на днях попробовать спяцие режимы авр. В качестве подопытного использую...

atmega8a ADC
Читаю доку на atmega8 не могу понять что значит цифровое питание и аналоговое...

ATmega8a, ATmega32a и т.д.
Доброго времени суток! Компания атмель вместо родных нам мег восьмых,...

25
Леанид Ивинавич
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
15.04.2014, 16:45 2
Наверное, так написана программа.
0
S_Otix
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 537
15.04.2014, 21:22 3
Цитата Сообщение от kwymto
есть TSOP v4836 подключен как указано на схеме. Выход подключен к ATmega8a-pu PD2 и подтянут через 10кОм к VCC. Вопрос почему любой ИК-сигнал сбрасывает схему?
Выход TSOPa подключил к RESITу :)
Код в студию! Тогда будет предмет разговора. А гадать на ... можно очень долго. Может стек, может "собака порылась", или еще что-то.
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
15.04.2014, 21:49 4
кусок кода
Код
#define PinIRR   (PIND&_BV(2))
Код
SIGNAL (SIG_INTERRUPT0)
{
ushor nCurTime = TCNT0;
ushor nCurByt = 0;

if (PinIRR) {
nCurByt = 1;
};

ushor dTime;
dTime = nCurTime - nPrevTime;
nPrevTime = nCurTime;

//интересуют только перепады с 0 на 1 (концы ШИМ отрезков)
//в простом (этом - без учета помех) случае надо было сменить инициализацию прерывания на возрастание уровня,
//но по уму надо просто считать длительности нулевых и единичных отрезков с игнорированием всплесков от солнца,
//тогда можно и без всяких crc обойтись. но то как солнце фонит надо сначала снять и посмотреть, да
//т.ч. пускай такое будет прерывание
if (nCurByt) {
if (g_bSigInProcess!=0) {

if ((dTime>13)&&(dTime<25)) { // 0 - 448us..832us
nRecievingInfo <<= 1;
nRecievingInfo |= 0;
nBytsCount++;
} else if ((dTime>32)&&(dTime<48)) { // 1 - 1056us..1568us
nRecievingInfo <<= 1;
nRecievingInfo |= 1;
nBytsCount++;
} else {
//пришел мусор. не считаем за бит и прекращаем приём ("пуля прошла рядом"?)
g_bSigInProcess = 0;
nBytsCount = 0;
};

//приняли 14 бит. заканчиваем приём и обрабатываем что вышло
if (nBytsCount==14) {
g_bSigInProcess = 0;

if (nIRPackage==0) { //проверка чтоб успеть обработать предыдущий, прежде чем задавать новый (надо подумать)
if (nRecievingInfo & 0b10000000000000) {
//пришла команда - надо дождаться ещё пару бит и сделать трансляцию команд во внутреннее представление
//сейчас просто игнорируем это.
} else {
//разбираем майлс-выстрел на составляющие
ushor weapon   = nRecievingInfo&0b00001111;
ushor team      = (nRecievingInfo>>4)&0b00000011;
ushor id         = (nRecievingInfo>>6)&0b01111111;

//и собираем обратно в свой формат, заодно обрезаем id до 6бит
nIRPackage = (id&0b00111111)<<7|team<<4|weapon;
};
};
};

} else {
//2400us - это 75 тиков с частотой 31250Гц
//запас +-480us на всякий случай
if ((dTime>60)&&(dTime<90)) {
g_bSigInProcess = 1;
nBytsCount = 0;
nRecievingInfo = 0;
};
};
};

bOvirtime=0;
} // конец автомата обработки ИК датчика
код и комментарии не мои) я тут вроде вкурился но не нашел где проблема(

и нет нога не на ресет я же написал PD2 - она же 4я нога
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
15.04.2014, 21:53 5
что значит "сбрасывает схему"?
схему, вверх ногами нарисованную, я бы тоже сбросил куда подальше
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
15.04.2014, 21:55 6
Цитата Сообщение от Johmmy0007
что значит "сбрасывает схему"?
схему, вверх ногами нарисованную, я бы тоже сбросил куда подальше
судя по внешним признакам на МК происходит сброс.
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
15.04.2014, 21:57 7
ну какие признаки-то? что из вас вытягивать -то всё надо?

PD2 - точно вход, а не выход? по вашему куску это неясно?
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
15.04.2014, 22:07 8
Цитата Сообщение от Johmmy0007
ну какие признаки-то? что из вас вытягивать -то всё надо?

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

а где посмотреть точно ли он выход? я думал #define PinIRR (PIND&_BV(2)) это и есть конфигурация выхода!
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
15.04.2014, 22:13 9
define PinIRR - это подстановка и она определяет только выделение бита, как я понял (в с не силён)
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
15.04.2014, 22:15 10
Код
PORTD   =   0b00010100; //0x04;
ик на PD2. кажется это то что надо?
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
15.04.2014, 22:16 11
ищите DDRD http://www.myrobot.ru/stepbystep/pr_mcports.php
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
15.04.2014, 22:20 12
оу. тогда все таки полнее будет:
Код
   // Port D, используется только один вход для ИК датчиков IRR, без прерывания
// Func7..0 = In
// State7..0= T  State2=P  PD.2  (INT0) pin 4
PORTD   =   0b00010100; //0x04;
DDRD   =   0b00000000; //0x00;
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
15.04.2014, 22:22 13
да нормально вроде
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
15.04.2014, 22:25 14
сейчас читал вашу ссылку и пришла мысль: может проблема что на входе стоит "высокий уровень" и нога тоже к VCC подтянута через 10кОм. тут может быть проблема?
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
15.04.2014, 22:37 15
нет не в этом точно (ну да резистора просто параллельно стоят и всё), я просто подумал, если б PD2 была выходом и был бы в 1 (а PORTD = 0b00010100; //0x04; - как раз бы к этому и привёл), то при появлении 0 от ИК-приёмника происходило бы кз. если питание слабое (имеется защита), то напряжение упадёт и произойдёт сброс.
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
15.04.2014, 23:12 16
Цитата Сообщение от Johmmy0007
нет не в этом точно (ну да резистора просто параллельно стоят и всё), я просто подумал, если б PD2 была выходом и был бы в 1 (а PORTD = 0b00010100; //0x04; - как раз бы к этому и привёл), то при появлении 0 от ИК-приёмника происходило бы кз. если питание слабое (имеется защита), то напряжение упадёт и произойдёт сброс.
питание 3.7В Ty-Yom параллельно стоит электролит 3300мкФ. Правда на фьюзах прошит BOD-2.7 но я не думаю что падение такое сильное. завтра постараюсь перепрошить фьюзы без BOD и проверить.
0
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
15.04.2014, 23:32 17
да ничего не надо. если хотите проверить - соедините выход приёмника со входом мк через резистор 1к, а не напрямую.
или просто замкните резистором вход мк с землёй (имитируя приёмник) и посмотрите, перезагрузится или нет. но, думаю, не в этом дело
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
16.04.2014, 08:14 18
Возможно задействован watch dog, и в программе нет сброса сторожевого таймера.
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
16.04.2014, 10:55 19
Цитата Сообщение от dymyurk1978
Возможно задействован watch dog, и в программе нет сброса сторожевого таймера.
Я проверю но кажется я его отключал в фьюзах. Однако без приёма по ИК все работает.
0
kwymto
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 37
16.04.2014, 10:57 20
Цитата Сообщение от Johmmy0007
да ничего не надо. если хотите проверить - соедините выход приёмника со входом мк через резистор 1к, а не напрямую.
или просто замкните резистором вход мк с землёй (имитируя приёмник) и посмотрите, перезагрузится или нет. но, думаю, не в этом дело
Вечером попробую
0
16.04.2014, 10:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2014, 10:57

Atmega8A-AU + ESP8266
Уважаемые воротилы AVR, у меня к Вам вопрос. Заварганил я значит платку на...

Atmega8a ISP 5V
Здравствуйте Можно ли прошивать Atmega8a у которого питание 3.3v,...

БПФ на Atmega8A
Здравствуйте, подскажите пожалуйста, вот в голову пришло сделать гитарный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru