реклама на сайте
подробности

 
 
> Таймер на 4 сек, нужен исходник
coolibin
сообщение Mar 28 2008, 07:56
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Нужен исходник на асме таймера срабатывающего каждые 4 сек(не обязательно, но желательно большой промежуток времени) на ATmega8. Даташит читал и понял что не хватает хорошего примера.


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lolful
сообщение Mar 28 2008, 10:21
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 27-11-07
Из: Пермь
Пользователь №: 32 732



void timer1_init(void){
//устанока таймера, не помню как делать - в даташите все написано
}

#pragma interrupt_handler timer1_ovf_isr:14
void timer1_ovf_isr(void)
{
counter++;
if (counter >= 400) doSomeThing();
}

void main(void){
timer1_init();
}

PS вектор прерывания переполнения таймера от 168 меги, писалось под icc avr

PPS по-моему частота внутреннего кварца 128кГц, опять же, в даташите все ясно написано

Сообщение отредактировал lolful - Mar 28 2008, 10:23
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 28 2008, 10:42
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Поправлю немного, вы забыли счётчик обнулить после достижения 400, ну и главный цикл в основной программе не помешает.
Код
void timer1_ovf_isr(void)
{
   counter++;
   if (counter >= 400)
  {
    counter=0;  
    doSomeThing();
  }
}
void main(void)
{
timer1_init();
asm("sei");
while(1);
}

Другой подход: что если подать на вход таймера1 частоту Fclk/1024, тогда для 16МГц клока переполнение наступит как раз через 4с, первое прерывание даст то, что надо, не надо будет ничего считать.

Фрагмент подпрограммы обработки прерываний переполнения таймера1 на ассемблере в предположении, что счётчик переполнений находится в (r25,r24). Счётчик работает на вычитание.
Код
   subi   r24,1
   sbci   r25,0
   brne   no4sec
   ldi    r24,low(400)
   ldi    r25,high(400)
   rcall  dosomething
no4sec:
   reti

Само собой разумеется, что статус-регистр и все модифицируемые регистры надо сохранять при входе в прерывание и затем восстанавливать при выходе.

Поправил while(1) для удобства пользования.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
megachip
сообщение Mar 28 2008, 10:53
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 13-06-05
Пользователь №: 5 967



И единичку наверно надо добавить.
while(1);
Go to the top of the page
 
+Quote Post
coolibin
сообщение Mar 28 2008, 11:34
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Ну а на асме как сделать?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- coolibin   Таймер на 4 сек   Mar 28 2008, 07:56
- - SasaVitebsk   Это для начинающих. 1) Пишется прерывание от тай...   Mar 28 2008, 08:27
|- - coolibin   Цитата(SasaVitebsk @ Mar 28 2008, 10:27) ...   Mar 28 2008, 09:41
|- - MicronSys   Цитата(coolibin @ Mar 28 2008, 15:34) Ну ...   Mar 28 2008, 12:00
|- - =GM=   Цитата(coolibin @ Mar 28 2008, 11:34) Ну ...   Mar 28 2008, 12:28
|- - coolibin   Всё равно не пойму, если биты CS00 = 1, CS01 = 0,...   Mar 28 2008, 13:45
|- - =GM=   Цитата(coolibin @ Mar 28 2008, 13:45) Всё...   Mar 28 2008, 14:05
|- - coolibin   Цитата(=GM= @ Mar 28 2008, 16:05) Это не ...   Mar 28 2008, 15:14
|- - Alex_Pol   Цитата(coolibin @ Mar 28 2008, 17:14) изи...   Mar 28 2008, 15:27
|- - coolibin   Цитата(Alex_Pol @ Mar 28 2008, 17:27) Это...   Mar 28 2008, 17:30
|- - Alex_Pol   Цитата(coolibin @ Mar 28 2008, 19:30) Вот...   Mar 28 2008, 18:51
|- - Дон Амброзио   Цитата(coolibin @ Mar 28 2008, 21:30) Вот...   Mar 30 2008, 16:23
- - Миха12345   ;8000000/256/256 = 122,0703125 .cseg .org 0 rjmp...   Mar 28 2008, 12:13
- - TomaT   Плохо учили матчасть! Нету в Меге никаких ...   Mar 28 2008, 18:32
- - akl   "Нужен исходник на асме таймера срабатывающег...   Mar 29 2008, 05:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01428 секунд с 7
ELECTRONIX ©2004-2016