Македонски форум за електроника

Дигитална електроника => Микроконтролери => Topic started by: gladiator on 08.11.2010, Monday, 18:41:31

Title: Зголемување на излези
Post by: gladiator on 08.11.2010, Monday, 18:41:31
Здарво на сите дали може некој да ми посочи некое интегрирано коло со кое би се зголемил
бреојот на излези на микроконтролерот однапред фала :)
Title: Одг: Зголемувашње на излези
Post by: SKOLS_OLD on 08.11.2010, Monday, 18:44:08
со шифт регистри!74HC164! 74HC595!
Title: Одг: Зголемувашње на излези
Post by: gladiator on 08.11.2010, Monday, 18:48:52
а дали има расение за влезовите
Title: Одг: Зголемувашње на излези
Post by: SKOLS_OLD on 08.11.2010, Monday, 18:51:28
што?не те сфакам!
Title: Одг: Зголемувашње на излези
Post by: gladiator on 08.11.2010, Monday, 18:53:53
дали може на ваков или сличен начин да се зголемат влезовите на еден микроконтролер
Title: Одг: Зголемувашње на излези
Post by: SKOLS_OLD on 08.11.2010, Monday, 18:57:34
да!Може ако се поврзат со едно за такт сигнал коло,стави му 74HC00!И поврзи ги сериски останатите пинови!
Title: Одг: Зголемувашње на излези
Post by: gladiator on 08.11.2010, Monday, 19:02:55
и би ти бил благодарен ако можеш да ми појасниш накратко за работата на  74VHC164
во смисла како се одбира кој излез во кое време да се уклучи
Title: Одг: Зголемувашње на излези
Post by: SKOLS_OLD on 08.11.2010, Monday, 19:06:01
вака,се си работи програмата од ПИКот тој одлучува кога да се пушти!Не сум сега дома затоа ќе ти поставам шема една да ја видиш како се поврзува со микроконтролер!Кога ќе се ставам од дома по ПП или овде ќе ти објаснам поопширно!

(http://elektronika-mk.net/index.php?action=dlattach;topic=2720.0;attach=1633)
Title: Одг: Зголемувашње на излези
Post by: gladiator on 08.11.2010, Monday, 19:11:16
ок ке чекам
Title: Одг: Зголемувашње на излези
Post by: Goce on 09.11.2010, Tuesday, 09:57:43
Има два типа на шифт регистри влезен и излезен со влезниот се зголемуваат влезните порти на микроконтролерот а со излезниот излезните порти на микроконтролерот.Шифт регистерот со микроконтролерот е поврзан преку три пина (data clock latch) комуницира сериски преку двата пина data clock а пинот latch служи за префрлање на податоците од меморискиот регистер во излезниот регистер.Како се одвива комуникацијата микроконтролерот прака податок hex code тој податок се сместува во меморискиот регистар со пракање на логичка 1 на пинот latch од меморскиот регистар податокот преминува во излезниот регистар со што се активира една порта со промена на clock от  податочите од шифт регистарит се поместуваат од десно на лево  Со еден шифт регистер искористуваш од микроконтролерот 3 пина а добиваш 8 ако сакаш да добиеш повеке излезни пинови може да ги поврзеш шифт регистрите сериски еве некој шеми како се поврзуваат
Code: [Select]
http://www.kronosrobotics.com/an137/DAN137.shtml
Title: Одг: Зголемувашње на излези
Post by: gladiator on 09.11.2010, Tuesday, 17:08:52
Гоце фала за одговоро ама мене ова некако ми изгледа многу сложено јас сум само почетник во оваа област дали постои несто поедноставно во смисла со конбинација од три или четири излезни пинови
да добиваш појке излези например со логиски кола  ::)
Title: Одг: Зголемувашње на излези
Post by: SKOLS_OLD on 10.11.2010, Wednesday, 13:38:18
а Гоце може да ставиш една програма за ЛЕД преку шифт регистриве т.е. програма во Бејзик!
Гладиатор: Гоце мене многу ми помогна и затоа побарај помош од него :D во врска со Бејзикот,за програмирање на микроконтролери!
Title: Одг: Зголемувашње на излези
Post by: Goce on 10.11.2010, Wednesday, 13:55:25
а Гоце може да ставиш една програма за ЛЕД преку шифт регистриве т.е. програма во Бејзик!
Гладиатор: Гоце мене многу ми помогна и затоа побарај помош од него :D во врска со Бејзикот,за програмирање на микроконтролери!

