|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:05 am
PIC - More InputS are needed :)
| Автор |
Съобщение |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
Pirev на ПИКА каде му е вектора на прекъсванията на кой адрес като си почнал от ORG 0x000 ще свърши InitHardware ? затова става дума
ORG 0x0000
InitHardware:
clrf STATUS
clrf INTCON
movlw 0x09 ; Reset = 1, Clock = 0, Store = 0, Load = 1
movwf PORTA
clrf PORTB ; PORTB = 0;
bsf STATUS,RP0
movlw 0x20
movwf TRISA
movlw 0x00
movwf TRISB
bcf STATUS,RP0
|
| Пет Окт 28, 2005 11:50 am |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
Тhe_real_maniac,RA4 е незаменим когато трябва да превключваш нещо с по голямо напрежение от Vcc на PICa например реленце на 12в. е ртябва да се съобразиш с товароспособноста на изхода де 20-30мА.
А в случая не става като изход не за друго а защото ти трябват остри фронтове на превключване а входа на HC серията е все пак един кондензатор (вход на полеви транзистор) и за да направиш остър фронт ти трябва нискоомнен pull-up който пък ще товари излишно изхода на open-drain транзистора на RA4
|
| Пет Окт 28, 2005 12:09 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Много си се задълбочил  На човека му трябваше начин да подкара 74HC597, не да пише вектори на прекъсване. Може и обратното да попитам: ами ако не ползва прекъсвания, защо да прави излишно гото от 0 към InitHardware ? Приемам все пак критиката.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пет Окт 28, 2005 2:43 pm |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
Ако може да развием Мааалко темата
Защо бих предпочел да ползвам 12в реленце, вместо 5волтово  примерно !?.
pirev: не спирай човека , щом иска да каже  Всяка информация е добре дошла 
|
| Пет Окт 28, 2005 3:34 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 ми защото ти се налага, такова има, такова трябва да е.... а може и да не е реле, може да искаш да управляваш транзистор мощен, и 5 V примерно ще са малко за някоя за да се отпушат напълно, или пъ няма да стигат з запушването на PNP или Р канален. Има мнго случаи когато се нлага изпозлване на изходи с OD.
|
| Пет Окт 28, 2005 6:17 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
the_real_maniac заеби реленцето дадох го като пример (може би не много удачен ама принципа е важен ) ти кажи по добре подкара ли регистъра  Пирев репликата я направих щото някой от начинаещите може да реши да ползва наготово кода ти и като се омаже програмата му ще има пак едни постове ама то не ми работи таймера помощ АЦПто ми не мери и т.н. сещаш се де 
|
| Пет Окт 28, 2005 11:07 pm |
|
 |
|
WDW
Ранг: Популярен
Регистриран на: Сря Окт 26, 2005 12:36 am Мнения: 353
|
 RA4 ??
Не съм се запознавал в детайли със характеристиките , но найстина ли RA4 ще издържи 12 В , че и повече !!!??????
Винаги съм се чудел защо тия от Майкрочип са го плъоснали така недоклатено тоя порт , а то какъв бил замисълът !!!??!! 
|
| Съб Окт 29, 2005 12:28 am |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
RA4 open-drain по DC характеристиките ма Microchip е до 8.5-9 волта максимално напрежение аз съм го ползвал на 12В. и работи без проблем ама да не прекаляваме по-нагоре все пак ПИК е не се знае каде ще се получи гафа 
|
| Съб Окт 29, 2005 1:06 am |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Абе простичка работа, изход като всички останали, само дето са махнали горния транзистор. На практика ми е държал 30мА, много удобно за управление на биполярни транзистори, даже често ми се е налагало повече пинове като този 
|
| Съб Окт 29, 2005 4:09 am |
|
 |
