Attiny13 переход в Sleep по прерыванию

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Народ подскажите, нужно сделать прогу с мигающим светодиодом чтобы, по нажатию кнопки светодиод тух и МК переходил в sleep. GJотом по внешнему прерыванию возвращался к жизни. Подскажите что я не так делаю.

Негде не могу найти нормального описания команд для CAVR везде только для AVR stodio и Win AVR. Приходиться все тыкать на угад. в итоге нервы и куча потраченного времени.
Был на 123avr.nm.ru - там черт ногу сломит, куча рекламы и ловиш нужный тебе текст.

Код: Выделить всё

#include <tiny13.h>
#include <delay.h>
#include <sleep.h>
             

// Declare your global variables here
            unsigned char k;
void main(void)
{


// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x40;
MCUCR=0x01;
GIFR=0x40;

DDRB=0b00011101;
PORTB=0;

// Global enable interrupts
#asm("sei")
         k=0;  
          PORTB.0=0;
while (1)
      {
      PORTB.3=1    ;
         delay_us (200);
         PORTB.3=0;
         delay_us (200);
      };
}


// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{

  if (k==1) {
  //sleep_disable()
  ;PORTB.0=1;k=0;} else {k=1;PORTB.0=1;
  //sleep_enable();  powerdown ();
  }
  
  

}  
Главная заповедь электронщика:- Не крути две ручки сразу
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

по подробней опишите, что нужно и что куда подключено.
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

к выводу INT0 подключена кнопка. На одну любую ногу порта светодиод. к примеру на PB0.
MK attiny13
Главная заповедь электронщика:- Не крути две ручки сразу
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

А зачем тогда прерывание на любое изменение уровня? Включите подтяжку, и установите прерывание по заднему фронту, кнопочку на землю, и флаг при выходе из спячки "1" при засыпании "0", в прерывании проверяйте его.
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

Код: Выделить всё

if (k==1) {sleep_disable();PORTB.0=1;k=0;} 
else 
{k=1;PORTB.0=1;sleep_enable();  powerdown ();}
У Вас уже вроде все написано было, только с прерыванием разберитесь, и при объявлении k=1.
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Проверяю свой код в протеусе, тупит прерывание. Пока кнопка нажата - светодиод горит как отпустил все погасло. и в слип тоже не впадает я не пойму что не так в коде ?
Главная заповедь электронщика:- Не крути две ручки сразу
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

так если прямой ответ Вас не устраивает, то задаю наводящие вопросы.
1) Что у Вас на ножке INT0, когда кнопка отпущени и когда нажата?
2) При каких условиях возникает прерывание?
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

artmasterpro писал(а):Проверяю свой код в протеусе, тупит прерывание. Пока кнопка нажата - светодиод горит как отпустил все погасло. и в слип тоже не впадает я не пойму что не так в коде ?
Неправильно то что ты усыпляешь МК из прерывания, а в этот момент сами прерывания запрещены. Так очевидно работать не будет, лучше сделать переменную флажок и менять ее в прерывании, а в основном цикле ее проверять и усыплять МК.
Информация по RLC mini находится >тут<
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

про слип понял.
Вот во вложении файл в протеусе. Если не лень глянь - там слип отключен отдно прерывание но чегото не работает !
1) Что у Вас на ножке INT0, когда кнопка отпущени и когда нажата?
2) При каких условиях возникает прерывание?
прерывание возникает по изменению состояния ноги int0 - помоему по фронту
Вложения
test.zip
(20.25 КБ) 217 скачиваний
Главная заповедь электронщика:- Не крути две ручки сразу
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

artmasterpro писал(а):
прерывание возникает по изменению состояния ноги int0 - помоему по фронту
у Вас прерывание возникает при любом изменении уровня на int0, вот и получается, что нажал на кнопку - возникло прерывание(выполнился код внутри), отжал кнопку - снова возникло прерывание (снова выполнился код внутри). Т.е. когда просто нажал на кнопку, то прерывание вызовится, как минимум дважды , а если прибавить дребезг контактов ......
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

В проге стоит частота 1 МГц, а в протеусе тактирование от внутреннего генератора 9,6 МГц с делением на 8 = нестыковочка?
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Вернул все как надо в настройках МК , тем не мение ничего не изменилось. :cry:
Главная заповедь электронщика:- Не крути две ручки сразу
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

Открываешь даташит и читаешь раздел 9, точнее 9.3, особое внимание удили таблице 9-2. Если с англицким совсем трудно, то скачиваешь книгу Белова "Микроконтроллеры AVR в радиолюбительской практике" и читаешь там.
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

C английским норма полная !

Увы в даташите http://www.atmel.com/dyn/resources/prod ... oc1187.pdf
разделы не пронумерованы !

ЗА книгу спасибо скачал - читаю !
Главная заповедь электронщика:- Не крути две ручки сразу
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

Что значит не пронумерованы? :shock: А я по твоему откуда нумерацию взял?
http://www.atmel.com/dyn/resources/prod ... oc2535.pdf
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Воот ! все верно в твоем нумерация есть - а открой мой тама нет !

Изменил код:

Код: Выделить всё

GIMSK=0b01000000;
MCUCR=0b00000000;
GIFR=0b00000000;

DDRB=0b00011101;
PORTB=0;
Теперь происходит следующее: при нажатии на кнопку светодиод загораеться и некаких действий при повторном нажатии не происходит !!!!!

т.е. потушить его не получаеться ))
Главная заповедь электронщика:- Не крути две ручки сразу
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

опиши словами, что ты хотел сделать!? Ты понимаешь, что такое передний фронт и задний фронт сигнала?
вот что у меня получилось
Вложения
test2.rar
1
(46.78 КБ) 277 скачиваний
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Вот то что у тебя получилось, я и хотел сделать.

Передний фронт - это левая нарастающая импульса а задний фронт это правая спадающая.


Скажи в чем разница между твоей и моей прогой ?

Я просто хочу понять в чом ошибка была ?
Главная заповедь электронщика:- Не крути две ручки сразу
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

artmasterpro писал(а): Скажи в чем разница между твоей и моей прогой ?

Я просто хочу понять в чом ошибка была ?
Что бы понять, разложи управляющие регистры в двоичной форме и найди в даташите за что отвечает каждый бит, вот тогда поймешь и будешь знать где искать нужную информацию. :)
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

все получилось спасибо. Щас возьмус за слип, постараюсь без повода не тревожить !
Главная заповедь электронщика:- Не крути две ручки сразу
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»