 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3362 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Čet Okt 31, 2013 5:39 pm Naslov sporočila: MCP23017 |
|
|
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
Opis: |
|
Velikost datoteke: |
72.84 KB |
Pogledana: |
5 krat |

|
|
|
Nazaj na vrh |
|
 |
urosg Član


Pridružen-a: Pet 27 Apr 2007 14:30 Prispevkov: 565 Aktiv.: 2.56
|
Objavljeno: Čet Okt 31, 2013 5:57 pm Naslov sporočila: |
|
|
Č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 |
|
 |
mkosmac Član


Pridružen-a: Čet 26 Mar 2009 22:18 Prispevkov: 301 Aktiv.: 1.52 Kraj: Limbarska Gora
|
Objavljeno: Čet Okt 31, 2013 6:01 pm Naslov sporočila: |
|
|
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 |
|
 |
jjedat Član

Pridružen-a: Ned 17 Avg 2014 13:57 Prispevkov: 104 Aktiv.: 0.79 Kraj: Vojnik
|
Objavljeno: Tor Jan 31, 2017 9:20 pm Naslov sporočila: |
|
|
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 |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Sre Feb 01, 2017 12:55 am Naslov sporočila: |
|
|
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 |
|
 |
jjedat Član

Pridružen-a: Ned 17 Avg 2014 13:57 Prispevkov: 104 Aktiv.: 0.79 Kraj: Vojnik
|
Objavljeno: Sre Feb 01, 2017 9:14 pm Naslov sporočila: |
|
|
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);
} |
Opis: |
|
Velikost datoteke: |
107.34 KB |
Pogledana: |
9 krat |

|
|
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Čet Feb 02, 2017 11:58 pm Naslov sporočila: |
|
|
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 |
|
 |
|
|
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
|