|
WDW
Ранг: Популярен
Регистриран на: Сря Окт 26, 2005 12:36 am Мнения: 353
|
Значи спокойно мога да си пусна едно реле на 12 В през него ??
_________________ Сичкото що е транзистор за илядо и пестотин волта се е BU ...
|
| Пон Окт 31, 2005 12:38 am |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 Не чак много спокойно...
|
| Пон Окт 31, 2005 1:46 am |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
Тръгна (че къде ще ходи  ).
Здравейте , не писах в тази тема , въпреки достата внимание поради простата причина , че точно когато тук се развихри пак дискусия аз си имах други неща на главата - кои маловажни, кои малко важни , та ...
Какво се оказа, е днес най-сетне го преборих , всъщност аз се САМОпреборих.
Що всички Вие да Ви питам си мълчите , А ? Защо не казвате на начинаещия , че PIC16x (както и 12x) не поддържа директни операции с WREG !?. А ? Хем и програмката си дадох , макар и с грешки от това да я направя по-хубава (прегледна и прочие).
Та сериозно:
в мойта програма , тъй като просто беше за тест взимаше един shiftreg състоянието му и бам в PORTB.
И си викам да си ползвам W(REG). И си го ползвам , ама друг път  Как точно го установих, ами с помощта на PIC SIMULATOR IDE (макар , че можех и по други начини, но там ми изкочи пред очите проблема).
Абе почнах аз стъпка по стъка и със microcontroler view и гледам на breakpoint manager-a , по-едно време няква инструкция и INDF като рег и се плеща на среща  И като се огледах , ми то където трбява да ми е WREG. И после си направих една програма 3 реда clrf, bsf , rlf WREG и видях , че нищо не става всъщност.
Тогава се борих с гуглето и keywords, в крайна сметка към 3-та страница ми излезе задоволително попадение (потвърждението , което търсех).
Форумче подобно на нешето и човека иска като мен bsf / bcf + rlf да ползва директно на WREG , но не работи. И човека също като мене си мисли , че проблема е в него  А се оказва , че PIC12/16x не поддържат тези директни операция. clrf WREG е всъщност movlw 0x00 , та тъй.
После имах един физ. проблем , когато не са вързани входовете на 597 си менят състоянието като луди ей ... заради това повече от 1 час се чудя какво може да съм объркал в програмата, като вече я научих на изуст със opcodeS ... абе мани :- )))
Та ето прилагам една снимчица на моята тестова платка , много е весела знам  Ама работи
Powered by real_mania for gadgets
едит: мдааа не се вижда хубаво, утре ще направя една снимчица като хората с CX65, просто тея хвърчащи кабели + това , че работи (колкото и просто да е то, но измъчено беше) ме радва в момента много
edit2: ама съм заплес. Благодаря Ви много за времето , което отделихте на темата !
|
| Пет Ное 04, 2005 2:36 am |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Що не постнеш подпрограмата за четене на 74hc597 ? Тия дни мисля да го използвам ....
bsf,bcf и т.н. върху WREG не работят, всъщност работят, но използват индиректната адресация, т.е. ще направиш bsf но в регистъра, чийто адрес е зареден в FSR регистъра.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пет Ное 04, 2005 3:00 am |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
Честно да ти кажа това за индиректната адресация така и не съм се задълбочавал , нито съм го ползвал - с една дума не го разбирам (за момента).
Относно подпрограмата проблем нямаш.
Обаче относно самия shift register трябва да обсъдим нещо.
М/у 74HCT166 и 597 разликата е в flip-flops , които в крайна сметка се оказаха , че значат просто тригери.
Така, виж долу таблицата с режимите на 597. Ще видиш два режима за пренасяне на данните в самия shift reg.
И въпроса е кой е по-добре да се ползва (и по-точно как да си сигурен , че ползваш него). Знам, че сега ти звучи малко объркано , но сега ще ти обясня логиката ми и ще дам малко изводи/обяснения.
1-начин: директно от inputs -> shift reg.
PL = L , MR=H , STcp = ^ (L to H transition) , SHcp = X (don't care)
2-начин: от inputs -> latches и от latches в shift reg-a.
inputs -> latches: PL = X, MR=X, STcp = ^ , SHcp = X
latchs -> shiftreg: PL=L, MR=H, STcp= X , SHcp = X
----------------------
Какво е специфичното при реализирането на 1 или 2. Да не стане искаш 2 , пък ползваш 1. Защо ? Ами много лесно може да се объркаш. виж първия начин и виж 1-вото действие на 2-рият начин.
Както виждаш inputs -> latches не го грее какво ниво има всичко остнало стига смао да има един такт/импулс на STcp (L to H). Обаче по първият начин , ако имаш STcp (L to H) + PL=L + MR=H ще напарвиш пренасяне на инф. от входовоете към shift reg-a . Т.е ако искаш да ползваш 2-рия начин не трябва да имаш PL=L и MR=H едновременно и тъй като MR=L има два случея спрямо PL:
- = L , което е невалидно състояние , не се знае какво ще стане.
- = H, което е ресет на регистъра.
временно само за първото действие от 2 ще вдигнеш PL = H, а MR си остава = H. След това просто си правиш един такт с STcp (и получаваш inputs -> latches). И така объркване няма да има.
Долу ще напиша и двете разновидности на ползване.
Сега обаче имам и едно питане:
В моя случей ми трябва 1-вия вариант мисля, директното inputs -> shiftreg (защото ще проверявам дали дадено нещо е в състояние от тип включено / изключено ) и не мога да разбера като ЦЯЛО ЗАЩО ми е едно запазване в D-тригери при положение , че си имам shift reg (важната думичка в случея REG - има къде да се запази инф. , докато се обработва).
Виж за output shift reg - да съгласен съм че си трябват, за да е сигурно задържането на информацията, но при Input  нали при проверяване на входовете се попълва информацията в shiftreg-а и се обработва за части от секундата , за какво се тези д-тригери , ако искам после след Х време да взема пак каква е била инфорамцията ?!. Е , че толкова ли не мога да я запазя в един 8бит регистър  Май тези D-тригери играят роля, когато не се ползва MCU , а се навръзват елементи за упраленито му. Защото тези D-тригери лесно ще си ги заменя с един рег.в пмаета на MCU-то и винаги ще си имам резулатат  май сам стигнах до отговора или нещо съм в грешка
---
така оправих всичко , но се появи един проблем , както винаги , нали.
Не знам защо директни режим не работи (от входовете директнов shiftreg).
Посредством д-тригерите проблем няма ,но директно не ще
единия път ми изкара всички 1-ци , други път всичко 0-ли, а аз съм дал 0001110 на входовете на shiftreg.
Борих се тука 15мин с тоя директен режим , но неще. Трябва да излизам , за това реших да го дам така , макар и с едно неработещо "нещо"
Радвам се , че и аз мога да помогна / да съм Ви полезен.
edit: забравих да кажа таблицата с режимите на 597.
edit2 видях си един пропуск RA4 не съм го направил вход , тъй като не го ползвам.
edit3: ох пак се обърках , когато не се ползва е изход, нали ако е вход ще се лута нагоре надолу като не е вързан.
реда
clrf TRISA
bsf TRISA,0
е заменен с
movlw B'00000001'
movwf TRISA
|
| Пет Ное 04, 2005 11:29 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 8 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|