| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=13709 |
Страница 1 от 2 |
| Автор: | excitron [ Вто Апр 14, 2015 2:43 pm ] |
| Заглавие: | ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Здравейте,колеги,търся съвет от вас знаещите във връзка с теоретичното обяснение на изпълнение на такова задание в асемблер за ЕЕПРОМ на пик16ф88. Понеже програмата ми работи добре ,но искам да се презастраховам от събитие при проблем в ЕЕПРОМ. Записвам избирателно в едната клетка на ЕЕПРОМ памета десетични числа от 1 до 17,а във следващата клетка от памета записвам константи избирателно от 1 до 6. При пускане на пика се чете от епрома и се задават посочените константи от всяка клетка,но ако се прецака записа в паметта,искам постоянно да се прави проверка чрез контролна сума и ако не съвпада да приема стойностти по подразбиране,а от там и да започва мигане на светодиод за авария ВЪПРОС: Как се прави такава контролна сума. къде се записва такова контролно число .Какво съдържа контролната сума. Интересувам се от същинския алгоритъм ,а аз програмат ще я напиша(стига разбира се ако няма някъде готов пример,който мога да разгледам ) |
|
| Автор: | Wise [ Вто Апр 14, 2015 3:24 pm ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Ами най-разпространено е CRC / CRC8,CRC16,CRC32/ Гуглето ще ти каже как се прави. 2 байта CRC16 си е достатъчно сигурно |
|
| Автор: | ike [ Вто Апр 14, 2015 3:30 pm ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Обаче гълта доста рам и флаш, а 16ф88 няма чак толкова много. Може с xor. Например ако имаш 8 баита, xor ги висичките и резултата го слагаш в 9тия байт на ЕЕПРОМа. |
|
| Автор: | excitron [ Вто Апр 14, 2015 3:30 pm ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Търся на асемблер, ако имате предложения .Кога се пуска такава проверка . Записването се извършва в еепрома на пика само когато се влезе чрез бутон за настроика на нови константи ,през другото време само и единствено се чете .След пускане на на пика ,с нормално ресетване (без чип) прочитам еепрома. Може ли да се згафи положението когато само се чете .Устройството работи в автомобил. Ще има само едно реле,което ще се опоределя дали да бъде постоянно включено без да с екомутира през процеса на използването на устройството,то се включва или не, само от първоначалното прочитане на еепрома. Кога може да се обърка нещо по принцип.След като четем само и единствено .След монтажа на устройството и първоначална настройка ,после вече не се изисква никакво записване,Само и единствено при всяко пускане четем ..Затова ако има нещо по простичко алгоритъмче,не говориме за прецизни неща.Просто ще приеме първоначалана тстойност и ще мига светодиод за авария. |
|
| Автор: | timt [ Вто Апр 14, 2015 5:59 pm ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Когато се прочете кода от ЕЕПРОМ-а се дава старт на твоят алгоритъм а когато се прекъсне захранването например се зарежда наново кода ти. Няма място за притеснение. Само не го пускай постоянно да си търси кода от ЕЕПРОМ-а а само при промяна и старт. (примерно) |
|
| Автор: | ToHu [ Вто Апр 14, 2015 6:13 pm ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Ммм зависи каква надежност търсиш, за 7 к файл вероятността да се получат случайни грешки които да не ги детектне алгоритъма е сравнително малка, но я има. Примерно в определени индусстрии където е задължително да си проверяваш файловете както и да репортваш чексума CRC32 е недопустимо дори и за такива малки файлове, ако е просто за да си сигурен, мисля че ще ти е ОК, ако гониш стандарт, виж какво иска стандарта. |
|
| Автор: | excitron [ Вто Апр 14, 2015 7:20 pm ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Значи устройството при монтажа в автомобила се програмира за първи път ,след което всеки път при захранването му се чете ЕЕПРОМА и се настройва според зададените константи ,и така всеки път след рестарт чете само при пускането, и в процеса на работа няма никакво вземане даване с еепрома.Т.е. ако не що се е объркало собственика ще го усети при ненормалната работа и още при подаване на захранване се индицира с мигане нчколко път ина жълт диод ,а пък при нормално изпълннение с последователно светване на червен и зелен диод. Малка част от програмата за четенето в началото : CIKAL_MIGANE_1 приема D'1' do D'17'; CHANGE_1 πριεμα D'1' do D'6' EEPROM MOVLW 0x2101 MOVWF REEADR ;In:F(REEADR) CALL READE MOVWF CIKAL_MIGANE_1 MOVLW 0x2102 MOVWF REEADR ;In:F(REEADR) CALL READE MOVWF CHANGE_1 Мога ли да ги записвам при настройката от бутона ми за програмирането например CIKAL_MIGANE_1 на две места в еепрома и CHANGE_CD_1 пак на две места ,а при нормална работа след стартирането да ги чета тези дублирани данни на на различните им адреси и след разлика между тях да алармирам за грешен код,или пък АКО ТРЯБВА ДА ЗАПИСВАМ ЕДНИ И СЪЩИ ДАННИ НА ТРИ РАЗЛИЧНИ АДРЕСА ,КАТО ТОГАВА ПРИ ЧЕТЕНЕ ЧЕТА ОТ ЕЕПРОМА ТРИ РАЗЛИЧНИ адреса с една и съща информация и дори само една от тях да е различна ,щом другите два адреса се препокриват еднакво да приемаме точно това за вярното. EEPROM MOVLW 0x2101 MOVWF REEADR ;In:F(REEADR) CALL READE MOVWF CIKAL_MIGANE_1 EEPROM MOVLW 0Х21ХХ MOVWF REEADR ;In:F(REEADR) CALL READE MOVWF CIKAL_MIGANE_12 EEPROM MOVLW 0x21ХХ MOVWF REEADR ;In:F(REEADR) CALL READE MOVWF CIKAL_MIGANE_13 И после да създам алгоритъм за тези 3 те : CIKAL_MIGANE_1, CIKAL_MIGANE_12 , CIKAL_MIGANE_13 като по нормално са еднакви по стойност и ги сръвнявам всеки път в началото...Какво мислите за този мой прост алгоритъм ...Все пак не е добре ако се налага от време на време да се влиза в програмиращ режим-няма да има лесен достъп до устройството |
|
| Автор: | timt [ Вто Апр 14, 2015 8:12 pm ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Няма никакъв смисъл освен ако не искаш да ползват даденото устройство различни потребители с различна идентификация както го има в повечето съвременни автомобили. Няма как да си загубиш прочетеното от ЕЕПРОМ-а освен ако не ти работи програмата коректно. От този чип не очаквай чудеса но за твоята работа си е супер. След промяна на кода пак повтаряш: COD_1 MOVLW 0x2101 MOVWF REEADR ;In:F(REEADR) CALL READE MOVWF CIKAL_MIGANE_1 Примерно, приeма веднъж кода и затваря релето и го набутваш в спящ режим освен ако не искаш да го програмираш с нов код. Така релето ще е включено а при пускане ще е изключено докато не се идентифицира. Варианти много. |
|
| Автор: | Н'бабане Гт'муан'га [ Вто Апр 14, 2015 11:03 pm ] | |||||||||
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА | |||||||||
Ето ти тествана стандартна CRC8 функция, която не ползва много флаш нито пък много рам.
|
||||||||||
| Автор: | excitron [ Сря Апр 15, 2015 8:14 am ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Значи разбрах,че не е нужно такава пловерка в моя случай, но предриема ли ще ползвам срс8.Затова има ли вариант да го плати някой в асемблер код Дори може готова примерна програма. |
|
| Автор: | ToHu [ Сря Апр 15, 2015 11:11 pm ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
ами не съм сигурен че CRC8 ще върши работа ако се очаква че е възможно да се счупи, при CRC8 редовно ми се е случвало да не открива по сериозно счупени данни. Зависи колко битови са ти данните, ако са 8 битови вместо да правиш CRC просто ги пиши по два пъти, ако са по големи вече има смисъл от CRC но отново за 32 битови данни CRC8 не е много надеждно, камо ли за по дълги. То и двойното записване не е гаранция, аз съм виждал грешка и при тройно записване, даже съм го виждал два пъти, т.е. и трите записа да са счупени по един и същ начин, какъв е шанса сигурно и сам можеш да сметнеш но се е случвало. |
|
| Автор: | Cekins [ Чет Апр 16, 2015 8:23 am ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Специално при пик-четата единствения проблем за който знам е следния - когато влезе в brownout ситуация PC брояча може да скочи на случайно място. Когато това случайно място се окаже поредицата за запис, се записват неясни(случайни) данни в еепрома. Понеже обикновенно този участък е функция която се вика от някъде с параметри адрес и данни, а влизайки там случайно, адреса е последния от който си чел, там и се записват глупостите. В интерес на истина изглежда много отнесено като обяснение - такова е и обяснението от микрочип и най-интересното е че се случва. На мен ми се е случвало и решението пак според микрочип е : винаги след достъп до еепром, адреса (EEADR) да се сетва на адрес който не се ползва. Естествено включването на BOR си е задължително - така ще се избегне като цяло подобен ефект с подскачане случайно по програмата. В крайна сметка от как почнаха да правя това с адреса, повече не съм имал случай на скапани данни. Правил съм и записване всеки път в различна клетка(циклично). Ама сега въобще не помня как го бях реализирал да пише равномерно в целия еепром и как точно беше номера да знае точно кой запис е последния. |
|
| Автор: | ToHu [ Чет Апр 16, 2015 11:11 am ] |
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА |
Това за което аз споменавам се е случвало на съвсем различна архитектура, не е резултат на случайността а на съвсем умишлени действия, но индиректни, разбирай смущения някои от тях водещи може би до рестарт на проца. |
|
| Автор: | mitko_el [ Чет Апр 16, 2015 1:22 pm ] | |||||||||
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА | |||||||||
Това с xor съм го правил , и съм го "счупвал" , в смисъл сумата е ок , ама байтовете не са... Та втора осигуровка , сумирал съм всички байтове , и квото се получи като 8 бит накрая , пиша в клетка... |
||||||||||
| Автор: | Н'бабане Гт'муан'га [ Чет Апр 16, 2015 1:45 pm ] | |||||||||
| Заглавие: | Re: ЕЕПРОМ -ПИК16Ф88-КОНТРОЛНА СУМА ЗА ПРОВЕРКА-КАК СТАВА | |||||||||
Ето и функция за стандартно CRC16, но тя си заема повечко място в паметта.
|
||||||||||
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|