|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:36 am
|
Страница 1 от 1
|
[ 15 мнения ] |
|
| Автор |
Съобщение |
|
Hardest
Ранг: Минаващ
Регистриран на: Сря Окт 16, 2013 7:37 pm Мнения: 8
|
 16F716 и много въпроси
Здравейте, цял слетобед четох форума а и продължавам защото... днес ми беше първият час по практика в университета - уча в ТУ 4ти курс Електроника специализация ЕСКУ. От 4 години на сам това нещо ми се струва най-интересното и смислено в университета, но това не е тема на темата ми. 1во в лабораторията полазваме PICkit2 със PIC16F716, ili PIC16F84A по избор, до колкото четох по дата шийтс нема голяма разлика. Така, в университета си имаме програматори и все, обаче в къщи имам само 1 MPLAB и съотвения симулатор на лаба... уви от днес след практиката си търся програматор  изкопах схемите от сайт-а на микрочип и до преди 3 часа бях надъхан сам да запоявам - уви не ми е в природата запояването  . Основното което правихме в часа е да 'изследваме' list p=16f716 __config h'fffb' include p16f716.inc Numb equ 20 Flags equ 21 Inds equ 22 PortAm equ 23 Segm equ 24 OffInd equ b'1111' OffSeg equ h'ff' org h'00' Reset call IniPic call ClrRAM Main movlw b'11111110' movwf PORTB movlw b'1110' movwf PORTA call T_us movlw b'11111101' movwf PORTB movlw b'1101' movwf PORTA call T_us movlw b'11111011' movwf PORTB movlw b'1011' movwf PORTA call T_us movlw b'11110111' movwf PORTB movlw b'0111' movwf PORTA call T_us goto Main ;Subroutines IniPic movlw b'10000' tris PORTA movlw OffInd movwf PORTA movlw b'00000000' tris PORTB movlw OffSeg movwf PORTB movlw b'11010010' option return ClrRAM movlw Flags movlw FSR movlw d'20' movwf Numb Clr1 clrf INDF incf FSR decfsz Numb goto Clr1 return T_us movlw 6 movwf Numb T_01 decfsz Numb goto T_01 return END Този код, сега когато го билднахме в лабораторията всичко си беше ок, аз въудушевен да разбера кое какво прави и как го прави го пуснах на MPLAB SIM ии от тогава -> core-e0001 stack overflow error occurred до колкото изрових от микрочип обяснение: your code has a stack overflow. You're either calling a function and not returning from it correctly, or enabling interrupts without returning from the ISR correctly. Гледах гледах и пак гледах и, ако някой може да адвайзне къде бъркам Ази, защото пак ми казва ... stack overflow :/ Офтопик, не съм напълно нов в програимрането, но съм по нов от най-новия в микроконтролерите, от асемблер имам опит от мейнфрейм машините с които работя, но това тук с микрокотролерите е съмвсем друга бира, бира която ми харесва Поизчетох куп работи и мисля че PIC е за мен като за начало, ще видя в асемблерски среди какво мога да направя и да се самонауча на това чудо на технологията Meanwhile ако имате някакви съвети стреляйте всичко приемам!
|
| Сря Окт 16, 2013 10:38 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: 16F716 и много въпроси
_________________ Мразя да мразя ...
|
| Сря Окт 16, 2013 11:21 pm |
|
 |
|
Hardest
Ранг: Минаващ
Регистриран на: Сря Окт 16, 2013 7:37 pm Мнения: 8
|
 Re: 16F716 и много въпроси
