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 

Hardwerski I2C 16F877

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Jun 15, 2007 1:25 am    Naslov sporočila: icon_angry Hardwerski I2C 16F877 Odgovori s citatom

Delam eno aplikacijo kjer bo v rabi nekaj I2C čipovja. Uporabil bom 16F877 katerih pač imam še nekaj na zalogi. Z I2C vodilom sem sicer kar dosti delal a nikoli nisem uporabljal vgrajene periferije. 16F877 omgoča I2C med drugim tudi kot master, zato sem stvar hotel uporabiti v svoji aplikaciji. Trenutno imam na vodilu dva čipa SAA1064 ter PCF8583. Harwersko I2C vodilo sem sicer oživel a zadeva dela zelo nestabilno. Po kaki minuti dveh - včasih tudi več mi "hodi v err - ni potrditve o prejemu. Ker sem najprej sumil težave pri branju z PCF-ja sem ga odstranil napisal preprost števec ter podatke le pošiljal na SAA. Tudi tukaj se je zgodilo enako. Ker imam displej povezan z žicami sem sumil povezave. Zato sem napisal lastno I2C rutino. Ta dela brez problema. Kaj delam narobe? V prilogi rutina za pošiljanje na SAA.

Koda:
#define FOSC .4000   ;oscilator 4000Khz
#define BAUD .100   ;hitrost 100khz

