Слишком низкий уровень напряжения на INT0 у Tiny2313
Слишком низкий уровень напряжения на INT0 у Tiny2313
День добрый, товарищи.
Столкнулся с такой проблемой: использую ножку INT0 на Tiny2313 как вход. К ней припаяна кнопка на землю. То есть,
DDRD=0x00;
PORTD=0b00000100;
Но после заливки кода и запитывания МК на ножке всего 1,17В. Пробовал разные МК, результат тот же.
Использую Atmel Studio 6.2 и Дудку 3.3.
помогите, пожалуйста.
Столкнулся с такой проблемой: использую ножку INT0 на Tiny2313 как вход. К ней припаяна кнопка на землю. То есть,
DDRD=0x00;
PORTD=0b00000100;
Но после заливки кода и запитывания МК на ножке всего 1,17В. Пробовал разные МК, результат тот же.
Использую Atmel Studio 6.2 и Дудку 3.3.
помогите, пожалуйста.
- Реклама
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Измерьте напряжение на ноге у контроллера не впаянного в плату. Затем помойте плату, поменяйте кнопку, найдите соплю и устраните ее и т.д.
-
watchmaker
- Поставщик валерьянки для Кота
- Сообщения: 2183
- Зарегистрирован: Вс ноя 15, 2009 23:13:59
- Откуда: Харьков
- Контактная информация:
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
CKOUT не включен?
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
- rxstart1
- Вымогатель припоя
- Сообщения: 508
- Зарегистрирован: Пт фев 22, 2013 18:00:43
- Откуда: Беларусь, г. Гомель
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Все правильно, командой PORTD=0b00000100; Вы подтягиваете напряжение через внутренний подтягивающий резистор, и на нем происходит падение напряжения. Вы чего хотите, пишите конкретнее, насколько я Вас понял кнопка считается нажатой, если на порт падает 0 
- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
так и происходит. вы ввели порт на вход а так же подтянули внутренний резистор. кнопка на землю. по падению напряжения до нуля кнопка считается нажатой. это ну очень просто. я и то не очень то понимая языка си понимаю как оно действует в железе
- Реклама
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
1. Измеряю на контактной макетной плате, так что сопли и кривая пайка исключены.
2. SKOUT включен по умолчанию. Может ли он мешать?;
3. В том-то и дело, что кнопка не срабатывает. То есть, при падении с 1,17 до 0 В прерывание не происходит. Ранее я помню, что при включении подтягивающего резистора, потенциал на ножке был примерно равен VCC. А тут, сколько на питание МК ни подавай (3,3-5В), на ножке стабильно 1,17В.
Если в целом, этот МК через порт B управляет сдвиговыми резисторами. Порт D чисто для кнопки. Кнопка работает исправно, кстати. Но надо, чтоб ещё и прерывание работало.
2. SKOUT включен по умолчанию. Может ли он мешать?;
3. В том-то и дело, что кнопка не срабатывает. То есть, при падении с 1,17 до 0 В прерывание не происходит. Ранее я помню, что при включении подтягивающего резистора, потенциал на ножке был примерно равен VCC. А тут, сколько на питание МК ни подавай (3,3-5В), на ножке стабильно 1,17В.
Если в целом, этот МК через порт B управляет сдвиговыми резисторами. Порт D чисто для кнопки. Кнопка работает исправно, кстати. Но надо, чтоб ещё и прерывание работало.
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Если CKOUT разрешён, то он будет мешать работе лапы PD2/INT0/CKOUT/XCK, но для этого FUSE-бит CKOUT нужно запрограммировать.JI0ku писал(а):SKOUT включен по умолчанию. Может ли он мешать?;
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Только что попробовал с запрещённым и разрешённым SKOUT. Результат идентичен.akl писал(а):Если CKOUT разрешён, то он будет мешать работе лапы PD2/INT0/CKOUT/XCK, но для этого FUSE-бит CKOUT нужно запрограммировать.JI0ku писал(а):SKOUT включен по умолчанию. Может ли он мешать?;
Последний раз редактировалось aen Пт июн 19, 2015 12:59:50, всего редактировалось 1 раз.
Причина: Нарушение Правил форума п. 2.7
Причина: Нарушение Правил форума п. 2.7
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
С питанием то все нормально? Поэксперементируйте с другими пинами. Ваш вольтметр исправен?
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Я бы для начала попробовал с внешним подтягивающим резистором.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Ставил подтягивающий внешний резистор - толку нет.
Вольтметр исправен, кроме него светодиодами проверял - не светят.
Я мало что понимаю, но думаю, что где-то программная ошибка, так как если её сделать выходом, даёт стабильные 5В.
Вольтметр исправен, кроме него светодиодами проверял - не светят.
Я мало что понимаю, но думаю, что где-то программная ошибка, так как если её сделать выходом, даёт стабильные 5В.
-
watchmaker
- Поставщик валерьянки для Кота
- Сообщения: 2183
- Зарегистрирован: Вс ноя 15, 2009 23:13:59
- Откуда: Харьков
- Контактная информация:
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
А если не вводить подтяжку в чипе, а подтянуть вручную на плюс резистором порядка 10 кОм?
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Очень возможно. Покажите уже свою программу?JI0ku писал(а):...Я мало что понимаю, но думаю, что где-то программная ошибка, так как если её сделать выходом, даёт стабильные 5В.
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
int s;
#define d1 PORTB |=_BV(2); PORTB |=_BV(0); PORTB &=~_BV(0); PORTB &=~_BV(2);
#define d0 PORTB |=_BV(0); PORTB &=~_BV(0);
#define lch PORTB |=_BV(1); PORTB &=~_BV(1);
ISR(INT0_vect) {
cli();
_delay_ms(10);
if ((PIND&(1<<2))==0)
{
if (s>1)
{
s=0;
}
else
{
s++;
}
}
sei();
}
int main(void)
{
s=0;
DDRB=0b00000111;
DDRD=0b11110111;
PORTD=0b00001100;
GIMSK=(1<<INT0);
MCUCR=(0<<ISC00)|(1<<ISC01);
sei();
chk: switch (s) {
case 0: goto pl1;
case 1: goto sh1;
}
}
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
А куда ведут goto? В switch, кстати, не хватает default. И цикла я тоже в явном виде не вижу, код может вылететь за пределы программы (будет остановлен заглушкой, которую по-умолчанию ставит AVR-GCC).
Ну, про то, что применять такие конструкции крайне не рекомендуется, я говорить не буду, это все и так знают. Наверное, если применили, тому есть веские причины...
Кстати, рекомендую ткнуться в ножку не мультиметром, а осциллографом. Что-то мне подсказывает, что есть шанс увидеть интересное.
Ну, про то, что применять такие конструкции крайне не рекомендуется, я говорить не буду, это все и так знают. Наверное, если применили, тому есть веские причины...
Кстати, рекомендую ткнуться в ножку не мультиметром, а осциллографом. Что-то мне подсказывает, что есть шанс увидеть интересное.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Да, тут PD2 как вход.JI0ku писал(а):...использую ножку INT0 на Tiny2313 как вход. К ней припаяна кнопка на землю. То есть,
DDRD=0x00;
PORTD=0b00000100;...
А тут как выход с подтяжкой, зачем так?JI0ku писал(а):DDRD=0b11110111;
PORTD=0b00001100;
И к этому пину еще и кнопку на землю?
------------------------------------------------------------------------------------------------------------------------
YS, приветствую!
Он вроде CKOUT запретил.
Какая там еще ожидается интрига по этому пину?
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Здравствуйте, здравствуйте!YS, приветствую!
Мне было лень вдумчиво анализировать код; я поглядел мельком, и мне показалось, что из-за потенциального вылета за пределы основной программы (и последующего сброса) на ножке могут начаться чудеса с переключениями.Какая там еще ожидается интрига по этому пину?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18558
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
никакого сброса не бывает: после main следует cli и бесконечный jmp сам на себя.
а вот goto с неопределенными метками вообще не скомпилируется, т.е. эта программа в принципе не даст hex-а для прошивки. что там топикстартер прошивает в свой МК и что получает после этого - загадка
а вот goto с неопределенными метками вообще не скомпилируется, т.е. эта программа в принципе не даст hex-а для прошивки. что там топикстартер прошивает в свой МК и что получает после этого - загадка
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
Ну, в AVR-GCC это точно так. А вот насчет CVAVR не знаю.никакого сброса не бывает: после main следует cli и бесконечный jmp сам на себя.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18558
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Слишком низкий уровень напряжения на INT0 у Tiny2313
исходник был WinAVR-овский
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!



