ik heb een pic16f877a en ik wil nu een pcf8574 aansturen.
maar ik weet niet hoe ik I2c kan gebruiken op de pic.
en ik heb al in de datasheet gekeken maar daar wordt ik niet wijzer van. En ik heb op google gekeken en daar kan ik ook geen goeie uitleg vinden. dus als iemand mij het uit wil leggen. dan vindt ik dat heel aardig.
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Maar daar zullen ze je waarschijnlijk (terecht) vertellen de datasheet nog eens door te lezen. Lees ook eens de I2C docs op de philips website.
Al die dingen heb ik al gedaan.
Maar wat ik nu nog wil weten is welke registers ik aan moet sturen, en in welke volgorde. want dat is het enige wat ik nog niet weet. en dat is het belangrijkste dat je nodig hebt om I2C te gebruiken op de pic.
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 17 september 2005 08:28:09 schreef huubsel:
Maar wat ik nu nog wil weten is welke registers ik aan moet sturen, en in welke volgorde.
Dat vindt je in de datasheet.
Voor een 18F PIC zou je de C18 compiler van Microchip kunnen installeren en dan eens in de I2C library snuffelen.
Door op de piclist een source te downloaden heb je in ieder geval een opzet. Aan de hand van de gedownloade code kun je vaak een hoop leren.
ik heb het nu helemaal gedaan zoals het op de website van microchip stond maar hij doet nog steeds niks.
dit is mijn code
#define BAUD D'100'
#define FOSC D'4000'
org 00h
__config 0x3f32
begin:
banksel 85h
clrf 85h
movlw B'00011000'
movwf 87h
banksel 06h
clrf 0x06
clrf 0x05
bsf 0x05, 0x00
start:
call I2CINI
banksel 91h
bsf 91h, 0x0
call I2Cwacht
movlw B'01000000'; Dit is het adres van de chip.
call I2Czend
call I2Cwacht
movlw 0xFF
call I2Czend
call I2Cwacht
banksel 91h
bsf 0x91, 0x02
call I2Cwacht
goto stoppen
stoppen:
goto $-1
;---------------------------------------------------------
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''
; I2C funcies
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''
;---------------------------------------------------------
I2CINI:
;zet mssp module in master mode
movlw B'00101000'
movwf 0x14; sppcon
;zet slewrate control uit voor normale snelheid (100Khz)
banksel 94h
movlw b'10000000'
movwf 94h
;zet snelheid op 100Khz
movlw (FOSC / (4 * BAUD)) - 1; bereken snelheid
movwf 93h
return
I2Cwacht:
Banksel 0x0c
btfss 0x0c, 0x03
goto $-1
bcf 0x0c, 0x03
return
I2Czend:
banksel 13h
movwf 13h
return
end
kan iemand misschien het probleem vinden.