;inicializacija

   bcf STATUS,RP0
   movlw b'00101000'
   movwf SSPCON   ;vklop I2C pinov master mode
   bsf STATUS,RP0
   movlw b'10000000'
   movwf SSPSTAT      ;standardna hitrost
   movlw (FOSC/(4*BAUD))
   movwf SSPADD
   movlw b'00010111'   ;(C6=12mA,C5=6mA,C5=3mA,C4=test,C2=ON/OFF digit2+4,
   movwf SAA_CONFIG   ;C1=ON/OFF digit 1+3, C0= statično/dinamično 1-2 /1+3/2+4
   bcf STATUS,RP0


Pošiljanje na vodilo:

;--------------------------------------------
;procedura poslje po I2c vodilu SAA podatke
;iz registrov:
;SAA_CONFIG -konfiguracijske nastavitve
;ENICA-prikaz na 1. displeju
;DTICA-prikaz na 2. displeju
;STICA-prikaz na 3. displeju
;TTICA-prikaz na 4. displeju
;------------------------------------------
SAA_OSVEZI
   BANKSEL SSPCON2
   bsf SSPCON2,SEN      ;start bit
   call I2C_PAVZA
   movlw b'01110000'
   call I2C_SEND      ;posljem naslov
   BANKSEL SSPCON2
   btfsc SSPCON2,ACKSTAT
   goto SAA_OSVEZI
   movlw b'0'         ;zacetna lokacija
   call I2C_SEND
   BANKSEL SSPCON2
   btfsc SSPCON2,ACKSTAT
   goto I2C_ERR
   movf SAA_CONFIG,w
   call I2C_SEND      ;kontrolni biti SAA1064
   BANKSEL SSPCON2
   btfsc SSPCON2,ACKSTAT
   goto I2C_ERR
   movf ENICA,W      ;vpis na prvo mesto
   call I2C_SEND   
   BANKSEL SSPCON2
   btfsc SSPCON2,ACKSTAT
   goto I2C_ERR
   movf DTICA,W      ;vpis na drugo mesto
   call I2C_SEND   
   BANKSEL SSPCON2
   btfsc SSPCON2,ACKSTAT
   goto I2C_ERR
   movf STICA,W      ;vpis na tretje mesto
   call I2C_SEND   
   BANKSEL SSPCON2
   btfsc SSPCON2,ACKSTAT
   goto I2C_ERR
   movf TTICA,w   ;vpis na tretje mesto
   call I2C_SEND
   BANKSEL SSPCON2   
   btfsc SSPCON2,ACKSTAT
   goto I2C_ERR
   BANKSEL SSPCON2
   bsf SSPCON2,PEN   ;stop bit
   call I2C_PAVZA
   bcf STATUS,RP0
   return         ;proceduro koncam na banko0
   
I2C_SEND
   BANKSEL SSPBUF
   movwf SSPBUF
   call I2C_PAVZA
   return
   
I2C_PAVZA
   BANKSEL PIR1
   btfss PIR1,SSPIF
   goto $-1
   bcf PIR1,SSPIF
   return   

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Pet Jun 15, 2007 10:19 am    Naslov sporočila:   Odgovori s citatom

Jaz ti lahko pošljem samo rutino za AVR Wink

Nasvet (ugibanje):
Preveri hitrosti, kapacitivnosti in pull-up upore.
Ali preveri z analizatorjem, zakaj ne dobiš ACK pulza nazaj. Če je prevelika hitrost in kapacitivnosti, lahko da hardware išče ACK pulz še preden sploh pride po žici. .. nekje imaš robne pogoje.

LP

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Jun 15, 2007 10:35 am    Naslov sporočila:   Odgovori s citatom

Pullupi ter kapacitivnost ni kriva. Vse je ostalo isto pri moji klasični rutini. Uporabljeni isti pini. Zadeva deluje brez problema. Za zdaj bo ostalo kar tako. Ko bom imel več časa se bom lotil natančne analize. Ga pa vrjetno nekaj "lomim". Na sami microchipovi stani tudi nisem našel neke literature oz. primera rabe hardwerskega I2C v master modu. V končni fazi pa tudi klasične kode ni kaj dosti več. Tukaj vsaj točno vem kaj se dogaja.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
polh
Član
Član



Pridružen-a: Pet 08 Apr 2005 18:27
Prispevkov: 225
Aktiv.: 0.95
Kraj: Maribor-Ljubljana

PrispevekObjavljeno: Pet Jun 15, 2007 11:20 am    Naslov sporočila:   Odgovori s citatom

Ko sem sam poskušal obuditi hardwerski I2C sem bil popolnoma neuspešen. Sploh ni želel delati. Povezoval pa sem PIC16F876 in eprom 24LC512 od Mikročipa. Kasneje sem spisal svojo rutino, ki pa je delala. Mogoče bo enostavneje, če se lotiš svojih rutin.

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



Pridružen-a: Sre 01 Nov 2006 13:40
Prispevkov: 41
Aktiv.: 0.18
Kraj: Maribor

PrispevekObjavljeno: Ned Jun 17, 2007 11:57 pm    Naslov sporočila:   Odgovori s citatom

Silvo...

PIC je zelo čudna zadeva kar se tiče SPI in I2C-ja. Upoštevaj naslednje nasvete:
Ob vsaki vaji (iteraciji) resetiraj naslovnika (ker lahko ostane v kakem čudnem stanju).
Vedno ob vsaki iteraciji I2C-ja (ali SPI-ja) preberi SSPBUF register (drugače boš dobil register full error flag).

Kakšne so zastavice napak? Se postavi katera koli na 1?

Lp,
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pon Jun 18, 2007 12:07 am    Naslov sporočila:   Odgovori s citatom

ThePohorc je napisal/a:
Silvo...

PIC je zelo čudna zadeva kar se tiče SPI in I2C-ja. Upoštevaj naslednje nasvete:
Ob vsaki vaji (iteraciji) resetiraj naslovnika (ker lahko ostane v kakem čudnem stanju).
Vedno ob vsaki iteraciji I2C-ja (ali SPI-ja) preberi SSPBUF register (drugače boš dobil register full error flag).

Kakšne so zastavice napak? Se postavi katera koli na 1?

Lp,


Hvala za nasvete. Bom vse skupaj ob prvi priliki temeljito raziskal izvedel merjenje ter stvar opisal na forumu. Sedaj sem hardwerski I2C opustil ter napsial svoje rutine, ki mi delajo brez težav.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.46
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Čet Sep 27, 2007 9:17 am    Naslov sporočila:   Odgovori s citatom

Hoj Silvo.

Si kaj raziskoval v tej smeri. Potrebujem nekaj podobnega, pa ne vem a se lotim HW sli SW I2C-ja?
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 -> Microchip PIC Č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: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group