Страница 1 из 1

Помогите настроить таймер 1 на AT90USB162

Добавлено: Пт июн 20, 2014 11:49:51
ESWANT
SysRED_ON(); - это включается светодиод для тестирования
Он мигает где то с частотой 2Гц на глаз
а должен менять свое состояние 1кГц

причем библиотечная задержка работает правильно _delay_ms(1000); SysRED_ON(); _delay_ms(1000);

GCC, WinAVR , внешний кварц 16МГц


Где я гоню?
Либо таймеры неправильно , либо тактируется откуда-то не оттуда откуда надо
Фьюзы прикрепил

Забыл сказать на примере (lufa) USB-HID устройство планирую и вот добавляю свой функционал
(lufa же не использует для своих целей таймеры?)


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

#define F_CPU 16000000UL
#include "avr\io.h"//описаны имена портов в том числе
#include "util\delay.h"
#include <avr/interrupt.h>


#include "GenericHID.h"



ISR( TIMER1_OVF_vect )   //   1 кГц
{
TCNT1H=0x00;//переустановка таймера 
TCNT1L=0x06;

if (g==0) {SysRED_ON(); g=1;} else  {SysRED_OFF();g=0;}

}


//настройка таймеров

TCCR1A=0x00;
TCCR1B=0x03; //предделитель до 250 кГц
TCNT1H=0x00;
TCNT1L=0x06;//переустановка чтобы 250кГц / (256-6) =  1кГц
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;

TIMSK1=0x01;


Re: Помогите настроить таймер 1 на AT90USB162

Добавлено: Пт июн 20, 2014 13:12:47
urry
таймер настроен на прерывание по переполнению, которое состоится, когда он досчитает до 0xFFFF,
те в вашем случае нужно записать
TCNT1H=0xFF;//переустановка таймера
TCNT1L=0x06;

Re: Помогите настроить таймер 1 на AT90USB162

Добавлено: Пт июн 20, 2014 13:26:38
ESWANT
urry писал(а):таймер настроен на прерывание по переполнению, которое состоится, когда он досчитает до 0xFFFF,
те в вашем случае нужно записать
TCNT1H=0xFF;//переустановка таймера
TCNT1L=0x06;
Спасибо
Буду пробовать
Точно я же использовал только 8 разрядные таймеры только (AtMega32 Timer0 и Timer2 )
А здесь же нету 2-го а первый то шестнадцатиразрядный, я и думаю почему же работало....
Спасибо, скорей всего получится