|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 6:03 pm
|
Страница 1 от 1
|
[ 10 мнения ] |
|
PIC, flag BITS, "_must_ be cleared in software" ?
| Автор |
Съобщение |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
 PIC, flag BITS, "_must_ be cleared in software" ?
Правя разлика м/у must и can,но все пак колко must трябва да е
Т.е ще почне ли ПИК-а да не работи правилно, ако не изчистя даден Флаг бит ( примерно EEIF ) ?
Благодаря предварително
edit:
сигурно се питате , че какво толкова 1 ред , 1 инструкция повече и все пак искам да знам, защото си мисля , че за прегледност някои път е хубаво да се сложи ред, който не е нужен, но някои път за прегледност , ако може се спестява някои ред. 
|
| Нед Ное 20, 2005 12:29 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Ами вече взех да ги позабрявям пиковете ама имам спомени че като не го изтриеш съответното прекъсване се изпълнява циклично докато не го изтриеш флага.
|
| Нед Ное 20, 2005 12:51 am |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
Всички битове за които пише "must be cleared in software", трябва да ги нулираш. Няма начин - ще добавиш още едни ред. Иначе ще стане точно както казва Никола. На симулатора може да видиш какъв е ефекта.
|
| Нед Ное 20, 2005 1:21 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
Освен ако не си забранил прекъсването да речем, не напразно са написали must, щом го ползваш като прекъсване задължително триеш.
|
| Нед Ное 20, 2005 5:02 am |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
Е ок  Значи аз питам , щото никъде не са написали , освен този must , какво би станало, ако не се нулира.
А иначе моята логика , защо може би могло да не се нулира е защото е FLAG bit - или да го кажа така - го възприемах само като "уведомяващ бит"
Благодаря за отговорите. 
|
| Нед Ное 20, 2005 10:59 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Ами те нещата са горе долу ясни. Писано е че е твоя грижа да го нулираш. Знаеш какво точно прави бита. Значи знаеш какво ще стане ако не го нулираш. Ако това което ще стане не те притеснява - не го нулираш.
Must значи че е твоя отговорността. Ако искаш/ако не искаш - както искаш.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Нед Ное 20, 2005 12:23 pm |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
Казах , че правя разлика м/у must / can , но все пак се казва, че щом flag bit X е 1 , значи е настъпил int X , а не че това прексъване ще се повтаря 
|
| Нед Ное 20, 2005 1:11 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Oбикновено този бит указва на CPU-то, че трябва да изпълни прекъсването. Тези механизми действат така:
1. нещо се случва и битът, който обсъждаше досега, се вдига.
2. ядрото вижда, че 'онзи бит' е вдигнат, и винаги, когато прекъсванията са разрешени, скача да изпълнява съответния IRS
3. да ама, като скочи, си забранява прекъсванията. Оттук нанатък 'онзи бит' не влияе върху хода на историята, защото прекъсванията са забранени.
Т.е. след като веднъж 'скочи', повече не повтаря.
4. твоята ISR прави нещо и излиза.
5. при излизането прекъсванията се разрешават. 'Онзи бит' пак става депутат в НС на CPU-то.
И сега е веселбата: ако 'онзи бит' все още е вдигнат, отиваме в т.2.
Какъв е изходът : в т.4 битът трябва да се нулира.
|
| Нед Ное 20, 2005 1:23 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Много добре ти го обясни батето.
Ако не ползваш прекъсването и е забранено тогава това си е е точно информационен флаг вдига се се при настъпване на събитието и си стои вдигнат докато софтуерно не го изчистиш. Тогава в зависимост от логиката на програмата може и да не го чистиш всеки път.
В по свястните процесори тоя тип флагове се изчистват автоматично след обработване на прекъсването.
|
| Нед Ное 20, 2005 1:31 pm |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
 |  |  |  | bateAz написа: Oбикновено този бит указва на CPU-то, че трябва да изпълни прекъсването. Тези механизми действат така: 1. нещо се случва и битът, който обсъждаше досега, се вдига. 2. ядрото вижда, че 'онзи бит' е вдигнат, и винаги, когато прекъсванията са разрешени, скача да изпълнява съответния IRS 3. да ама, като скочи, си забранява прекъсванията. Оттук нанатък 'онзи бит' не влияе върху хода на историята, защото прекъсванията са забранени. Т.е. след като веднъж 'скочи', повече не повтаря. 4. твоята ISR прави нещо и излиза. 5. при излизането прекъсванията се разрешават. 'Онзи бит' пак става депутат в НС на CPU-то. И сега е веселбата: ако 'онзи бит' все още е вдигнат, отиваме в т.2. Какъв е изходът : в т.4 битът трябва да се нулира. |  |  |  |  |
След като ми казаха , че ще почне да се върти предположих горе-долу , че това става, но наистина го обясни перфектно ! Благодаря.
Сега всичко е кристално ясно 
|
| Нед Ное 20, 2005 3:20 pm |
|
|
|
Страница 1 от 1
|
[ 10 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: Google [Bot] и 7 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|