Отговори на тема  [ 94 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5 ... 7  Следваща
Пикльовци - съвети 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Цецо написа:
А за препълването на UART-a, също не мога да ти възпройзведа проблема - за да го пробвам - препълвам UART-a. Детектирам грешката - изчитам буферите, рисетвам модула през CREN бита и след това пак започвам да приемам данни. Няма проблем. Е не ползвам 9 бит. И процесора е 18F452. Но проблем с успиване на UART-a, нямам. В интерес на истината съм правил доста устройства със RS232 комуникация, препълването на UART-а съм го виждал много пъти при разработката, но никога не съм имал случай процесора да ми умира след това, и да не мога да възобновя комуникацията. Може би не попадам в точно същите условия като теб.


Ама там има хардуерен буфер за UART-a ?????!!!!!!


Пон Апр 18, 2005 11:30 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
...


Последна промяна на Пон Яну 30, 2012 4:18 am, променена общо 1 път



Пон Апр 18, 2005 12:10 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Е тогава е нормално да ти се препълва буфера. Пика няма как да знае че данните са валидни или не. Но това не му дава право да се успива и да не може да възобнови комуникацията след това. Аз поне до сега не съм успял да lock-на UART -a досега по тоя начин.

За това с прекъсванията, живо ме интересува. Ако е има наистина такъв бъг, то той трябва да е описан. Иначе има бъгове по контролера за прекъсванията, на определени пикове, на определени модули, при обределени условия. Но генерален проблем от типа който описваш (при всички пикове) досега не съм виждал.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Апр 18, 2005 1:19 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Реконструктор написа:
Ама там има хардуерен буфер за UART-a ?????!!!!!!


Не няма. Т.е има два байта буфер и приема трети. Не е без хич, но си е нищо.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Апр 18, 2005 1:21 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Да, пак е нещо. AVR-а си има само 1 регистър - изпуснеш ли момента, целия пакет заминава. :?


Пон Апр 18, 2005 1:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
То и в пикльовците е един, ама е FIFO...пълни се като пълнител на пистолет (много ми харесва това обяснение :D ) Та проблема с прекъсванията го имах при използване на UART, I2C, писане/четене на флаша и след събуждане на процесора...Не го казвам просто така, доста време загубих там, като го написах с do-while се оправи работата...


Пон Апр 18, 2005 6:46 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 10, 2005 11:43 am
Мнения: 58
Мнение PIC GIE
Цецо:
Как го правите това, да не се нулира коректно? Бита със сигурност мърда коректно според мен.

Изглежда не съм се изразил ясно.
Разбира се,че бита се нулира след bcf INTCON,GIE . Но не може да блокира прекъсване активирано по време на изпълнение на самата инструкция. БЛОКИРАТ СЕ САМО ПРЕКЪСВАНИЯ ПОСТЪПИЛИ СЛЕД УСТАНОВЯВАНЕТО НА GIE В 0. Когато постъпи прекъсване по време на изпълнение на bcf INTCON,GIE ( GIE е все още 1) прекъсването се активира. При самото активиране на прекъсването GIE става 0. Cледва изход oт прекъсване с инструкция RETFIE. ТАЗИ ИНСТРУКЦИЯ ВДИГА БИТ GIE В 1.
Резултата в тази ситуация е: GIF=1 за инструкцията следваща
bcf INTCON,GIE. Неблокираното прекъсване установява GIE В 1 чрез RETFIE.
Ясно е, че колкото по-вече са прекъсванията толкова по вероятно е да се получи тази ситуация.

Цецо:
Но тогава и вашия while цикъл не е 100% решение.

Това е 100% решение. Този цикъл не прави нищо друго освен
изчакване на момента когато при изпълнението на някоя от инструкциите bcf INTCON,GIE няма заявка за прекъсване и съответно GIE се установява в 0 за следващата инструкция( няма RETFIE от неблокирано прекъсване да обърне GIE в 1 и той остава в 0).

Това не е BUG, a начин на работа (независимо дали ни харесва или не)! :lol:
Имаше някакъв PDF c диаграми от които се виждаше целия процес но нe си спомням вече...


Пон Апр 18, 2005 11:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Дек 19, 2004 6:26 pm
Мнения: 1628
Местоположение: Сливен
Мнение 
Може да изглежда тъпичко, но аз си слагах винаги една след друга 2 инструкции bcf INTCON,GIE
Ако възникне IRQ на първата, то при излизането ще се изпълни поне една инструкция преди да се обработят другите заявки. Не съм имал проблем с нежелани прекъсвания


Вто Апр 19, 2005 10:41 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Дайте да го видя тоя документ де. Всичко друго е наизуст.

Опс намерих го. AN576.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Апр 19, 2005 10:56 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
...


Последна промяна на Пон Яну 30, 2012 4:18 am, променена общо 1 път



Вто Апр 19, 2005 11:21 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Абе ако е БЪГ трябва да го пише в ератата, а не в дата шеета.
По принцип говориш малко наизуст (не се обиждай). Забраната на прекъсванията не става за време 0. На никой процесор. Теоретически погледнато всеки процесор който забранява прекъсванията е уязвим в момента на изпълнение на инструкцията за забрана. Винаги може да пристигне прекъсване в средата на инструкцията. Прекъсването ще се изпълни. Това не е страшното. Друг е въпроса защо след излизане от прекъсването флага не става 0 (което прави прекъсната инструкция), а автоматически разрешава прекъсването. Вероятно е защото инструкцията се изпълнява преди да се влезе в прекъсването. Но това значи че просто след излизане от прекъсването не трябва да се вдига в флага автоматично в "1", а просто да не се пипа. Според мен това си е недоизмислица в ядрото, а не бъг. Както и да е, сега проучвам проблема, но ако е вярно наистина е тъпо.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Апр 19, 2005 11:29 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
...


Последна промяна на Пон Яну 30, 2012 4:19 am, променена общо 1 път



Вто Апр 19, 2005 11:41 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Що в началото на INT вектора да изпълняваш GIE=0? Това пък за какво? То си се прави само. Веднъж намъкнал се в прекъсването, няма кой да те прекъсне. Затова и проблема според мен не е вътре в прекъсването. Проблема ще дойде после когато се окаже че инструкцията GIE = 0, всъщност не е свършила нищо, и програмата прекъсне някъде където това е опасно.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Апр 19, 2005 11:48 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
...


Последна промяна на Пон Яну 30, 2012 4:19 am, променена общо 1 път



Вто Апр 19, 2005 11:52 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Прекъсваш - прекъсване? На PIC? Не бих посмял. Това е PIC? Най многото което си позволявам е да използвам приоритети при PIC18. Ама да прекъсвам прекъсвания от еднакъв преоритет - звучи ми опасно. Май е време да смениш ядрото. Микрочип не е за теб.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Апр 19, 2005 12:04 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 94 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5 ... 7  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни