| Автор |
Съобщение |
|
bgeorgiev
Ранг: Минаващ
Регистриран на: Вто Фев 05, 2013 10:41 pm Мнения: 10
|
 Помощ за програма за бутон
Здравейте, опитвам се да напиша една проста програма за бутон и нещо не ми се получава. Ето това правя:
Device 12F629
CMCON = 7 Output 4 bp var Byte bp = 0 mainloop: Button GPIO.5,1,50,20,bp,0,led GPIO.4 = 1 led: GPIO.4 = 0 GoTo mainloop:
След като компилирам файла и пусна симулация в PIC Simulator IDE , на изхода има едно постоянно мигане , ако пусна симулация в Proteus изобщо не работи. Какво да променям?
|
| Чет Мар 21, 2013 9:14 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Помощ за програма за бутон
това какво трябва да е .... ни мяза на асемблер ни .. да не е някакъв бейсик .... с някакви измисляни функции? Първо мейн лупа ти върти постоянно, нямам идея това Button какво прави, твоя функция ли е или не, като гледам какво следва ми бяза като да е тест бит функция .. въпреки че и това не може да е така написано ...
|
| Чет Мар 21, 2013 10:58 pm |
|
 |
|
bgeorgiev
Ранг: Минаващ
Регистриран на: Вто Фев 05, 2013 10:41 pm Мнения: 10
|
 Re: Помощ за програма за бутон
Това е бейсик, а button си е команда от бейсик
|
| Пет Мар 22, 2013 10:51 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Помощ за програма за бутон
Аха .. това да не е онова протон ли какво беше ? Тази команда не мога да и разбера всички параметри така че не знам как да ти помогна. Гледам някакъв пример който открих, като гледам е също като при теб, т.е. ако бутона не е натиснат отиваш на led, предполагам това 50,20 е свързано с дебонсинга, bp може би е променлива която взема статуса на бутона, 0 няма идея какво е, може би състоянието при което се отива в последващия параметър led .... само тая единица след порта не знам какво значи. Та ...ако е така би следвало като натиснеш бутона светодиода да светне, то зависи как си го вързал, дали към маса или към +. Обаче как работи самата команда бутон не мога да ти кажа, възможно е там нешо да не е наред, нямам представа. отделно гледам при теб дефиницията на пина е GPI0.5 а в примера който гледам са дефинирали променлива която я дефинират като con 5 каквото и да е това. Възможно ед да ти е пуснат WDT съответно примигването да е при препълване и ресет на процесора ... ето виж тука има пример http://melabs.com/samples/PBP-mixed/button.htmбез да те убеждавам нещо, ама що не си сложиш едно С и да се почустваш бял човек.
|
| Пет Мар 22, 2013 11:44 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Помощ за програма за бутон
Протон е  Признавам си че пиша на Протон, ама никога не съм ползвал тая функция. Виж си хелпа обаче. Ако бутона е натиснат, ще отиде на лейбъла лед. Ако не е пак ще отиде, ама първо ще мине през gpio.4=0  демек все тая. ако искаш да има ефект това трябва след гпио.4=0 да имаш още един гото маинлооп... Честно казано (като му знам на протона тия изкилиферчените функцики) никога не бих го ползвал това и не бих разчитал на него. 1-цата след порта значи кое да се приеме за натиснато ниво.
|
| Съб Мар 23, 2013 11:13 am |
|
 |
|
bgeorgiev
Ранг: Минаващ
Регистриран на: Вто Фев 05, 2013 10:41 pm Мнения: 10
|
 Re: Помощ за програма за бутон
