www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

MCP23017

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika za začetnike
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3362
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Okt 31, 2013 5:39 pm    Naslov sporočila:  MCP23017 Odgovori s citatom

Pozdravljeni,

Želim uporabiti i2c ioexpander MCP23017.
Berem datasheets in se mučim. Že na začetku naletim na izraz, ki ga ne poznam: BANK

Kot bi razumel po priloženi tabeli iz DataSheeta lahko pridem do istih registrov tako pri BANK = 0 kot pri BANK = 1, a v tem slučaju pridem do registrov po drugačnem naslovu.

Ne vidim pravega smisla v možnosti dvojnega naslavljanja istih registrov. In nadalje ne vidim nikjer, kako dopovem IC-u, po katerem 'bank'-u naslavljam.

Mi lahko kdo pojasni smisel takega naslavljanja in kako dopovem čipu, kako naj razume moje naslove?

Hvala.
VS




http://ww1.microchip.com/downloads/en/devicedoc/21952b.pdf



snap.jpg
 Opis:
 Velikost datoteke:  72.84 KB
 Pogledana:  5 krat

snap.jpg


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
urosg
Član
Član



Pridružen-a: Pet 27 Apr 2007 14:30
Prispevkov: 565
Aktiv.: 2.56

PrispevekObjavljeno: Čet Okt 31, 2013 5:57 pm    Naslov sporočila:   Odgovori s citatom

Če sem na hitro prav videl je razlika v uporabi glede na način pisanja/branja vrednosti za i/o porte.

Razloženo v 1.3.1 odseku in potem se malo v 1.6.6.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mkosmac
Član
Član



Pridružen-a: Čet 26 Mar 2009 22:18
Prispevkov: 301
Aktiv.: 1.52
Kraj: Limbarska Gora

PrispevekObjavljeno: Čet Okt 31, 2013 6:01 pm    Naslov sporočila:   Odgovori s citatom

Glejte IOCON register na strani 17 in 18.

Piše, da če je BANK=0 so registri, ki upravljajo PORTA (naslovi 00h - 0Ah) ločeni (angl. segregated) od registrov, ki upravljajo PORTB (naslovi 10h - 1Ah)

Če je BANK=0 so registri, ki upravljajo s PORTA in PORTB po parih. Recimo IODIRA register od PORTA je na naslovu 00h, sledi mu IODIRB register od PORTB, ki je na naslednjem naslovu 01h.

To bi bilo recimo uporabno takrat, ko je omogočeno zapisovanje podatka na naslednji naslov.
Koda:
The Sequential Operation (SEQOP) controls the incrementing function of the Address Pointer. If the
address pointer is disabled, the Address Pointer does
not automatically increment after each byte is clocked
during a serial transfer. This
feature is useful when it is
desired to continuously poll (read) or modify (write) a
register.

_________________
LP Matej
if(?) ask_google();
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jjedat
Član
Član



Pridružen-a: Ned 17 Avg 2014 13:57
Prispevkov: 104
Aktiv.: 0.79
Kraj: Vojnik

PrispevekObjavljeno: Tor Jan 31, 2017 9:20 pm    Naslov sporočila:   Odgovori s citatom

Pozdravljeni.

Delam na enem projektu in mi je zmanjkalo I/0 pinov, zato sem se odločil uporabiti
mcp23017 expander, vendar ne vem kako se v njega zapisuje. Program pišem v arduino okolju 1.8.0, namestil sem vse potrebne knjižnice vendar ne vem oz. ne razumem kako naj na primer (za začetek) napišem program da mi bo utripala led dioda na pinu štiri mcp23017 expanderja, z arduinotom to znam narediti s tem čipom pa ne vem. Knjižnico sem dobil tukaj: https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library

Prosil bi če bi mi lahko kdo napisal kak takšen enostaven program, da vidim kako nasploh to izgleda, sem gledal nekaj po Googlu pa mi ni čisto jasno.

Lp.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Sre Feb 01, 2017 12:55 am    Naslov sporočila:   Odgovori s citatom

Pa saj so v tisti mapi na githubu tudi primeri. Poglej v mapo examples/toggle. Je točno to kar hočeš, le v parametrih funkcij namesto 0 napiši 4.
_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jjedat
Član
Član



Pridružen-a: Ned 17 Avg 2014 13:57
Prispevkov: 104
Aktiv.: 0.79
Kraj: Vojnik

PrispevekObjavljeno: Sre Feb 01, 2017 9:14 pm    Naslov sporočila:   Odgovori s citatom

Sem pogledal pod primere in našel program za utripanje led diode, sedaj že malo bolj razumem zadevo. Sedaj pa me zanima kako bi napisal program, da se mi bi izpisal napis na LCD zaslonu npr. hello world. LCD sem priklopil po spodnji shemi ter našel program, arduino preveri program, uspe mi ga tudi naložiti vendar se na lcd zaslonu nič ne izpiše,sedaj pa ne vem ali je program napačen ali pa vezava.

PROGRAM:


Koda:
// include the library code:
#include <Wire.h>
#include <LiquidTWI2.h>

// Connect via i2c, address 0x20 (A0-A2 not jumpered)
LiquidTWI2 lcd(0x20);

void setup() {
  // set the LCD type
  // lcd.setMCPType(LTI_TYPE_MCP23008);
  lcd.setMCPType(LTI_TYPE_MCP23017);
  // set up the LCD's number of rows and columns:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);

  lcd.setBacklight(HIGH);
  delay(500);
  lcd.setBacklight(LOW);
  delay(500);
}



mcp23017 display_schem.png
 Opis:
 Velikost datoteke:  107.34 KB
 Pogledana:  9 krat

mcp23017 display_schem.png


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Čet Feb 02, 2017 11:58 pm    Naslov sporočila:   Odgovori s citatom

Ali na LCD vidiš zgornjo vrsto polno kvadratkov? To pomeni da je kontrast nastavljen vredu, ter da je po vsej verjetnosti nekaj z vezavo. V tem primeru preveri vezavo.
Če pa je ekran ali poln ali prazen, najprej nastavi kontrast. Na tvoji shemi je to nastavljeno kar z uporom R3, vendar ni nujno, da je za vsak LCD vrednost tega upora prava. Navadno se uporabi na tem mestu trimpotenciometer, da je možno kontrast prilagodit.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika za začetnike Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 501 dni


Powered by phpBB © 2001, 2005 phpBB Group