В атмел студио, хотел написать код.запускаю таймер с предделителем 64, частота мк 16МГц. 1 такт составляет 4мкс. Каждый раз присвоении tcnt счетчика умнажаю на 4.теперь как обнулить счетчик таймера
Чего Вы делаете? Немедленно выбросьте каку! "Умнажает" он! Вы ещё логарифм в прерывании считайте! Голову то надо с собой носить, а не бросать где попало!
Yer, Вы бы код, для начала, выложили .. станет яснее что Вы там и кому присваиваете и чего опасаетесь .. а так кроме стеба, ваши сумбурные сообщения ни к чему не приводят. Впрочем, Вы уже и сами доперли.
http://arduino.ru/Reference/Micros
Вроде хорошо работает, пока никто не жаловался.
Так же, как и millis()
В атмел студио, хотел написать код.запускаю таймер с предделителем 64, частота мк 16МГц. 1 такт составляет 4мкс. Каждый раз присвоении tcnt счетчика умнажаю на 4.теперь как обнулить счетчик таймера
Спасибо за совет
Если у вас возникают такие вопросы - значит вы нифига не понимаете в таймерах.
Правильный ответ - обнулять не нужно вовсе.
если присваевать значение счетчика к uint_8 типу оно заполнится и что будет, думаю тут сидять более умные люди чем вы. конечно если вы поняли
если присваевать значение счетчика к uint_8 типу оно заполнится и что будет, думаю тут сидять более умные люди чем вы. конечно если вы поняли
Само собой, тут сидят более умные люди, чем мы с b707, именно поэтому они Ваш бред вообще комментировать не стали - это мы - дурачки.
если присваевать значение счетчика к uint_8 типу оно заполнится и что будет, думаю тут сидять более умные люди чем вы. конечно если вы поняли
Как заполнится - у него юшка через край польётся. Мсье б почитать про переполнение, хотя бы вполглазика...
Так же, как и millis()
Только в 1000 раз быстрее....
если присваевать значение счетчика к uint_8 типу оно заполнится и что будет, думаю тут сидять более умные люди чем вы. конечно если вы поняли
Не поленись - скомпилируй этот скетч, открой монитор порта и любуйся:
void setup() { Serial.begin(9600); uint8_t counter = 0; for(int i=0;i<500;i++) { Serial.println(++counter); delay(50); } } void loop() {}И постарайся осознать, что происходит.
Yer, Вы бы код, для начала, выложили .. станет яснее что Вы там и кому присваиваете и чего опасаетесь .. а так кроме стеба, ваши сумбурные сообщения ни к чему не приводят. Впрочем, Вы уже и сами доперли.
#include <avr/io.h> #include <avr/interrupt.h> volatile uint32_t interval=0; volatile uint32_t T=0; unsigned char d,d1; volatile int d2,T2; int main(void) { //****timer1******* TCCR1B |= (1<<CS10)|(1<<CS11); // CLK/64 TCNT1=0; //******************** DDRB |=(1<<PB5); PORTB &=~(1<<PB5); asm("sei"); while(1) { asm("cli"); T=TCNT1; T=T*4; if (T-interval>=100000)// каждый 100миллисек переводит состояние {PORTB^=(1<<PB5); interval=T; } asm("sei"); } }