| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Бутон със светодиод като тригер http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=10838 |
Страница 1 от 3 |
| Автор: | timt [ Вто Ное 27, 2012 9:43 pm ] | |||||||||
| Заглавие: | Бутон със светодиод като тригер | |||||||||
|
||||||||||
| Автор: | michev [ Вто Ное 27, 2012 10:23 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
Пусни си 1 таймер да цъка, на всяко четно събитие, правиш извода като изход и светваш/изгасяш светодиода, а на всяко нечетно - правиш извода вход и четеш бутона. |
|
| Автор: | stefan63 [ Вто Ное 27, 2012 10:24 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
При инициализация- пускаш таймер на 10 милисекунди ( Всъщност ако няма някакви ограничения - например много окастрен процесор - аз винаги използвам такъв таймер). Тоя таймер ти е на пркъсване. В процедурата на прекъсването - вдига се флаг - "Флаг10мс'. Вдигаш флаг 'светнато_неугасено'. Приготвяш някой друг брояч и флаг за обработка на бутон/ите. Отиваш в главния цикъл. На всяко прекъсване по таймер -установяваш порта като вход, четеш го и записваш прочетеното някъде. Ако флагът 'светнато_неугасено' е вдигнат - обръщаш порта на изход с логическа 1-ца. Ако глагът е смъкнат - оставяш порта да бъд вход. Излизаш от прекъсването. В главния цикъл проверяваш "Флаг10мс' ,и ако е вдигнат - изпълняваш всички процедури, които зависят от фактора период(ичност) - включително обработка на бутон. Сложи някакъв резистор между входа и бутона , че да не прогориш порта при неправилна последователност на командите при обръщане от вход на изход. |
|
| Автор: | CarBeta [ Вто Ное 27, 2012 10:27 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
Тая схема е кофти решение! Диода ще си свети и без контролера докато е натиснат бутона, а ако в тоя момент RB0 е изход с ниско ниво може и той да светне. Иначе това дето искаш се прави като на определено време правиш порта вход и четеш състоянието на бутона, после пак го правиш изход за светодиода. |
|
| Автор: | timt [ Вто Ное 27, 2012 10:43 pm ] | |||||||||
| Заглавие: | Re: Бутон с светодиод като тригер | |||||||||
Ще се опитам понеже схемата ми е такава и незнам как става номера ще си поиграя малко. това е примерният код list p=16f628 #include <P16f628.INC> __CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC & _BODEN_OFF & _LVP_OFF swan equ 0x27 swanalt equ 0x28 Taste equ 0x2c org 0 init bsf STATUS, RP0 clrf OPTION_REG BCF TRISA, 3 movlw B'00000000' movwf TRISB bcf STATUS, RP0 clrf PORTB BCF PORTB,0 call BUTTON BUTTON BTFSS PORTB, 0 call resetbutton BTFSC PORTB, 0 call invert goto BUTTON resetbutton MOVLW 0 MOVWF swanalt RETURN invert MOVLW 1 BTFSS PORTB, 0 MOVWF swan MOVF swanalt,0 XORLW 1 BZ marke Incf Taste,1 BTFSS Taste,0 BCF PORTB,0 BTFSC Taste,0 BSF PORTB,0 MOVLW 1 MOVWF swanalt marke return end |
||||||||||
| Автор: | CarBeta [ Вто Ное 27, 2012 11:07 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
Докато RB0 ти е изход с ниско ниво(несветещ светодиод) винаги ще го прочиташ като 0, дори да му подадеш високо отвън. А като му подадеш високо ниво, в твоя случай директно 5v., си става директно късо и със сигурност ще повредиш RB0 защото през него ще протече доста повече от 25 ma. Е... остават ти още 7 опита с PORTB, докато не си оправиш схемата. Ако тая схема ти е дадена от преподавател му кажи да се логне тук за малко. |
|
| Автор: | timt [ Вто Ное 27, 2012 11:21 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
Съгласен съм че не е най добрият вариант просто някъде съм го срещал а сега ми трябва този вариант или да почна да мисля за нов. Незнам с таймера как ще се държи но ще се опитам да го подкарам някакси. |
|
| Автор: | ToHu [ Сря Ное 28, 2012 11:05 am ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
Варианта е ОК, само размени местат на светодиода и бутона, т.е. светодиона да е от + към пина, а бутона към маса. Това че светодиода ще свети като натискаш бутона може би няма да е фатално защото когато светодиода е светнат и натиснеш бутона нищо няма дасе промени, просто ще си свети, а след отпускане ще изгасне. Обратно, като е изгаснал ще светне още при натискането, и така или иначе след това състоянието му ще е пак светнато. Единствено събитията ще настъпват разместени спрямо фронта, светване при преден, игаснене при заден .. или по скоро обратното щото бутона ти сваля в 0. Относно самото реализиране колегите горе са писали, примерно веднъж на 10 ли 100 или колкото искаш ms слагаш пина като вход и го проверяваш, след това си го връщаш изход с нужното ниво. |
|
| Автор: | Н'бабане Гт'муан'га [ Сря Ное 28, 2012 11:59 am ] | ||
| Заглавие: | Re: Бутон с светодиод като тригер | ||
Може да опиташ ето така. Тогава светодиода ще го палиш с 0 и ще го гасиш с 1, а когато превключиш пина на вход, ще можеш да четеш 0 ако бутона е насиснат, или 1 ако не е.
|
|||
| Автор: | timt [ Сря Ное 28, 2012 1:28 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
Дай малко код като пример. |
|
| Автор: | Н'бабане Гт'муан'га [ Сря Ное 28, 2012 2:07 pm ] | ||||||||||||||||||
| Заглавие: | Re: Бутон с светодиод като тригер | ||||||||||||||||||
Ами... ето. Приемаме че си на порт RA0 с някакъв пик. Пиша ти го сега на момента, така че може и да има някаква грешка, но идеята би трябвало да е ясна.
|
|||||||||||||||||||
| Автор: | timt [ Сря Ное 28, 2012 2:31 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
От този код нищо не разбрах |
|
| Автор: | Н'бабане Гт'муан'га [ Сря Ное 28, 2012 2:46 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
Eee... ако С не разбираш... Не ми се пише сега на асемблер, пък и съм го позабравил вече. |
|
| Автор: | CarBeta [ Сря Ное 28, 2012 6:44 pm ] |
| Заглавие: | Re: Бутон с светодиод като тригер |
Варианта със схемата на колегата от Мутум'ба ще стане. Но има един малък проблем(поне за мен). Светодиода ще светва след като се отпусне бутона, а ще угасва веднага при натискането му. Ако това не е проблем схемата е ок. Ако се изисква незабавна реакция на светодиода при натискане на бутона(без значение колко време стои натиснат) - на първата схема трябва да се добави един резистор между бутона и VDD. Останалото се движи от софтуера. Таймер 0 се пуска 1:128. С 4 mHz кристал ще имаш прекъсване около 30 пъти в секунда за да си четеш бутона. Останалото време е за светодиода. Като влезе в прекъсване правиш RB0 вход(BSF TRISB, 0), четеш RB0 и в зависимост от състоянието му с два флага натиснат/отпуснат бутон определяш дали да светне или да угасне диода след като излезеш от прекъсването. Пак правиш RB0 изход(BCF TRISB, 0) и отиваш да чакаш ново прекъсване. Междувременно в зависимост от флаговете светваш/гасиш диода. |
|
| Автор: | stefan63 [ Сря Ное 28, 2012 10:29 pm ] |
| Заглавие: | Re: Бутон със светодиод като тригер |
Ако във варанта Мутум'ба се натисне бутонът - кой параметър на процесора осигурява прочитането на лог.0? Темата е много шантава - проста схема, неясни ограничения. Основният проблем е нискоомната верига на ЛЕД-а. Ако бутонът е към маса(през резистор за защита) , а вместо лед се сложи резистор/транзистор (и ледът след него) - ще стане културно - ледът ще може да се угаси при натискането на бутона и ще може да се държи угасен и докато е натиснат бутона. Трабва и някакъв подпиращ (вътершния на входа например) резистор към плюсовата шина. |
|
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|