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

 
 
> AVRStudio, косяк какойто
viael
сообщение Sep 17 2006, 13:05
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979



Пишу прогу в яре,отлаживаюсь в студии.Вот кусок кода на С
Код
    SETBIT(TIFR1,ICF1);//clear icf1 interrupt flag  
    TCNT1=0;            //clear timer1
    SETBIT(TIFR1,TOV1); //clear overflow interrpt flag for timer1

и дизасемблерный
Код
99:           SETBIT(TIFR1,ICF1);//clear icf1 interrupt flag  
+0000015A:   9AB5        SBI     0x16,5           Set bit in I/O register
100:          TCNT1=0;            //clear timer1
+0000015B:   D011        RCALL   PC+0x0012        Relative call subroutine
101:          SETBIT(TIFR1,TOV1); //clear overflow interrpt flag for timer1
+0000015C:   9AB0        SBI     0x16,0           Set bit in I/O register


Вопрос такой кманда SBI 0x16,5 должна сбросить 5-й бит в регистре TIFR1, а если верить симулятору AVRStudio то очищается весь регистр целиком.Это как понимать?Глюк симулятора?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
junoSynthesizer
сообщение Sep 17 2006, 20:27
Сообщение #2


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

Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397



что то мне тут не понятно - тоже как новичку, работающему с иаром.


функция SETBIT(TIFR1,ICF1)


у меня это расписано в хэдэре так:

#define setbit(p,n) (p|=bit(n))
#define clrbit(p,n) (p&=~bit(n))
а у вас?


следовательно, мне не понятно почему:
если вам надо очитстить бит, вы делаете СЭТБИТ а не ЦЛРБИТ


--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 17 2006, 20:42
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(junoSynthesizer @ Sep 18 2006, 00:27) *
что то мне тут не понятно - тоже как новичку, работающему с иаром.


функция SETBIT(TIFR1,ICF1)


у меня это расписано в хэдэре так:

#define setbit(p,n) (p|=bit(n))
#define clrbit(p,n) (p&=~bit(n))
а у вас?


следовательно, мне не понятно почему:
если вам надо очитстить бит, вы делаете СЭТБИТ а не ЦЛРБИТ

ну просто внимательно читаем Datasheet:

• Bit 1 – OCF1A: Timer/Counter1, Output Compare A Match Flag

и т.д. ...

..........................
Alternatively, OCF1A can be cleared by writing a logic one to its bit location.
• Bit 0 – TOV1: Timer/Counter1, Overflow Flag
..........................
Alternatively, TOV1 can be cleared by writing a logic one to its bit location.
Go to the top of the page
 
+Quote Post



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

 


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


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