Author Topic: Зголемување на излези  (Read 1542 times)

Offline gladiator

  • Стручњак
  • ***
  • Posts: 253
  • Gender: Male
Одг: Зголемување на излези
« Reply #15 on 26.09.2011, Monday, 15:52:15 »
здраво дали има некој некаков пример за Port Expanedr MCP23s17 ама да може поединечно да се контролираат излезите еден по еден  :) или ако знае некој нека напише во микро бејзик

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: Зголемување на излези
« Reply #16 on 26.09.2011, Monday, 20:50:42 »
ти сакаш да работат само како излези или да може да се користат и како влезови ?
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline gladiator

  • Стручњак
  • ***
  • Posts: 253
  • Gender: Male
Одг: Зголемување на излези
« Reply #17 on 26.09.2011, Monday, 22:35:08 »
и како излези и како влезови но дали може да се прочита само еден бит од влезот дирекно или треба да го читаш цел бајт

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
Одг: Зголемување на излези
« Reply #18 on 28.09.2011, Wednesday, 16:51:58 (Edited 28.09.2011, Wednesday, 17:08:30) »
Незнам дали би имал повеке време да ти напишам код според твојте потреби ама еве ти еден пример кој може ке ти помогне


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)

Offline gladiator

  • Стручњак
  • ***
  • Posts: 253
  • Gender: Male
Одг: Зголемување на излези
« Reply #19 on 02.10.2011, Sunday, 13:43:03 (Edited 02.10.2011, Sunday, 13:45:40) »
Гоце примерот е одличен но мене ме интересира како од цел бајт да прочитам само еден бит дали е тоа возможно  ??? да тестирам на тој бит дали дошло до промена

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
Одг: Зголемување на излези
« Reply #20 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  пак ги гледаш промените поединечно на секој бит и знаеш што се случило на секој пин

Што сакаш да изработиш објасни подетално да ти помогнеме.

Offline gladiator

  • Стручњак
  • ***
  • Posts: 253
  • Gender: Male
Одг: Зголемување на излези
« Reply #21 on 02.10.2011, Sunday, 14:52:32 »
ништо посебно само вежбам е сега како од 00110001 да го дознаам сомо  RA4 на пример

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
Одг: Зголемување на излези
« Reply #22 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

Се надевам дека ме разбираш што сакам да кажам.

Offline gladiator

  • Стручњак
  • ***
  • Posts: 253
  • Gender: Male
Одг: Зголемување на излези
« Reply #23 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

Фала уште еднаш  :)

Offline DX-er

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 6340
  • Gender: Male
    • Докажи дека си човек и речи стоп за убиствата на бебиња! Ако не си човек, требало и тебе да те абортираат :)
Одг: Зголемување на излези
« Reply #24 on 12.11.2011, Saturday, 19:35:42 »
gladiator како што гледам имаш некакво знаење за програмирање, така да можеш да им помогнеш на оние кои се почетници во оваа област, исто како тебе што ти помагаат Ивица и Гоце.
Чувството кога некој ограничен со размислувањето ке зборува за двојни стандарди/демократија/правила... бљак...

кликни тука за инфо околу форумот.

Offline gladiator

  • Стручњак
  • ***
  • Posts: 253
  • Gender: Male
Одг: Зголемување на излези
« Reply #25 on 12.11.2011, Saturday, 20:42:02 »
и јас сега учам преку примери и ако знам нема проблем секако дека ќе го споделам моето знаење со останатите и ако мислам дека сеуште сум на почеток