http://en.wikipedia.org/wiki/Mainframe_computerOS360/OS390/zOS - IBM технология Коментара ти ироничен ли е ? По темата, PIC Mикрокотролери на МК част 2 на някой да му се намира ? имам част 1 която почти изчетох....
|
| Сря Окт 16, 2013 11:31 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: 16F716 и много въпроси
По темата: имай в предвид че ПИКовете са с доста ограничен стек, ако ти е трудно да си разбереш програмата, дебъгвай стъпка по стъпка в симулатора и гледай как се използва стека - в един момент ще ти светне къде е грешката.
По оффтопика: да имаш опит с асемблер за мейнфрейм ми идва малко странно ... опит значи да си писал работещи програми, при това доста ... да си чул или чел, че има такова нещо не бих го нарекъл опит
_________________ Мразя да мразя ...
|
| Чет Окт 17, 2013 10:57 am |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: 16F716 и много въпроси
Тоз ПИК не съм го борил, по далеч от 12f509 не съм стигнал, ама ми изглежда нечитаво ,че FSR сякаш остава незареден. IBM 360 ....имам едни книги за асемблера им. Купувах ги по соца, кога бях студент и мислех , че може да ми трябват. Интересно, че в ТУ още се занимават с тях. За Пентагона ли подготвят кадри? Колко такива машини има в БГ?
|
| Чет Окт 17, 2013 11:17 am |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: 16F716 и много въпроси
Тази книга , дето я четеш за ПИК да не те вкара в заблуждения. Ако е за 16/32 бита - ще ти дойде тежка навярно. Ако е за 8 битовите , може да те обърка ,че контролерите трябва да приличат на 12c508. Има и процесори с повечко инструкции - мислени са по друго време от други хора - та тез с многото инструкциите са една идея по-близо до мисленето на човека,особено студент. Има си книги с по-общ профил. От една руска книжка съм запомнил, че процесорите могат 3 неща - да четат, да пишат и да прекъсват ...останалото е от тебе. Това в книжката за ПИК пише ли го?
|
| Чет Окт 17, 2013 11:28 am |
|
 |
|
CarBeta
Ранг: Форумен бог
Регистриран на: Пет Май 01, 2009 4:01 pm Мнения: 1438
|
 Re: 16F716 и много въпроси
Проблема е в подпрограмата ClrRAM и по-точно в movlw FSR, вместо movWF FSR. По тоя начин в FSR не се зарежда адрес за нулиране и стойността му си остава 0х00. С първия цикъл на подпрограмата се нулира адрес 0х0000(INDF), с втория цикъл се нулира адрес 0х0001(TMR0) и с третия цикъл се нулира адрес 0х0002(PCL), което връща изпълнението на програмата на ORG 0х00000 т.е. в началото. След 8 връщания стека се препълва. По принцип това не е много правилен начин за изчистване на рама. Не е нужно да се заема регистър за да се следи до къде е стигнал брояча.
|
| Чет Окт 17, 2013 11:40 am |
|
 |
|
Hardest
Ранг: Минаващ
Регистриран на: Сря Окт 16, 2013 7:37 pm Мнения: 8
|
 Re: 16F716 и много въпроси
С 'разбирането' като четене на програмата почти нямам проблем, като проблем ми прави точно това чистене на РАМ не съм свикнал с такова чудо конкретно, а колко е да се научат ~40 инструкцийки за Pic-че. До опита с MF асемблера - работещи STC-та, automation макрота, и конкретни дефиниции на сторидж към процесор от системата, не е много (като се има в предвид системните програмъри какво правят) но е доста и е бая различно от микроконтрелер В ТУ не се занимават с това, такова работя, пентагона таман си изхвърлиха всички такива подобни системи  в БГ няма такива системи защото няма нужда от тях, няма институция която да има толкова нужда от толкова computing power, която 1 такава машина доставя. В линка който дадох към уикипедия ако сте го прочели до долу го казват. Такъв вид системи са разпространени там където се въртят пари (груб превод), банки министерства болници и все, от наще банки - DSK ползва такова но целия тийм който я съпортва обслужва и все е IBMски и е извън БГ. тук УЖ пробвах индиректна адресация ама май не съм го доизкусорил. Книгата е PIC16 Микроконтролер, на млад конструктор 1ва и 2ра част, взех ги от библиотеката на университета. 8битова трябва да  Благодаря за отговорите и имам и следващ въпрос. Искам да пробвам да променя периода на обновяване на индикацията. Не искам да пипам WDT затова пробвах така: CountInt equ 2c ** bcf IntCon,2 decfsz CountInt goto EndInt movlw, 5 movwf CountInt movlw OffInd movwf PortA movwf Dig1 *** "Идеята' ми е - променя се стойността на CountInt -> променя се честотата на смяната на индикация, но може ли да стане 'програмно' примерно да добавя един регистър който да задава честотата за смяна ? Този регистър да се променя в мейна или при натискане на бутон. Та идейка можете ли да додадете 
|
| Чет Окт 17, 2013 1:45 pm |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: 16F716 и много въпроси
Всичко може... Не ми е ясно за каква индикация пишеш, но това няма значение. И Уйндоус така работи - процесора чете от едно място , пише на друго място, прекъсва като стане нещо - например мръднеш мишката - И задължително прекъсва на всеки няколко милисекунди. Е - и на тебе първата ти работа е да имплементираш концепцията за системен таймер. От там нататък - кеф ти индикация, кеф ти бутони, кеф ти музика - ако прекъсваш на всеки 100..200 микросекунди и между две такива прекъсвания успяваш да изработиш следващото от мелодията ниво към слушалките.
|
| Чет Окт 17, 2013 2:01 pm |
|
 |
