SchemaTheek
 
Home Nieuws Forum Schema's Artikelen Magazine Downloads Links Shops Zoeken
 
Controle Paneel
Gebruikersnaam
Wachtwoord
  Onthoud mij
» Wachtwoord?
» Registreren
Site info
» Het Team
» Contact
» FAQ
» Leden
» Upload Archief
Stats
Totaal online: 4
4 gasten
0 leden:
Forum > Digitaal > MCP23017
Stynus
Admin
Berichten: 2685
Gepost op zaterdag 18 Oktober 2014 20:48:21 QuoteWijzig

Dit topic is afgesplitst van: http://www.schematheek.net/index.php?p=forum/topic&t=961

Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
pascalbianca
Lid
Berichten: 1364
Gepost op zondag 12 Oktober 2014 23:58:54 QuoteWijzig

Hoi Henk,

Nu lees ik een stukje in je tekst dat je de code werkend hebt gekregen van de MCP23017, ik neem aan dat die bij jou dan ook op I2C staat.
Nu zelf ben ik hier al 2 dagen mee bezig en het wil van geen meter lukken.
Ik wil die gaan gebruiken om 13 leds aan te sturen.

Nu is mijn vraag welk adres heb je gekozen met A0/A1/A2? en zou je die code willen delen met ons, hopelijk krijg ik hem hier dan ook aan de praat.
Zelf heb ik mijn lopende project 3 PCF8574AP's lopen en ook een I2C klok (weet even niet meer welke zou ik moeten kijken).

Als die I2C klok bij mij het zelfde zou zijn wil ik je gerust de code hier ook even plaatsen zodat jij ook deze hebt.


http://pascalbianca.blogspot.nl/
Henk (NL)
Lid
Berichten: 257
Gepost op maandag 13 Oktober 2014 12:16:13 QuoteWijzig

Ik heb de code niet 1-2-3 bij de hand maar bij het aanzetten (POR dus) is het van belang dat je de Register Tabel goed leest, met name de laatste kolom dat is de POR/RST value kolom op pagina 11, daar staat dat de IOCON 00000000 is na het opstarten, dus het adres is dan 0A (hex) en 0B ze zijn beide aan elkaar gekoppeld als ik in de pdf goed lees, en bij de MCP23008 is dit (alleen) 05 hex.

Ik had er over gedacht om IOCON.BANK = 1 te zetten maar als er een stoorpuls binnenkomt zou het IC zich kunnen (mogelijk) resetten,
Dus ik hou IOCON.BANK = 0.
Daarmee voorkom ik dus dat vanuit de PIC. dan na zo'n POR verkeerde registers benader.

Samengevat;
IODIRA = 00 hex. het zelfde adres als de MCP23008
IODIRB = 01 hex.
IOCONA = 0A hex. IOCONB hoef je niet in te stellen, A&B zijn gelijk
GIOA = 12 hex.
GIOB = 13 hex. Deze laatste 2, ipv. 09 hex. bij de MCP23008

A0, A1, A2 adressen zijn gelijk als bij de vorige topic dus resp. 42&43hex.
 
[Bericht gewijzigd door Henk (NL) op Maandag 13 Oktober 2014 12:24:44]

pascalbianca
Lid
Berichten: 1364
Gepost op maandag 13 Oktober 2014 15:26:14 QuoteWijzig

Hoi Henk,

Welke vorige topic?
Als je de code bij de hand zou hebben later op de dag, zou je hem alsnog eens kunnen plaatsen?
Ik heb hier nog even gekeken voor je welk I2C clock ik gebruik en ik maak gebruik van een PCF8583 Clock/Calendar 240b-RAM.
Als je eventueel daar de code van zou willen hebben , kan ik die voor je plaatsen.
De code die ik heb is zowel om datum als tijd in te stellen en om deze uit te lezen.
 
[Bericht gewijzigd door pascalbianca op Maandag 13 Oktober 2014 15:27:21]


http://pascalbianca.blogspot.nl/
Henk (NL)
Lid
Berichten: 257
Gepost op maandag 13 Oktober 2014 19:02:16 QuoteWijzig

Deze link pascal.
http://www.schematheek.net/index.php?p=forum/topic&t=880&n=4

MCP23008 code;

Code
I2COUT SDA,SCL,$42,[$00,%00000000]
I2COUT SDA,SCL,$42,[$05,%00010010]
I2COUT SDA,SCL,$42,[$09,%11110000]



Voor de MCP23017 wordt dit dan;