Да на Протона го пиша. Това е синтаксиса на командата: Button
Syntax Button Pin, DownState, Delay, Rate, Workspace, TargetState, Label
Overview Debounce button input, perform auto-repeat, and branch to address if button is in target state. Button circuits may be active-low or active-high.
Operators Pin is a Port.Bit, constant, or variable (0 - 15), that specifies the I/O pin to use. This pin will automatically be set to input. DownState is a variable, constant, or expression (0 or 1) that specifies which logical state occurs when the button is pressed. Delay is a variable, constant, or expression (0 - 255) that specifies how long the button must be pressed before auto-repeat starts. The delay is measured in cycles of the Button routine. Delay has two special settings: 0 and 255. If Delay is 0, Button performs no debounce or auto-repeat.
If Delay is 255, Button performs debounce, but no auto-repeat. Rate
is a variable, constant, or expression (0 – 255) that specifies the number of cycles be- tween auto-repeats. The rate is expressed in cycles of the Button routine. Workspace is a byte variable used by Button for workspace. It must be cleared to 0 before being used by Button for the first time and should not be adjusted outside of the Button command.
TargetState is a variable, constant, or expression (0 or 1) that specifies which state the button should be in for a branch to occur. (0 = not pressed, 1 = pressed). Label is a label that specifies where to branch if the button is in the target state.
Ползвам Протон ,защото не можах да намеря Micro Code Studio за 64 битов Уиндоус . Май наистина трябва да започна на С.
|
| Съб Мар 23, 2013 9:56 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Помощ за програма за бутон
Имам едно неприятно усещане че изпозлването на тази команда те забива в един цикъл с продължителността на дебонсинга ама ... а с тоя репийт рейт ... може и да се окаже за по дълго, т.е. ще те върти в самата функция и евентулно ще те праща на лейбъла .. знам ли гокак е писано, ама дори само за времето на дебонсинга да те държи ми се струва неприятна работа. За C тука има доста линкове, CCS се мотае, мойто според мен за пикове не е лош, но там няма чак толкова направени функции, или пуне нямаше навремето, в новите версии може и да са се появили.
|
| Нед Мар 24, 2013 10:14 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Помощ за програма за бутон
Точно това прави - както и много голяма част от по засуканите и "уж" много удобни команди на протона. Затова както казах не ги ползвам.
|
| Нед Мар 24, 2013 12:55 pm |
|
 |
|
Бай Ставри
Ранг: Новодошъл
Регистриран на: Пет Май 27, 2011 8:25 am Мнения: 134 Местоположение: Силистра
|
 Re: Помощ за програма за бутон
инициализирай си портовете и ше тръгне
_________________
|
| Нед Мар 24, 2013 3:27 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Помощ за програма за бутон
И какво да им инициализира? CMCON=7 прави всички цифрови, а Output 4 прави GPIO.4 изход... другите са входове (дифолт при резет)... Нема да тръгне. За идеята да светне леда като се натисне бутона : GPIO.4=GPIO.5 Е няма дебоунс, ама ще работи...
|
| Нед Мар 24, 2013 7:26 pm |
|
 |
|
bgeorgiev
Ранг: Минаващ
Регистриран на: Вто Фев 05, 2013 10:41 pm Мнения: 10
|
 Re: Помощ за програма за бутон
GPIO.4=GPIO.5 така наистина работи, ама как трябва да стане ако искам да има задръжка по време при изключване на бутона ?
|
| Пон Мар 25, 2013 11:03 am |
|
 |
|
Zdrav
Ранг: Форумен бог
Регистриран на: Сря Яну 26, 2005 2:01 pm Мнения: 1952 Местоположение: Варна
|
 Re: Помощ за програма за бутон
В горния ти пост думичката "трябва" бърка цялата работа... http://hackaday.com/2010/11/09/debounce ... -them-all/виж колко много различни начини има...
_________________ Най-опасният враг на истината и свободата е мнозинството.
|
| Пон Мар 25, 2013 11:29 am |
|
 |
|
bgeorgiev
Ранг: Минаващ
Регистриран на: Вто Фев 05, 2013 10:41 pm Мнения: 10
|
 Re: Помощ за програма за бутон
Наистина има ама за С. Благодаря все пак.
|
| Пон Мар 25, 2013 4:06 pm |
|
 |
|
Zdrav
Ранг: Форумен бог
Регистриран на: Сря Яну 26, 2005 2:01 pm Мнения: 1952 Местоположение: Варна
|
 Re: Помощ за програма за бутон
Останах с впечатление че това също е вариант за теб. И като гледам еднакво лесно/трудно ще ти бъде и с бейсик и със С.
_________________ Най-опасният враг на истината и свободата е мнозинството.
|
| Пон Мар 25, 2013 4:15 pm |
|
 |
|
bgeorgiev
Ранг: Минаващ
Регистриран на: Вто Фев 05, 2013 10:41 pm Мнения: 10
|
 Re: Помощ за програма за бутон
Е ще почета малко и на С ще се пробвам. 
|
| Пон Мар 25, 2013 9:25 pm |
|
|