реклама на сайте
подробности

 
 
> Непонятка с ATtiny2313A
ZhukV
сообщение Jul 27 2012, 15:22
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 26-07-12
Пользователь №: 72 921



Не могу понять что за прикол (((

По инету, где описывают прерывание (включая видеоуроки), говорят, что подтягивающий резистор и само прерывание нужно подключать на общий провод.
Но когда закинул мелкую прогу на ATtiny2313A (с 2-я прерываниями), прерывание на общем проводе не работали, а на VCC работали.

На 8515 и 8535 работает нормально. ))

Подскажите плз, что это за прикол. Почему так? Может что-то упустил из даташита?

Для точности даю код и видео, как работает:
http://www.youtube.com/watch?v=JBMInzEEQog

CODE
#include <tiny2313a.h>
#include <delay.h>


// Speed
int speed = 1000;

// GoTo left
void toLeft(void)
{
if (PORTB.0 == 1) {
PORTB = 0b10000000;
delay_ms(speed);
}
PORTB = PORTB >> 0b1;

}

// GoTo right
void toRight(void)
{
PORTB = PORTB << 0b1;
if (PORTB.7 == 1) {
delay_ms(speed);
PORTB = 0b00000001;
}
}


interrupt[3] void changeType()
{
PORTD.0 ^= 1;
}

interrupt[2] void changeSpeed()
{
speed -= 100;
if (speed < 100) {
speed = 1000;
}
}


// Main
void main(void)
{
DDRB = 0xFF;
PORTB = 0x01;

DDRD = 0b00001101;
PORTD = 0b00000001;

MCUCR = 0b00001010;
GIMSK = 0b11000000;

#asm("sei");

while (1) {
delay_ms(speed);
if(PORTD.0 == 1) { toLeft(); }
else { toRight(); }
}
}



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

Сообщение отредактировал IgorKossak - Jul 27 2012, 19:30
Причина редактирования: [codebox] для длинного кода!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Jul 27 2012, 20:43
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Там еще вроде программируется "falling or rising edge or a low level". Т.к. можно заказать, чтобы прерывание срабатывало от дерганья вверх, вниз или уровня. Например, если было установлено прерывание на подъем, то от VCC оно работать будет, а от земли нет, потому что через внутрений резистор подтяжки (там где-то 50 ком) напряжение нарастает медленнее, чем это требуется для срабатывания прерывания. В вашем случае, видимо, проще запрограммировать "low level", чтобы недостаточная скорость нарастания или спада сигнала не помешала детекции прерывания.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 06:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016