Code
I2COUT SDA,SCL,$42,[$00,%00000000] 'uitgangspoorten, bv.
I2COUT SDA,SCL,$42,[$01,%00000000]
I2COUT SDA,SCL,$42,[$0A,%00010010]
I2COUT SDA,SCL,$42,[$12,%11110000] '4-bit aan&uit,bv.
I2COUT SDA,SCL,$42,[$13,%11110000]

pascalbianca
Lid
Berichten: 1364
Gepost op zaterdag 18 Oktober 2014 18:54:49 QuoteWijzig

Henk als ik je onderstaande schema zou voorschotelen, hoe krijg jij die aan de praat want hier lukt het niet.


http://pascalbianca.blogspot.nl/
Henk (NL)
Lid
Berichten: 257
Gepost op zaterdag 18 Oktober 2014 19:47:16 QuoteWijzig

Omdat A0 = aan GND.
Terwijl in topic zie link van 13oct is A0 = 1 dus $42 hex.

Kortom;
In het jouw schema is dit $40 hex.

pascalbianca
Lid
Berichten: 1364
Gepost op zaterdag 18 Oktober 2014 20:00:56 QuoteWijzig

Ik heb deze code maar er gebeurd niets.

Code
Device 16F877A 
Config CP_OFF, DEBUG_OFF, WRT_OFF, CPD_OFF, LVP_off, PWRTE_on, WDT_off, HS_OSC, BOREN_off, WDT_off
Xtal = 20

Declare LCD_DTPin =PORTB.4
Declare LCD_ENPin = PORTB.3 '2
Declare LCD_RSPin = PORTB.2 '3
Declare LCD_Lines = 4

;De standaard snelheid voor de I2C bus is 100KHz. Sommige apparaten gebruik een hogere bus snelheid van 400KHz. 
;De bovenstaande Declare kan de I2C bussnelheid worden verhoogd of verlaagd. Gebruik dit
;declareren met de nodige voorzichtigheid, als een te hoge bitsnelheid gekozen word als wat mag in de
;apparaat specs, dan zal dit resulteren in intermitterende transacties, of in sommige gevallen, helemaal geen  transacties. 
;Het gegevensblad van het apparaat, informeert u van betreffende bussnelheid. De standaard bitsnelheid is de standaard 100 KHz.
;Declare Slow_Bus On
Declare Hbus_Bitrate 400 ' Bits per second 100, 400, 1000 etc.

All_Digital TRUE              ;Alle ingangen digitaal

;I2C poorten aanwijzen
Symbol SCL_Pin    = PORTC.3
Symbol SDA_Pin    = PORTC.4 ;Alias voor de SDA_Pin (Data) lijn

Symbol Control %01000010 

Dim Received As Byte                ; Variabelen 
Dim VAR1 As Byte                     ' We'll only read 8-bits 
Dim Address As Byte                  ' 8-bit address required 

Cls
DelayMS 500
Clear
  

  
Print At 1,1, "MCP23008 Test" 
Print At 2,1, "02-01-2014" 
Address = 40 
I2COut SDA_Pin, SCL_Pin, Control , Address , [%00010010] 
Address = 0 
I2COut SDA_Pin, SCL_Pin, Control , Address , [%00000000]  
             
Loop: 

I2COut SDA_Pin,SCL_Pin,$00,$40,[%00000000] 
I2COut SDA_Pin,SCL_Pin,$05,$40,[%00010010] 
I2COut SDA_Pin,SCL_Pin,$09,$40,[%11110000]  
  DelayMS 500  
I2COut SDA_Pin,SCL_Pin,$40,[$00,%00000000] 
I2COut SDA_Pin,SCL_Pin,$40,[$05,%00010010] 
I2COut SDA_Pin,SCL_Pin,$40,[$09,%11110000]  
   DelayMS 500  
GoTo Loop ' Loop forever



Maar normaal gebruik ik HBUSOUT.


http://pascalbianca.blogspot.nl/
Henk (NL)
Lid
Berichten: 257
Gepost op zaterdag 18 Oktober 2014 20:04:35 QuoteWijzig

Je verwijst naar register 05 ipv 0A enz.
Lees even even de tabel zoals in 13oct hierboven.

pascalbianca
Lid
Berichten: 1364
Gepost op zaterdag 18 Oktober 2014 20:14:04 QuoteWijzig

Help helaas ook niet.

