Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2018, 21:41

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 00:18 
Только пришел

Зарегистрирован: 16 окт 2017, 00:41
Сообщения: 27
Итак, имеем аттини2313 и семисегментник.
Задача: настроить таймер Т0, чтоб он давал преривание примерно 1000 раз в секунду(по моим расчетам виходит 1008 раз в секунду).
Я по каким-то урокам и даташиту написал такой код, но он вообще не работает(я осцилографом тикался в каждую ногу PORTB).
Итак, код:

Код:
ISR (TIMER0_COMPA_vect)
{
   PORTB!=PORTB;
}

int main(void) {
   //-----Variables declaration-----//
   int curTime = 11;
   //-----Startup initialization-----//
   DDRB=0b11011111;
   DDRD=0b01000111;
   //-----Timer initialization-----//
   TCCR0A|=(1<<WGM01);
   TCCR0B|=(1<<CS01|1<<CS00);
   OCR0A = 62;
   TIMSK|=(1<<OCIE0A);
   sei();
   //-----Main loop-----//
   while(1) {
      //showNum(curTime);
      //_delay_ms(10);
      //curTime++;
   }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 12:45 
Заглядывает иногда

Зарегистрирован: 10 май 2011, 12:39
Сообщения: 60
Откуда: Тольятти
Тактирование какое у мк?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 13:41 
Только пришел

Зарегистрирован: 16 окт 2017, 00:41
Сообщения: 27
4 мегагерца, внешний кварц. Все фюзи настроени правильно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 14:55 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2013, 00:58
Сообщения: 3058
Откуда: Тольятти
Код:
ISR (TIMER0_COMPA_vect)
{
   PORTB ~= PORTB;
}


или

Код:
ISR (TIMER0_COMPA_vect)
{
   PORTB ^= 0xFF;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 15:07 
Старожил
Аватара пользователя

Зарегистрирован: 14 апр 2014, 11:06
Сообщения: 1314
Откуда: Курск
Или
Код:
ISR (TIMER0_COMPA_vect)
{
   PINB = 0xFF;
}


Последний раз редактировалось Cthulhu 19 фев 2018, 15:40, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 15:33 
Только пришел

Зарегистрирован: 16 окт 2017, 00:41
Сообщения: 27
Да, спасибо, оно заработало(хотя частота в 8 раз меньше нужной). Взял пример с XOR. Спасибо всем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 15:48 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 86
Poseydon42 писал(а):
Да, спасибо, оно заработало(хотя частота в 8 раз меньше нужной). Взял пример с XOR. Спасибо всем.

есть такой фьюз CKDIV8, установите его в 1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 16:09 
Только пришел

Зарегистрирован: 16 окт 2017, 00:41
Сообщения: 27
OK


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 18:19 
Старожил
Аватара пользователя

Зарегистрирован: 18 апр 2017, 03:01
Сообщения: 848
Cthulhu писал(а):
Или
Код:
ISR (TIMER0_COMPA_vect)
{
   PINB = 0xFF;
}

разве на attiny2313 так можно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 18:23 
Старожил
Аватара пользователя

Зарегистрирован: 14 апр 2014, 11:06
Сообщения: 1314
Откуда: Курск
h4lf писал(а):
Cthulhu писал(а):
Или
Код:
ISR (TIMER0_COMPA_vect)
{
   PINB = 0xFF;
}

разве на attiny2313 так можно?

Из даташита на ATtiny2313:
Цитата:
10.1.2 Toggling the Pin
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.
Note that the SBI instruction can be used to toggle one single bit in a port.

Единственное только по одному пину, как это из СИ скомпилируется я хз


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 19 фев 2018, 19:15 
Старожил
Аватара пользователя

Зарегистрирован: 18 апр 2017, 03:01
Сообщения: 848
Да, точно, можно. Даже как-то и не думал, что attiny2313 настолько моложе atmega8 (а в ней такого нет).
Вроде нормально компилировалось (gcc):
Код:
       SET(LCD_SCE);            // Deselect Chip.
2c4:   5f 9a          sbi   0x0b, 7   ; 11

под макросом SET(bit) стандартное PORTx |= (1<<(bit))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу настроить таймер T0 на ATTiny2313
СообщениеДобавлено: 20 фев 2018, 15:33 
Только пришел

Зарегистрирован: 16 окт 2017, 00:41
Сообщения: 27
Теперь есть вторая проблема. Когда я обновляю дисплей из преривания таймера, у меня вигорают ножки PD2 и PD6. Ето уже вторая ссоженая тиня. Что делать? Схема внизу.Изображение


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB