Задача таймера, минуты и секунды. Настраиваю минуты (секунды) к примеру надо что бы считал с 5 минут и до 00.00 отсановился и выполнил какое то действие.
Таймер обратного отсчета на AVR язык Си
- Сообщения: 75
- Зарегистрирован: Пн ноя 21, 2011 13:03:33
Добрый вечер! Пытаюсь сделать таймер с выводом на LCD дисплей. В первой строчке показывает часы, а во второй таймер обратного отсчета. Время все прекрасно идет, показывает, настраивается, а вот с таймером что то не получается.
Задача таймера, минуты и секунды. Настраиваю минуты (секунды) к примеру надо что бы считал с 5 минут и до 00.00 отсановился и выполнил какое то действие.
Задача таймера, минуты и секунды. Настраиваю минуты (секунды) к примеру надо что бы считал с 5 минут и до 00.00 отсановился и выполнил какое то действие.
- Реклама
- Сообщения: 75
- Зарегистрирован: Пн ноя 21, 2011 13:03:33
это у вас в коде что-то не так
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 782
- Зарегистрирован: Вс фев 04, 2007 16:32:06
не знаю как у вас там что сделано и как правильней сделать, не занимался часами.
Но, время вы берёте от часов реального времени ? т.е. отдельная микросхема стоит? или у вас в микроконтроллере уже есть часы?
что вам мешает запомнить время в часах реальных.
к примеру запомнили 12:05
обратный отсчёт 00:05
---------------
и отслеживать так время
если ((запомненное+обратный отсчёт)-текущее)==0 то действие
, чтоб не использовать таймер/счётчик дополнительно. Хотя может правильней использовать таймер счётчик?
ну без программы и того что у вас там есть больше ничего сказать не могу.
Но, время вы берёте от часов реального времени ? т.е. отдельная микросхема стоит? или у вас в микроконтроллере уже есть часы?
что вам мешает запомнить время в часах реальных.
к примеру запомнили 12:05
обратный отсчёт 00:05
---------------
и отслеживать так время
если ((запомненное+обратный отсчёт)-текущее)==0 то действие
, чтоб не использовать таймер/счётчик дополнительно. Хотя может правильней использовать таймер счётчик?
ну без программы и того что у вас там есть больше ничего сказать не могу.
- Сообщения: 75
- Зарегистрирован: Пн ноя 21, 2011 13:03:33
Вот с кодом и не могу разобраться.ARV писал(а):это у вас в коде что-то не так
- Реклама
Т.е. код где-то существует? Тогда шансы есть разобраться.aleksei18rus писал(а):Вот с кодом и не могу разобраться.
- Сообщения: 75
- Зарегистрирован: Пн ноя 21, 2011 13:03:33
yaotzin писал(а):не знаю как у вас там что сделано и как правильней сделать, не занимался часами.
Но, время вы берёте от часов реального времени ? т.е. отдельная микросхема стоит? или у вас в микроконтроллере уже есть часы?
что вам мешает запомнить время в часах реальных.
к примеру запомнили 12:05
обратный отсчёт 00:05
---------------
и отслеживать так время
если ((запомненное+обратный отсчёт)-текущее)==0 то действие
, чтоб не использовать таймер/счётчик дополнительно. Хотя может правильней использовать таймер счётчик?
ну без программы и того что у вас там есть больше ничего сказать не могу.
Часы написаны через прерывания, прерывания 1 раз в секунду то что мне и нужно.
исправьте ошибку в коде, делов-то!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Я так понимаю, человек просто пришёл поделиться несчастьем, а не за помощью. Ну дак поддержим его ! Пожелаем удачи во всём разобраться !
Давай, Алексей, мы с тобой мысленно !
Давай, Алексей, мы с тобой мысленно !
aleksei18rus, Вам три четыре раза намекнули. Ну давайте "жирно" объясню. Вы сообщили формчанами что у Вас что-то не работает и что? Все дружно Вам посочувствовали. Вопрос то у Вас какой?
Задайте четкий вопрос и к вопросу приложите некие дополнения, зачастую требуются схемы, алгоритм, исходник и пр. в зависимости от вопроса.
Задайте четкий вопрос и к вопросу приложите некие дополнения, зачастую требуются схемы, алгоритм, исходник и пр. в зависимости от вопроса.
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Если не забывать про первую серию этого сиквела, то - пять раз.Z_h_e писал(а):aleksei18rus, Вам три четыре раза намекнули.
Последний раз редактировалось Pnjom-Penb Ср фев 10, 2016 18:20:02, всего редактировалось 1 раз.
- Сообщения: 782
- Зарегистрирован: Вс фев 04, 2007 16:32:06
aleksei18rus без кода я вам помочь не могу.
когда нажали кнопку обратного отсчёта то
запомнили секунды в переменную обратного отсчёта
в прерывании где +1сек у вас постоянно, вычитаете с переменной -1секунду
ну и где либо делаете сравнение если (переменная с обратным отсчётом==0) то делаете там что либо
когда нажали кнопку обратного отсчёта то
запомнили секунды в переменную обратного отсчёта
в прерывании где +1сек у вас постоянно, вычитаете с переменной -1секунду
ну и где либо делаете сравнение если (переменная с обратным отсчётом==0) то делаете там что либо
Pnjom-Penb писал(а):Если не забывать про первую серию этого сиквела, то - пять раз.Z_h_e писал(а):aleksei18rus, Вам три четыре раза намекнули.
Интересно, неужели человек думает, что создавая множество тем, его поймут быстрее ... ?
Повангую. Сейчас чел огорчится на всех и, возможно, начнёт высказывать "Для чего же нужны форумы, и т.д...".
- Сообщения: 75
- Зарегистрирован: Пн ноя 21, 2011 13:03:33
Мне в личку FAKIR написал что нужно в другой раздел написать, ну я понял что сюда.
Он все правильно сказал. Тут люди сердобольные, проникнуться Вашей бедой, поплачут вместе с Вамиaleksei18rus писал(а):Мне в личку FAKIR ... ну я понял что сюда.
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Да, они не верют в телепатию и телекинез! Они бы даже в электричество не верили, как та старушка с Вороньей слободки, но это у них не получается никак - как начнут не верить, так все сразу само-собой заканчивается.Z_h_e писал(а):Не то что эти твари бессердечные, я про ПЛИСовцов.
(Все же, полагаю, Факир "Мяу" имел ввиду.)
- Сообщения: 75
- Зарегистрирован: Пн ноя 21, 2011 13:03:33
Как смог так и написал не пинайте за код, главное как ни как работает.
Код: Выделить всё
#include <tiny2313a.h>
#include <lcd.h>
#include <delay.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
eeprom char ee_min1;
//eeprom char ee_sec1;
char chas;
char min;
char sec;
char min1;
char sec1=0;
bit start=0;
bit stop=0;
/////////////////////////////////////////////////////////////////////////////////////////////////////////// прерывания
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
/////////////////////////////////////////////////////////////////////////////////////////////////////////// счетчик часов
sec++;
if (sec==60)
{sec=0; min++;}
if (min==60)
{min=0; chas++;}
if (chas==24)
{chas=0;min=0;sec=0;}
/////////////////////////////////////////////////////////////////////////////////////////////////////////// счетчик таймера
тут бла бла бла таймер
}
TCNT1=0;
}
void vremya ()
{ lcd_gotoxy (0,0);
lcd_putchar(chas/10+48);
lcd_putchar(chas%10+48);
lcd_putsf (":");
lcd_gotoxy (3,0);
lcd_putchar(min/10+48);
lcd_putchar(min%10+48);
lcd_putsf (":");
lcd_gotoxy (6,0);
lcd_putchar(sec/10+48);
lcd_putchar(sec%10+48);
lcd_gotoxy (9,0);
lcd_putsf("GLAZOV");
}
void timer ()
{ lcd_gotoxy (0,1);
lcd_putsf("<<<< ");
lcd_putchar(min1/10+48);
lcd_putchar(min1%10+48);
lcd_putsf (":");
lcd_putchar(sec1/10+48);
lcd_putchar(sec1%10+48);
lcd_putsf(" >>>>");
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////// програмМа
void main(void)
{PORTD=0xFF;
DDRD=0x00;
lcd_init(16);
TCCR1B=0x0C;
TIMSK=0xE0;
OCR1A=0x7A12;
lcd_gotoxy (0,0);
lcd_putsf ("FOOTBALL");
lcd_gotoxy (8,1);
lcd_putsf ("PROGRESS");
delay_ms (950);
lcd_clear();
#asm ("sei")
while (1)
{vremya();
timer();
while (PIND.2==0)
{
if (PIND.0==0) {delay_ms (250); min++;}
if (PIND.1==0) {delay_ms (250); chas++;}
vremya();
}
if (PIND.0==0 & stop==0) {start=1;}
if (PIND.1==0) {delay_ms(150);min1++; ee_min1=min1; delay_ms (20);}
if (min1==60) {min1=0;}
timer();
}
}
- Сообщения: 593
- Зарегистрирован: Ср янв 06, 2010 10:01:46
Тут ошибка, я думаю.aleksei18rus писал(а):if (PIND.0==0 & stop==0) {start=1;}
И для нормальной работы заведите переменную, где будете хранить состояние таймера: запущен, остановлен, досчитал до конца и т.д. В прерывании проверяйте /изменяйте эту переменную, и в главном цикле проверяйте / изменяйте.
И еще общая рекомендация - в дефайнах заменяйте номера портов на осмысленные наименования, так вам и в последствии будет гораздо проще разобраться и изменения в проект вносить гораздо проще. Например
Код: Выделить всё
#define BUTTON_MODE PINB.0- Сообщения: 75
- Зарегистрирован: Пн ноя 21, 2011 13:03:33
Нет все нормально она отрабатывала, просто отбратный отсчет не получается сделать.
- Сообщения: 75
- Зарегистрирован: Пн ноя 21, 2011 13:03:33
тоесть в коде буду писатьmetan писал(а):Тут ошибка, я думаю.aleksei18rus писал(а):if (PIND.0==0 & stop==0) {start=1;}
И для нормальной работы заведите переменную, где будете хранить состояние таймера: запущен, остановлен, досчитал до конца и т.д. В прерывании проверяйте /изменяйте эту переменную, и в главном цикле проверяйте / изменяйте.
И еще общая рекомендация - в дефайнах заменяйте номера портов на осмысленные наименования, так вам и в последствии будет гораздо проще разобраться и изменения в проект вносить гораздо проще. НапримерКод: Выделить всё
#define BUTTON_MODE PINB.0
Код: Выделить всё
if (BUTTON_MODE == 0)



