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

FIFO буфер
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=1434
Страница 1 от 1

Автор:  IceBurn [ Пет Дек 16, 2005 11:02 pm ]
Заглавие:  FIFO буфер

Видях че има подобна тема,но тъй като почти нищо не разбрах (а от малкото което разбрах ми се струва че не ми върши работа) реших да пусна нова тема.

Искам да направя FIFO буфер за команди за PIC16 на asm, тъй като със C не съм се занимавал и нещо не ми се отдава (а и стаалата част от проекта е на asm и не ми се пренаписва).
Идеята е следната - процесора си изпълнява команди последователно от буфер, а по UART, SPI или IIC се предават нови, работа се прекъсва и новите команди се тъпчат в края на буфер-а. Приемането, както и разпознаването на командите и аргументите не ми е проблем.
Дотук добре ама реализацията на тоя буфер ми се губи.
Единственото което ми хрумва е действие с груба сила - при извличане на първата стойност от буфер-а останалите да се преместват една клетка напред и още една клетка в която да се пази адреса на послендата заета клетка от буфер-а(или броя на командите, което е същото). Обаче тук проблема е, че при n команди в буфер-а, при всяко извличане ще трябва да се преместват n-1 клетки, което отнема доста време.
Предполагам че има някакъв по интелегентен начин на решение на проблема.
Моля помогнете :roll: :D

Автор:  Nikola Kirov [ Пет Дек 16, 2005 11:06 pm ]
Заглавие: 

2 указателя към начало и краи на опашката. Не е нужно да местиш данните :)

Автор:  IceBurn [ Пет Дек 16, 2005 11:17 pm ]
Заглавие: 

Ами аз мислех че нещо подобно е решението ама не ми е съвсем ясно как ще се реализира.
Ако не ти е проблем ще може ли да ми го обясниш по-подробно или ако ти се намира някакъв код под ръка (предполагам че най-вероятно сам си си го писал не ти се дава ама наистина не ми е ясно как ще стане).

Автор:  Nikola Kirov [ Пет Дек 16, 2005 11:52 pm ]
Заглавие: 

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

Автор:  Zdrav [ Съб Дек 17, 2005 1:12 am ]
Заглавие: 

Ами ако положиш малко усилия да научиш така недолюбвания от теб С ще разбереш каква е логиката на това което ти казва Никола за указателите.
Имаш две променливи които пазят съответно адресите на началото и края на буфера. Вместо да преместваш данните в буфера сменяш съответно адресите съхранявани в тези променливи. Единият адрес ти сочи към последната приета команда това е входа на FIFO другият ти сочи командата която е наред да се изпълни т. е. изхода на FIFO. Съответно имаш задължително проверки дали началото и края не излизат от определената за FIFO област от паметта.

Автор:  IceBurn [ Съб Дек 17, 2005 1:20 am ]
Заглавие: 

След като се замислих доста серизно разбрах колко лесно било.
Мерси много !!!

П.П. По въпроса за С-то - със С за PC нямам проблеми, но за PIC не съм се занимавал. Може ли да ме насочите към компилатори и литература, за да го науча най-после.

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