| Автор |
Съобщение |
|
darkshy
Ранг: Популярен
Регистриран на: Съб Ное 28, 2009 5:50 am Мнения: 391 Местоположение: Варна
|
 Добавка към аларма за кола хелп
Моля за малко помощ. Какво ли не опитах, но
mikroC-то версия 8.2.0.0 при компилиране дава:
"Reentracy not allowed: function [mask] called in both main and interrupt threads"
mask е функция за извеждане стойност на 7сегментен дисплей от микроСи-то.
Отскоро започнах да пиша на Си.
Това представлява добавка към алармена система за кола, защото на майка ми и разбиха колата и сега сложихме аларма и искам когато някой чукне колата алармата да праща импулс към пик-а койта изписва на дисплея колко пъти е чукната колата. Ако са повече от 0 свети светодиода на РА0. Брояча на чуквания брои само до 9. При всяко чукване светва мощна халогенна лампа чрез реле насочена към колата за 30 сек вързана към РА1. А към РА2 има бутон за нулирване на дисплея. Информацията за дисплея се записва в еепрома за да може ако спре тока да се зареди стара стойност.  Мисля, че идеята е добра, но не мога да реализирам софтуера поради тази тъпа грешка  . Таман ще си пробутам 16ф84а на майка ми, че са чудя какво да го правя  . Сега си взех 16ф876А
предварително 10х
Ето кода:
|
| Нед Дек 13, 2009 1:18 am |
|
 |
|
bobyper
Ранг: Ориентиран
Регистриран на: Вто Яну 31, 2006 11:11 pm Мнения: 295 Местоположение: София
|
Неползвам MicroC но твоя проблем идва от това че викаш функцията check() от главната програма main() а също така и от прекъсването interrupt(). Това е доста лоша идея. Трябва в прекъсването да се викат отделни функции, а още по-добре да не се полазва викане на функции.
|
| Нед Дек 13, 2009 9:54 am |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
.... И въобще като цяло безкрайно зле написана програма.
|
| Нед Дек 13, 2009 10:36 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
"if (BUT=0) { "
Това какво прави ? 
|
| Нед Дек 13, 2009 11:20 am |
|
 |
|
optron
Ранг: Ориентиран
Регистриран на: Чет Ное 20, 2008 1:49 pm Мнения: 276 Местоположение: Бургас
|
За такава проста задача е безсмислено да се ползва прекъсване. Направи си един цикъл, който да сканира входовете и да прихваща фронтове. При преден фронт - броиш и светкаш. Толкоз.
Имай предвид, че на този процесор епромът му издържа доста малко цикли на запис.
_________________ Digitally yours: Optron
|
| Нед Дек 13, 2009 1:00 pm |
|
 |
|
bobyk
Ранг: Ориентиран
Регистриран на: Пон Яну 09, 2006 11:32 am Мнения: 276 Местоположение: Kozloduy
|
Това което си написал е едно голямо нищо и съответно нищо не прави. Вземи предвид забележките и я напиши от начало без дори да поглеждаш към старото си творение. И прекъсване не ти трябва, не забравяй че = и == не е едно и също. Като напишеш нещо ново постни го да видиме напредъка
|
| Нед Дек 13, 2009 2:01 pm |
|
 |
|
darkshy
Ранг: Популярен
Регистриран на: Съб Ное 28, 2009 5:50 am Мнения: 391 Местоположение: Варна
|
10x. Сега ще я започвам отново. За прекъсването и еепрома нарочно го направих така за да се пробвам и да науча как става.
Смятам да започвам да чета една книжка за C за PIC-ове в pdf. Като пренапиша програмата ще я кача отново да кажете дали напредвам  Книжката я дръпнах от тук: http://www.mcu-bg.com/mcu_site/viewtopic.php?t=6458 . Също така искам да попитам на какъв компилатор да пиша ccs mikroc или hitech. Насочих се към микроС защото има вградени библиотеки и се работи по-лесно (според мен) от ccs-a и hitech-a. Поправете ме ако греша. Иначе предпочитам hitech-a от ccs-a, въпреки, че ццс-а има уизарди,но .. микроС-ито мисля, че е най-добре за мен  Също така имам последен въпрос към феновете на proteus-а. Защо като заредя асм файла в протеуса и ми дава грешки при компилирването?! Мисля, че е от това, че като отворя асм-то с ноутпад-а пред инструкциите има хекс числа. И съм сигурен, че това е от компилатора на микроС-ито и не знам как да му кажа да не ги слага.
Ако не се изразявам добре, не се притеснявайте да ми пишете. Не смея да ви викам "колеги" защото първо - не съм още напреднал с материята и второ - съм още на 14 години. Благодаря за препоръките. Айде,че сега започвам програмката
Поздрави от Варна!
|
| Нед Дек 13, 2009 8:36 pm |
|
 |
|
darkshy
Ранг: Популярен
Регистриран на: Съб Ное 28, 2009 5:50 am Мнения: 391 Местоположение: Варна
|
Написах програмата наново. Този път си начертах на един бял лист диаграмка и по нея написах програмата  И най-накрая разбрах как се работи с Протеуса и я тествах и познайте... РАБОТИИИ  Точно както исках
Ето диаграмката и кода:
П.П. Диаграмата претърпя промени 
|
| Нед Дек 13, 2009 10:07 pm |
|
 |
|
lafi
Ранг: Минаващ
Регистриран на: Нед Ное 09, 2008 12:28 am Мнения: 63
|
Трябва да се забрани споменаването на Pic16F84 във форума.
Да се добави в правилата и условията за ползване на сайта - Бан изтриване на акаунта и блокиране по IP.
Не мога да разбера, защо го ползват още в радиолюбителските сайтове, след като е по-скъп от алтернативата 16F628 и скоро най-вероятно ще бъде спрян от производство, ако не е вече.
|
| Пон Дек 14, 2009 12:17 am |
|
 |
