Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

PIC, flag BITS, "_must_ be cleared in software" ?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=1293
Страница 1 от 1

Автор:  the_real_maniac [ Нед Ное 20, 2005 12:29 am ]
Заглавие:  PIC, flag BITS, "_must_ be cleared in software" ?

Правя разлика м/у must и can,но все пак колко must трябва да е :) :lol:

Т.е ще почне ли ПИК-а да не работи правилно, ако не изчистя даден Флаг бит (примерно EEIF ) ?

Благодаря предварително :P

edit:

сигурно се питате , че какво толкова 1 ред , 1 инструкция повече и все пак искам да знам, защото си мисля , че за прегледност някои път е хубаво да се сложи ред, който не е нужен, но някои път за прегледност , ако може се спестява някои ред. ;) :) :roll:

Автор:  Nikola Kirov [ Нед Ное 20, 2005 12:51 am ]
Заглавие: 

Ами вече взех да ги позабрявям пиковете ама имам спомени че като не го изтриеш съответното прекъсване се изпълнява циклично докато не го изтриеш флага.

Автор:  Gogo [ Нед Ное 20, 2005 1:21 am ]
Заглавие: 

Всички битове за които пише "must be cleared in software", трябва да ги нулираш. Няма начин - ще добавиш още едни ред. Иначе ще стане точно както казва Никола. На симулатора може да видиш какъв е ефекта.

Автор:  ToHu [ Нед Ное 20, 2005 5:02 am ]
Заглавие: 

Освен ако не си забранил прекъсването да речем, не напразно са написали must, щом го ползваш като прекъсване задължително триеш.

Автор:  the_real_maniac [ Нед Ное 20, 2005 10:59 am ]
Заглавие: 

Е ок :) Значи аз питам , щото никъде не са написали , освен този must , какво би станало, ако не се нулира.

А иначе моята логика , защо може би могло да не се нулира е защото е FLAG bit - или да го кажа така - го възприемах само като "уведомяващ бит" ;)

Благодаря за отговорите. :)

Автор:  Цецо [ Нед Ное 20, 2005 12:23 pm ]
Заглавие: 

Ами те нещата са горе долу ясни. Писано е че е твоя грижа да го нулираш. Знаеш какво точно прави бита. Значи знаеш какво ще стане ако не го нулираш. Ако това което ще стане не те притеснява - не го нулираш.

Must значи че е твоя отговорността. Ако искаш/ако не искаш - както искаш.

Автор:  the_real_maniac [ Нед Ное 20, 2005 1:11 pm ]
Заглавие: 

Казах , че правя разлика м/у must / can , но все пак се казва, че щом flag bit X е 1 , значи е настъпил int X , а не че това прексъване ще се повтаря :?

Автор:  bateAz [ Нед Ное 20, 2005 1:23 pm ]
Заглавие: 

Oбикновено този бит указва на CPU-то, че трябва да изпълни прекъсването. Тези механизми действат така:
1. нещо се случва и битът, който обсъждаше досега, се вдига.
2. ядрото вижда, че 'онзи бит' е вдигнат, и винаги, когато прекъсванията са разрешени, скача да изпълнява съответния IRS
3. да ама, като скочи, си забранява прекъсванията. Оттук нанатък 'онзи бит' не влияе върху хода на историята, защото прекъсванията са забранени.
Т.е. след като веднъж 'скочи', повече не повтаря.
4. твоята ISR прави нещо и излиза.
5. при излизането прекъсванията се разрешават. 'Онзи бит' пак става депутат в НС на CPU-то.
И сега е веселбата: ако 'онзи бит' все още е вдигнат, отиваме в т.2.
Какъв е изходът : в т.4 битът трябва да се нулира.

Автор:  Nikola Kirov [ Нед Ное 20, 2005 1:31 pm ]
Заглавие: 

Много добре ти го обясни батето.
Ако не ползваш прекъсването и е забранено тогава това си е е точно информационен флаг вдига се се при настъпване на събитието и си стои вдигнат докато софтуерно не го изчистиш. Тогава в зависимост от логиката на програмата може и да не го чистиш всеки път.
В по свястните процесори тоя тип флагове се изчистват автоматично след обработване на прекъсването.

Автор:  the_real_maniac [ Нед Ное 20, 2005 3:20 pm ]
Заглавие: 

bateAz написа:
Oбикновено този бит указва на CPU-то, че трябва да изпълни прекъсването. Тези механизми действат така:
1. нещо се случва и битът, който обсъждаше досега, се вдига.
2. ядрото вижда, че 'онзи бит' е вдигнат, и винаги, когато прекъсванията са разрешени, скача да изпълнява съответния IRS
3. да ама, като скочи, си забранява прекъсванията. Оттук нанатък 'онзи бит' не влияе върху хода на историята, защото прекъсванията са забранени.
Т.е. след като веднъж 'скочи', повече не повтаря.
4. твоята ISR прави нещо и излиза.
5. при излизането прекъсванията се разрешават. 'Онзи бит' пак става депутат в НС на CPU-то.
И сега е веселбата: ако 'онзи бит' все още е вдигнат, отиваме в т.2.
Какъв е изходът : в т.4 битът трябва да се нулира.


След като ми казаха , че ще почне да се върти предположих горе-долу , че това става, но наистина го обясни перфектно ! Благодаря. :)
Сега всичко е кристално ясно :supz:

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/