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

 
 
> вызвать прерывание каждые 50мсек
romez777
сообщение Nov 19 2004, 07:54
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Приветствую.

Продолжаю разборки с atmega162. Вот такой кусок кода, использующий прерывание и таймер (использую WinAVR и AVRstudio для отладки):

#include <inttypes.h>
#include <interrupt.h>
#include <io.h>
#include <sig-avr.h>

SIGNAL(SIG_OUTPUT_COMPARE1A)
{
// далее обработка ......
// .........
}

void Timer1_Init(void)
{
SREG = (1 << SREG_I); // enable global interrupt
TCCR1A = 0x00;
TCCR1B = 0x04; // set prescale
TCCR1B = (1 << CS10) | (1 << WGM12);

TIMSK = (1 << OCIE1A);

// load value
TCNT1H = 0xFE;
TCNT1L = 0x7A;

// set compare register for 50ms
OCR1AH = 0x01;
OCR1AL = 0x86;
}

int main(void)
{
Timer1_Init();

// DDRB = 0xFF;
while (1)
;
return 1;
}

На первый взгляд все правильно, но не сдается мне что не получаю я задержки в 50мсек, а проверить в симуляторе, как предложил IgorKossak, не могу (симулятор не позволяет).

Вообщем, я окончательно запутался smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lamerok
сообщение Nov 22 2004, 15:17
Сообщение #2


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

Группа: Свой
Сообщений: 135
Регистрация: 22-06-04
Из: Челябинск
Пользователь №: 88



romez777
1. В режиме слейва данные передаются только по запросу!!!!
Куды вы их будете выплевывать????? Если запроса нет??? И главное как, если вас мастер не тактирует???Кроме того, они атоматом сами выплевываются из регистра передачи при запросе. Нужно только его вовремя заполнять (регистр передачи)!

2. Еще раз поясните для какой цели вам задержка на 50 мс???

Если вы в режиме мастера и вам каждые 50 мс надо че-то выкидывать, то в обрабочике По сравнению можете просто вставить вывод первого байта буфера запроса, остальное автоматом можно выплюнуть по прерыванию по передаче.

Я че-то уже ничего не понимаю.. объясните задачу в целом!!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- romez777   вызвать прерывание каждые 50мсек   Nov 19 2004, 07:54
- - Alex2172   А осциллографа то нет под рукой? (Ну или хотябы св...   Nov 19 2004, 08:13
- - romez777   Цитата(Alex2172 @ Nov 19 2004, 11:13 AM)А осц...   Nov 19 2004, 08:25
- - Styv   Попробуй подели генерируемую частоту (~50мс) на 2...   Nov 19 2004, 08:59
- - KRS   А зачем при инициализации таймера в TCNT писать 0x...   Nov 19 2004, 11:15
- - lamerok   Кодvoid InitTimer (void) {   TCCR1A ...   Nov 19 2004, 11:55
- - lamerok   Блин нечаяно нажалось, первое не смотрите.... Вот ...   Nov 19 2004, 12:07
- - lamerok   Еще поправим маленько. Вечер глучу малость Код#...   Nov 19 2004, 12:10
- - romez777   Цитата(KRS @ Nov 19 2004, 02:15 PM)А зачем пр...   Nov 22 2004, 00:08
- - romez777   Цитата(lamerok @ Nov 19 2004, 03:07 PM)Блин н...   Nov 22 2004, 02:14
- - KRS   Цитата(romez777 @ Nov 22 2004, 03:08 AM)Так п...   Nov 22 2004, 10:27
- - romez777   Цитата(KRS @ Nov 22 2004, 01:27 PM)Изначально...   Nov 22 2004, 10:48
- - KRS   Цитата(romez777 @ Nov 22 2004, 01:48 PM)Но во...   Nov 22 2004, 11:19
- - romez777   Цитата(KRS @ Nov 22 2004, 02:19 PM)Так и долж...   Nov 22 2004, 11:52
- - KRS   Цитата(romez777 @ Nov 22 2004, 02:52 PM)Цитат...   Nov 22 2004, 12:04
- - romez777   Цитата(KRS @ Nov 22 2004, 03:04 PM)А как можн...   Nov 22 2004, 14:37
- - IgorKossak   Цитата(KRS @ Nov 22 2004, 02:19 PM)Но в любом...   Nov 22 2004, 15:34
- - Fish   Цитата(lamerok @ Nov 19 2004, 03:10 PM)Еще по...   Nov 23 2004, 11:42
- - romez777   Цитата(Fish @ Nov 23 2004, 02:42 PM)2 lamerok...   Nov 23 2004, 12:18
- - lamerok   Fish 1. Это я взял, из программы, где необходимо б...   Nov 24 2004, 04:33
- - lamerok   Там везде должно быть SBCI R17,0xYY вместо SBCI R...   Nov 24 2004, 05:20
- - Fish   Согласен, написал глупость OCR1B = TCNT1 + PERIOD;...   Nov 24 2004, 05:33


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:21
Рейтинг@Mail.ru


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