|
darkshy
Ранг: Популярен
Регистриран на: Съб Ное 28, 2009 5:50 am Мнения: 391 Местоположение: Варна
|
Аз този проект го правя точно за да се отърва от него  и да го пробутам на майка ми да й следи колата
Иначе сега съм с 16ф876а и съм доволен 
|
| Пон Дек 14, 2009 12:25 am |
|
 |
|
lafi
Ранг: Минаващ
Регистриран на: Нед Ное 09, 2008 12:28 am Мнения: 63
|
16F886 са 2 пъти по ефтини, не знам защо не поръчвате от тях.
В Комет зареждат по 25 бройки, защото не се търсят най-вероятно.
|
| Пон Дек 14, 2009 1:12 am |
|
 |
|
bobyk
Ранг: Ориентиран
Регистриран на: Пон Яну 09, 2006 11:32 am Мнения: 276 Местоположение: Kozloduy
|
Че имаш желание да учиш е похвално. Ето ти малко градивна критика:
1.МикроЦ - едно недоразумение както всичко на МикроЕ. По добре си избери нещо друго (няма много да ти липсват точно тяхните библиотеки, има достатъчно други из нета, а и винаги можеш да си напишеш сам, не си позволявай да свикваш с малоумията им иначе ще се превънеш в ... малоумник), по възможност да е по ANSI C ориентирано че и CCS си има особености. Wizard-ите не са лошо нещо ама ако генерират ANSI C код, а не нещо специфично за съответния компилатор.
2.Обикновено еепрома не се ползва като рам понеже живота му не е безкраен, има малко по-различен подход ако искаш да си запазиш състоянието при отпадане на захранването, то в твоя случай това не е от особено значение.
3.В Си винаги има начин да избегнеш употребата на goto, т.е. като се понаучиш ще видиш колко грозно и безсмислено е това. В твоя случай continue прави това което искаш.
for( ; ; ) {
if(BUT==0) {
goto start;
}
би могло да е ...
while(BUT != 0);
continue;
Е могат и още неща да се кажат за твоята програма ама за сега толкова.
Ще ми се да ни запознаеш и със следващия си "проект", ама нека да е някоя 18ка че пик16 е едно наказание дето... има доста изписано. А и днешно време на прилични пари има доста по истински контролери, не се задържай на много малките.
|
| Пон Дек 14, 2009 10:55 am |
|
 |
|
darkshy
Ранг: Популярен
Регистриран на: Съб Ное 28, 2009 5:50 am Мнения: 391 Местоположение: Варна
|
Благодаря за съветите.  Аз точно за това не искам да използвам CCS защото не генерира точно ANSI код и кода не може да се използва с други компилатори.
Значи ще се насоча към hitech-a. Както казва bobyk имам мерак да се науча, а не като някои хора, които искат всичко да им е наготово. Освен това не искам да назубря нещо, ами искам да го осмисля и разбера. В момента малко бавно протича обучението ми защото съм в 8ми клас в МГ Варна и много ни дават домашни и тем подобни работи и ми остава малко свободно време през което да изучавам микроконтролерите. Като се понауча малко ще захващам 18ките. btw смятам да си поръчам ICD2 клонинг от тук: http://www.sirius-pcb.com/?mod=catalog&show=50 .Мислех за pickit2 клонинг (пак от същия сайт), но като се поразчетох из форуми мисля, че ИЦД-то е по-добрия вариант.  btw едно не ми е ясно, ако на крачетата за дебъгване и програмиране на ПИК-а е вързано например lcd, как ще се дебъгва? Нещото, което се сетих е тези крачета да ги оставя само за дебъг и програмиране, но тази идея не ми допада особенно. Не съм много добър в хардуера и затова ви питам. Питам в тази тема за да не отварям нова. ББ и поздрави от Варна.
П.П. Замислих се дали има някой друг в този форум от Варна?! 
|
| Пон Дек 14, 2009 4:20 pm |
|
 |
|
optron
Ранг: Ориентиран
Регистриран на: Чет Ное 20, 2008 1:49 pm Мнения: 276 Местоположение: Бургас
|
Айде, от мен една похвала, стига толкова критики:
Браво! Подходил си методично и си използвал нагледни методи и това е дало резултат. Друго си е, когато видиш нещата на картинки (имам предвид диаграмата в случая). Така и занапред. Като се усъвършенстваш, за простички задачи вече няма да са ти нужни диаграмки на хартия, ти ще си ги представяш в главата общо взето.
От Сириус поръчвай само сглобени и тествани изделия, защото доколкото съм чувал, китовете им са зле комплектовани и понякога не тръгват.
ПП: На твоите години, аз вече се борих с транзистори. Ама тогава бяха и други времена. Сега технологиите са доста напред спрямо тогава. Подозирам какво ще ти е средното образование ...  Успех ти желая.
_________________ Digitally yours: Optron
|
| Пон Дек 14, 2009 10:41 pm |
|
 |
|
darkshy
Ранг: Популярен
Регистриран на: Съб Ное 28, 2009 5:50 am Мнения: 391 Местоположение: Варна
|
Благодаря
П.П. Иначе от сириус съм поръчвал USB AVR ISP програматор само платката с аттинито и си го сглобих и бачка безпроблем и сега се чудя какво да го правя, защото вече не се занимавам с атмеги и са чудя на кой да го дам  Може да си го запазя, че ще вземе да ми потрябва някой ден 
|
| Пон Дек 14, 2009 10:50 pm |
|
|