Программирование WinAVR ATMEGA8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Alexander H
Встал на лапы
Сообщения: 83
Зарегистрирован: Вт фев 24, 2009 20:37:59

Программирование WinAVR ATMEGA8

Сообщение Alexander H »

Помогите разобраться с программой
Уже запарился

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

#include <avr/io.h>
#include <avr/interrupt.h>

char time=0;
   
ISR (TIMER1_OVF_vect)
{
   TCNT1=49911;
   if (time) time--; else PORTC=0x00;
}

int main (void) {
   DDRC=0xFF; PORTC=0x00;
   DDRB=0x00; PORTB=0xFF;
   
   TCCR1A=0;
   TCCR1B=(1<<CS11)|(1<<CS10);
   TCNT1=49911;
   TIFR=0;
   TIMSK=(1<<TOIE1);
   sei();
   
while(1)
{
   if ((~PINB)&(0b00000001))
      if (!time)
      {
         time=5;
         PORTC=0xFF;
         TCNT1=49911;
         }
    }                   
}

При нажатии на кнопку на порт-С подается + на 5 сек.

Проблемма: при повторном нажатии ничего не происходит.
Изображение
Вложения
1111.rar
(13 КБ) 210 скачиваний
1.jpg
(65.06 КБ) 1554 скачивания
Человек с умной головой ошибается.
С пустой - никогда.
Аватара пользователя
Antifritz
Прорезались зубы
Сообщения: 222
Зарегистрирован: Чт июл 08, 2010 01:03:40
Откуда: Украина, Киев

Re: Программирование WinAVR ATMEGA8

Сообщение Antifritz »

Уберите строку

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

if (!time)

и будет Вам счастье. Или в чем суть вопроса?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Программирование WinAVR ATMEGA8

Сообщение SubDia »

Подтянуть вывод PB0 к питанию через резистор. А еще лучше - кнопку к питанию через резистор, а вывод PB0 подтянуть к земле. Точнее, точку соединения PB0 и кнопки.
Тогда на PB0 при отжатой кнопке будет постоянно 0, а при нажатии будет появляться 1.
И условие примет вид

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

if (PINB&0x01)
{...}
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

Re: Программирование WinAVR ATMEGA8

Сообщение watchmaker »

Подтянуть вывод PB0 к питанию через резистор. А еще лучше - кнопку к питанию через резистор


Первый вариант проще, он реализуется внутренними средствами МК. Поставить DDRB0=0, PORTB0=1 и всё.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Программирование WinAVR ATMEGA8

Сообщение SubDia »

Верно. Я даже не обратил внимания, что у ТС это и реализовано. Пардоньте, мсье. =)))
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Alexander H
Встал на лапы
Сообщения: 83
Зарегистрирован: Вт фев 24, 2009 20:37:59

Re: Программирование WinAVR ATMEGA8

Сообщение Alexander H »

Antifritz писал(а):Уберите строку

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

if (!time)

и будет Вам счастье. Или в чем суть вопроса?

Эта программа только часть кода от другой.
Я ее упростил только из-за этой проблеммы.
Так что это условие мне необходимо.
Проблемма как раз в этом условии.
Почему?
Человек с умной головой ошибается.
С пустой - никогда.
andries5
Родился
Сообщения: 5
Зарегистрирован: Пт фев 20, 2009 10:01:56
Откуда: Moldova

Re: Программирование WinAVR ATMEGA8

Сообщение andries5 »

Обьявите переменную "char time=0;" как "volatile char time=0;" и радуйтесь.
Аватара пользователя
Alexander H
Встал на лапы
Сообщения: 83
Зарегистрирован: Вт фев 24, 2009 20:37:59

Re: Программирование WinAVR ATMEGA8

Сообщение Alexander H »

andries5 писал(а):Обьявите переменную "char time=0;" как "volatile char time=0;" и радуйтесь.

Большое спасибо, все заработало.
Человек с умной головой ошибается.
С пустой - никогда.
Закрыто

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