|
Hardest
Ранг: Минаващ
Регистриран на: Сря Окт 16, 2013 7:37 pm Мнения: 8
|
 Re: 16F716 и много въпроси
Индикация - само в лабораторията, аз ще си имам когато ми дойде всичко бредборда със сите диоди / жици и чипа който поръчах днес  Сега го карам на watch - registers и SFRs през МПЛАБ-а та така май го направих 
|
| Чет Окт 17, 2013 2:13 pm |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: 16F716 и много въпроси
системен таймер направи ли?
|
| Чет Окт 17, 2013 3:21 pm |
|
 |
|
Hardest
Ранг: Минаващ
Регистриран на: Сря Окт 16, 2013 7:37 pm Мнения: 8
|
 Re: 16F716 и много въпроси
Не, доста се пооплетох в това нящо
|
| Чет Окт 17, 2013 3:51 pm |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: 16F716 и много въпроси
Имаш 2-3 апаратни таймера в твоя процесор. Единият го заделяш за системен таймер- ще ти цъка (ПРЕКЪСВА) на период , какъвто му програмираш ТИ при инициализацията на чипа. Щом ще те прекъсва - трябва да имаш ISR (прекъсване обслужваща подпрограма). Тя евентуално презарежда таймера ( ако няма подходящ режим с автоматично презареждане), изчиства хардуерния флаг за прекъсване - ако е необходимо за конкретния таймер и конкретния процесор, вдига ТВОЙ флаг "Hardest_току_що_пак_имаше_прекъсване_от_таймера" и излиза от прекъсване. В главния цикъл следиш тоя флаг. Като го видиш светнат - гасиш го и си правиш сметка колко време е изтекло. Например ако нагласиш таймера да прекъсва 100 пъти в секунда и на всяко светване на флага увеличаваш брояч - когато стигне стойност 100 - значи е минал една секунда и можеш да си запалиш следващото светодиодче. Броячът ще го нулираш де... Значи - хардуер(таймер). прекъсване , флаг, проверка на флага,вземане на решение. Долу горе това правят повечето програми  , когато не броят пари.
|
| Чет Окт 17, 2013 4:07 pm |
|
 |
|
Hardest
Ранг: Минаващ
Регистриран на: Сря Окт 16, 2013 7:37 pm Мнения: 8
|
 Re: 16F716 и много въпроси
Хохо колко играчка ще има  2/3 от нещата който си написал са ми непознати 
|
| Чет Окт 17, 2013 4:18 pm |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
 Re: 16F716 и много въпроси
ако е динамична индикацийката, 1 секунда си е множко 
|
| Пет Окт 18, 2013 8:58 am |
|
|
|
Страница 1 от 1
|
[ 15 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|