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

Помощ за програма за бутон
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=11215
Страница 1 от 2

Автор:  bgeorgiev [ Чет Мар 21, 2013 9:14 pm ]
Заглавие:  Помощ за програма за бутон

Здравейте,
опитвам се да напиша една проста програма за бутон и нещо не ми се получава.
Ето това правя:


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 изобщо не работи.
Какво да променям?

Автор:  ToHu [ Чет Мар 21, 2013 10:58 pm ]
Заглавие:  Re: Помощ за програма за бутон

това какво трябва да е .... ни мяза на асемблер ни .. да не е някакъв бейсик .... с някакви измисляни функции?
Първо мейн лупа ти върти постоянно, нямам идея това Button какво прави, твоя функция ли е или не, като гледам какво следва ми бяза като да е тест бит функция .. въпреки че и това не може да е така написано ...

Автор:  bgeorgiev [ Пет Мар 22, 2013 10:51 pm ]
Заглавие:  Re: Помощ за програма за бутон

Това е бейсик, а button си е команда от бейсик

Автор:  ToHu [ Пет Мар 22, 2013 11:44 pm ]
Заглавие:  Re: Помощ за програма за бутон

Аха .. това да не е онова протон ли какво беше ? Тази команда не мога да и разбера всички параметри така че не знам как да ти помогна. Гледам някакъв пример който открих, като гледам е също като при теб, т.е. ако бутона не е натиснат отиваш на led, предполагам това 50,20 е свързано с дебонсинга, bp може би е променлива която взема статуса на бутона, 0 няма идея какво е, може би състоянието при което се отива в последващия параметър led .... само тая единица след порта не знам какво значи.
Та ...ако е така би следвало като натиснеш бутона светодиода да светне, то зависи как си го вързал, дали към маса или към +. Обаче как работи самата команда бутон не мога да ти кажа, възможно е там нешо да не е наред, нямам представа. отделно гледам при теб дефиницията на пина е GPI0.5 а в примера който гледам са дефинирали променлива която я дефинират като con 5 каквото и да е това.
Възможно ед да ти е пуснат WDT съответно примигването да е при препълване и ресет на процесора ...

ето виж тука има пример http://melabs.com/samples/PBP-mixed/button.htm

без да те убеждавам нещо, ама що не си сложиш едно С и да се почустваш бял човек.

Автор:  Cekins [ Съб Мар 23, 2013 11:13 am ]
Заглавие:  Re: Помощ за програма за бутон

Протон е :) Признавам си че пиша на Протон, ама никога не съм ползвал тая функция. Виж си хелпа обаче. Ако бутона е натиснат, ще отиде на лейбъла лед. Ако не е пак ще отиде, ама първо ще мине през gpio.4=0 :) демек все тая.
ако искаш да има ефект това трябва след гпио.4=0 да имаш още един гото маинлооп... Честно казано (като му знам на протона тия изкилиферчените функцики) никога не бих го ползвал това и не бих разчитал на него.
1-цата след порта значи кое да се приеме за натиснато ниво.

Автор:  bgeorgiev [ Съб Мар 23, 2013 9:56 pm ]
Заглавие:  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 битов Уиндоус .
Май наистина трябва да започна на С.

Автор:  ToHu [ Нед Мар 24, 2013 10:14 am ]
Заглавие:  Re: Помощ за програма за бутон

Имам едно неприятно усещане че изпозлването на тази команда те забива в един цикъл с продължителността на дебонсинга ама ... а с тоя репийт рейт ... може и да се окаже за по дълго, т.е. ще те върти в самата функция и евентулно ще те праща на лейбъла .. знам ли гокак е писано, ама дори само за времето на дебонсинга да те държи ми се струва неприятна работа.
За C тука има доста линкове, CCS се мотае, мойто според мен за пикове не е лош, но там няма чак толкова направени функции, или пуне нямаше навремето, в новите версии може и да са се появили.

Автор:  Cekins [ Нед Мар 24, 2013 12:55 pm ]
Заглавие:  Re: Помощ за програма за бутон

Точно това прави - както и много голяма част от по засуканите и "уж" много удобни команди на протона. Затова както казах не ги ползвам.

Автор:  Бай Ставри [ Нед Мар 24, 2013 3:27 pm ]
Заглавие:  Re: Помощ за програма за бутон

инициализирай си портовете и ше тръгне

Автор:  Cekins [ Нед Мар 24, 2013 7:26 pm ]
Заглавие:  Re: Помощ за програма за бутон

И какво да им инициализира? CMCON=7 прави всички цифрови, а Output 4 прави GPIO.4 изход... другите са входове (дифолт при резет)... Нема да тръгне.
За идеята да светне леда като се натисне бутона : GPIO.4=GPIO.5
Е няма дебоунс, ама ще работи...

Автор:  bgeorgiev [ Пон Мар 25, 2013 11:03 am ]
Заглавие:  Re: Помощ за програма за бутон

GPIO.4=GPIO.5 така наистина работи, ама как трябва да стане ако искам да има задръжка по време при изключване на бутона ?

Автор:  Zdrav [ Пон Мар 25, 2013 11:29 am ]
Заглавие:  Re: Помощ за програма за бутон

bgeorgiev написа:
GPIO.4=GPIO.5 така наистина работи, ама как трябва да стане ако искам да има задръжка по време при изключване на бутона ?


В горния ти пост думичката "трябва" бърка цялата работа...

http://hackaday.com/2010/11/09/debounce ... -them-all/

виж колко много различни начини има...

Автор:  bgeorgiev [ Пон Мар 25, 2013 4:06 pm ]
Заглавие:  Re: Помощ за програма за бутон

Наистина има ама за С.
Благодаря все пак.

Автор:  Zdrav [ Пон Мар 25, 2013 4:15 pm ]
Заглавие:  Re: Помощ за програма за бутон

Останах с впечатление че това също е вариант за теб. И като гледам еднакво лесно/трудно ще ти бъде и с бейсик и със С.

Автор:  bgeorgiev [ Пон Мар 25, 2013 9:25 pm ]
Заглавие:  Re: Помощ за програма за бутон

Е ще почета малко и на С ще се пробвам. :)

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