Ќе направам со влезен и излезен шифт регистер ке поставам и шема како се поврзуваат

Гоце фала за одговоро ама мене ова некако ми изгледа многу сложено јас сум само почетник во оваа област дали постои несто поедноставно во смисла со конбинација од три или четири излезни пинови
да добиваш појке излези например со логиски кола  ::)

Во суштина и шифт регистрите се логичги кола и со нив ке ти биде наједноставно  а може и со логички кола да се направи истото
Title: Одг: Зголемување на излези
Post by: BorceBT on 18.11.2010, Thursday, 11:17:14
Зголемување на излези (ако не ти требаат многу брзи излези) може да се направи со коло-декодер (на пример 74154) при што на секој од излезите ќе ставиш кондензатор од 100nF и ќе ги „рефрешираш“ излезите на секои 0.1 секунда и ќе добиеш 16 независни излези од само 4 излези на микроконтролерот. Без кондензатори ќе имаш 16 излези но зависни (он може да биде само еден во едно време).
Title: Одг: Зголемување на излези
Post by: deophorant on 18.11.2010, Thursday, 13:11:22
Наједноставно решение е со шифт регистри. Декодерите што ги спомена борче се уште посложени. Ја за оваа намена користам Port Expanedr на I2C. Тој може да биде влезен, излезен, да генерира прекин на настан, да одлучува, се на се многу добро коло кое не е за почетници. А и било кој муктиплексирани излези неможат да бидат брзи како дирекни излези.
Title: Одг: Зголемување на излези
Post by: gladiator on 26.09.2011, Monday, 15:52:15
здраво дали има некој некаков пример за Port Expanedr MCP23s17 ама да може поединечно да се контролираат излезите еден по еден  :) или ако знае некој нека напише во микро бејзик
Title: Одг: Зголемување на излези
Post by: Devil on 26.09.2011, Monday, 20:50:42
ти сакаш да работат само како излези или да може да се користат и како влезови ?
Title: Одг: Зголемување на излези
Post by: gladiator on 26.09.2011, Monday, 22:35:08
и како излези и како влезови но дали може да се прочита само еден бит од влезот дирекно или треба да го читаш цел бајт
Title: Одг: Зголемување на излези
Post by: Goce on 28.09.2011, Wednesday, 16:51:58
Незнам дали би имал повеке време да ти напишам код според твојте потреби ама еве ти еден пример кој може ке ти помогне


Code: [Select]
program PortExpander

dim
SPExpanderCS as sbit  at RA2_bit
SPExpanderRST as sbit at RA3_bit
SPExpanderCS_Direction as sbit at TRISA2_bit
SPExpanderRST_Direction as sbit at TRISA3_bit

dim i as char

#define Output_PORT0

main:

  ANSEL  = 0                                    
  ANSELH = 0
  C1ON_bit = 0                                  
  C2ON_bit = 0
  TRISB = 0
  i = 0


  SPI1_Init()                                    

  Expander_Init(0)                              

  Expander_Set_DirectionPortA(0, 0x00)          

  Expander_Set_DirectionPortB(0,0xFF)            
  Expander_Set_PullUpsPortB(0,0xFF)            

  while TRUE                                    
      Expander_Write_PortA(0, i)                
      inc(i)
      PORTB = Expander_Read_PortB(0)            
      Delay_ms(100)
  wend
  endif


  SPI1_Init()                                  

  Expander_Init(0)                              

  Expander_Set_DirectionPortB(0, 0x00)          

  Expander_Set_DirectionPortA(0,0xFF)          
  Expander_Set_PullUpsPortA(0,0xFF)              

  while TRUE                                    
      Expander_Write_PortB(0, i)                
      inc(i)
      PORTB = Expander_Read_PortA(0)            
      Delay_ms(100)
  wend
  endif