Code
;I2C poorten aanwijzen
Symbol SCL_Pin    = PORTC.3
Symbol SDA_Pin    = PORTC.4 ;Alias voor de SDA_Pin (Data) lijn

Symbol Control %01000010 

Dim Received As Byte                ; Variabelen 
Dim VAR1 As Byte                     ' We'll only read 8-bits 
Dim Address As Byte                  ' 8-bit address required 

Cls
DelayMS 500
Clear
  

  
Print At 1,1, "MCP23008 Test" 
Print At 2,1, "02-01-2014" 
Address = 40 
I2COut SDA_Pin, SCL_Pin, Control , Address , [%00010010] 
Address = 0 
I2COut SDA_Pin, SCL_Pin, Control , Address , [%00000000]  
             
Loop: 

I2COut SDA_Pin,SCL_Pin,$00,$40,[%00000000] 
I2COut SDA_Pin,SCL_Pin,$0A,$40,[%00010010] 
I2COut SDA_Pin,SCL_Pin,$09,$40,[%11110000]  
  DelayMS 500  
I2COut SDA_Pin,SCL_Pin,$40,[$00,%00000000] 
I2COut SDA_Pin,SCL_Pin,$40,[$0A,%00010010] 
I2COut SDA_Pin,SCL_Pin,$40,[$09,%11110000]  
   DelayMS 500  
GoTo Loop ' Loop forever



ps. deze kan toch gewoon op 5V? of moet die op 3.3v?
Had gelezen dat hij op beide kon meen ik.
 
[Bericht gewijzigd door pascalbianca op Zaterdag 18 Oktober 2014 20:19:10]


http://pascalbianca.blogspot.nl/
Henk (NL)
Lid
Berichten: 257
Gepost op zaterdag 18 Oktober 2014 20:34:50 QuoteWijzig

Hoop niet dat de Moderators mij waarschuwen ivm. dubbele postings, maar goed...
Voor de MCP23017

Code
I2COUT SDA,SCL,$40,[$00,%00000000] 'uitgangspoorten, bv.
I2COUT SDA,SCL,$40,[$01,%00000000]
I2COUT SDA,SCL,$40,[$0A,%00010010]
I2COUT SDA,SCL,$40,[$12,%11110000] '4-bit aan&uit,bv.
I2COUT SDA,SCL,$40,[$13,%11110000]



 
[Bericht gewijzigd door Henk (NL) op Zaterdag 18 Oktober 2014 20:35:42]

pascalbianca
Lid
Berichten: 1364
Gepost op dinsdag 21 Oktober 2014 07:21:39 QuoteWijzig

Thx Henk, werkt nu
En aan de hand van de werkende code heb ik deze nu ook werkend kunnen omzetten naar HBUSOUT, zodat het nu zo is geworden.


Code
HBusOut MCP23017_ADDR,[$00,%00000000] 'uitgangspoorten, bv. 
HBusOut MCP23017_ADDR,[$01,%00000000] 
HBusOut MCP23017_ADDR,[$0A,%00010010] 
HBusOut MCP23017_ADDR,[$12,%00000000] '8-bit aan&uit,bv. $12 GPIO-A 
HBusOut MCP23017_ADDR,[$13,%00000000] '8-bit aan&uit,bv. $13 GPIO-B


 
[Bericht gewijzigd door pascalbianca op Woensdag 22 Oktober 2014 13:19:04]


http://pascalbianca.blogspot.nl/
Henk (NL)
Lid
Berichten: 257
Gepost op vrijdag 24 Oktober 2014 19:44:00 QuoteWijzig

Het grappige is dat ik juist ook HBusOut gebruik en juist 'speciaal' voor jou omgezet had naar I2COUT!

pascalbianca
Lid
Berichten: 1364
Gepost op zaterdag 25 Oktober 2014 07:58:04 QuoteWijzig

Inderdaad grappig ja, maar dat had ik wel aangegeven dat ik HBusout gebruik.
 
[Bericht gewijzigd door pascalbianca op Zaterdag 25 Oktober 2014 20:06:59]


http://pascalbianca.blogspot.nl/

Active Topics

» Audi
» De tuin.
» Makita BMR102
» Programmeren van twee ...
» 16F628A vervangen door...
» software zekeringskast
» Klok thermostaat
» Show je mini projecten
» Subaru Outback 2016
» aansluiten ir reflecto...

» Meer actieve topics

Advertenties

ElektronicaStynus

© 2004-2017 SchemaTheek
Laadtijd: 0.08571 sec.