end



А ако сакаш можеш и да поврзеш два микроконтролера кој едниот ке ти е како PORT Expander и мегу себе ке ги поврзеш преку сериска синхрона или сериска асинхрона комуникација која ја знаеш повеке ако ти тереба само излези и ако користиш сериска ансихрона комуникација ке комуницираат преку еден пин ако ти требаат и влезови тогаш ке ти ребаат два пина RX TX.
Ако користиш сесирска синхрона комуникација за I2C ке ти требаат 2 пина Data in/out еден пин и clock втор пин, за SPI комуникација ке ти требаат еден Data in втор Data out трет Clock и ако имаш повеке паралелно споени контролери за секој ке ти треба еден пин за селектирање CS(Chip select) или SS(Slave select)
Title: Одг: Зголемување на излези
Post by: gladiator on 02.10.2011, Sunday, 13:43:03
Гоце примерот е одличен но мене ме интересира како од цел бајт да прочитам само еден бит дали е тоа возможно  ??? да тестирам на тој бит дали дошло до промена
Title: Одг: Зголемување на излези
Post by: Goce on 02.10.2011, Sunday, 14:22:04
Да кажеме дека 8 бита ти е порта А секој пин еден бит ти ако ја читаш порта А ке ја читаш како бајт пример 00110001   RA0 = 1 високо ниво активна RA1 =0 ниско ниво неактивна    RA2=0     RA3=0     RA4=1      RA5=1    RA6=0     RA7=0  пак ги гледаш промените поединечно на секој бит и знаеш што се случило на секој пин

Што сакаш да изработиш објасни подетално да ти помогнеме.
Title: Одг: Зголемување на излези
Post by: gladiator on 02.10.2011, Sunday, 14:52:32
ништо посебно само вежбам е сега како од 00110001 да го дознаам сомо  RA4 на пример
Title: Одг: Зголемување на излези
Post by: Goce on 02.10.2011, Sunday, 15:40:00
Едноставно објаснување бајтот што го напи6шав има 8 бити секој бит ти е еден пин од порта А најдесниот бит ти е RA0 ..... најлевиот RA7 во овој случај RA4  е "1" активен

Ако сакаш да ја активираш порта RА1      HIGH PORTA.1  исто ти е и ако му кажеш  PORTA=% 00000010
Ако ја користиш како влез и му кажеш IF PORTA.1 = 1 THEN LABELA    исто е ако му кажеш IF PORTA=%00000010 THEN LABELA

Се надевам дека ме разбираш што сакам да кажам.
Title: Одг: Зголемување на излези
Post by: gladiator on 12.11.2011, Saturday, 19:24:32
Гоце фала за помошта сега разбрав што сакаш да кажеш испробав и работи

             read_data = Expander_Read_PortB(0)
             if read_data.0 = 1 then
              Expander_Write_PortA(0,1)
             end if

Фала уште еднаш  :)
Title: Одг: Зголемување на излези
Post by: DX-er on 12.11.2011, Saturday, 19:35:42
gladiator како што гледам имаш некакво знаење за програмирање, така да можеш да им помогнеш на оние кои се почетници во оваа област, исто како тебе што ти помагаат Ивица и Гоце.
Title: Одг: Зголемување на излези
Post by: gladiator on 12.11.2011, Saturday, 20:42:02
и јас сега учам преку примери и ако знам нема проблем секако дека ќе го споделам моето знаење со останатите и ако мислам дека сеуште сум на почеток