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 

PicBasic in SAA1064 I2C
Pojdi na stran 1, 2, 3  Naslednja
 
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
glavič
Član
Član



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pet Maj 21, 2004 1:36 pm    Naslov sporočila: icon_question PicBasic in SAA1064 I2C Odgovori s citatom

imam:
- pic16f84a > A0 kot data pin in A1 kot clock pin.
- saa1064 > v dinamičnem načinu delovanja.
- picbasic

trenutno bi rad izpisal na led-prikazovalnike karkoli, le da vidim da stvar deluje.
na sliki (priloga) je prikazano kako se pošilja ukaze preko I2C na SAA.


trenutni program:
Koda:
dat     var     PORTA.0     'I2C data pin
clk     var     PORTA.1     'I2C clock pin
B0      var     byte
naslov  var     byte
naslov = $70                'Hardverski naslov / Vcc na ADR pinu
DEFINE  I2C_SLOW 1          'Če je manj kozt 8MHz oscilator
define  OSC 4               'Oscilator 4MHz
pause 1000

loop:

    call start_bit

    i2cwrite dat,clk,naslov,[$70]           'določim slave address
    Low dat
    PAUSE 10

    i2cwrite dat,clk,naslov,$00,[$00]
    Low dat
    PAUSE 10

    i2cwrite dat,clk,naslov,$01,[%00111111] 'nastavi kontrolne bite
                                            'C0 > dinamični režim 4x7segment
                                            'C3 > vse diode so prižgane
    Low dat
    PAUSE 10

    i2cwrite dat,clk,naslov,$02,[$08]       'na led 1 izpiši osem
    Low dat
    PAUSE 10
   
    call stop_bit

    pause 1000
goto LOOP


start_bit:
    high dat
    high clk
    pause 2
    low dat
    pause 2
    LOW clk
    pause 1
return

stop_bit:
    low dat
    High clk
    pause 2
    high dat
    pause 2
return


end

meni so že start in stop bita čudna, ker PAUSE je izražen v ms, potreboval bi pa us.
kako bi pošiljal bjte do čipa?
koliko časa moram počakat za acknowledge bit? ali ga moram prebrati ali lahko počakam 1ms do 10ms in potem napišem sledeči bajt?



saa1064_read_write.gif
 Opis:
 Velikost datoteke:  17.91 KB
 Pogledana:  40 krat

saa1064_read_write.gif


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



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Pet Maj 21, 2004 1:49 pm    Naslov sporočila:   Odgovori s citatom

Mislim da obstaja ukaz PAUSEUS. Poglej v HELP.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
glavič
Član
Član



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pet Maj 21, 2004 2:10 pm    Naslov sporočila:   Odgovori s citatom

da, vidim. vendar je najmanjša vrednost za 4MHz kristal samo 24us.
potem sem uporabil ASM ... ENDASM in vmes dodal NOP ukaze.
ampak stvar še vedno ne deluje, ker nevem točno kaj moram poslati čipu in koliko usekund časa mora biti med ukazi?
ali je možno da I2CWRITE ukaz že vsebuje start in stop bit?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Djurodrljaca
Član
Član



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Pet Maj 21, 2004 2:29 pm    Naslov sporočila:   Odgovori s citatom

Tega ukaza nisem nikoli uporabljal, vendar mislim, da ta ukaz vsebuje start in stop bit. Poglej v HELP in če tam ne piše, da je potrebno pošiljati start in stop bit, potem ju verjetno ne smeš poslati.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Silvo
Moderator
Moderator



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

PrispevekObjavljeno: Pet Maj 21, 2004 2:52 pm    Naslov sporočila:   Odgovori s citatom

Torej bas&%&$ ne poznam. Lahko ti pa dam nekaj nasvetov za omenjen IC.
Opisal bom postopek za rutino pisano v assemberju. Na Filemanager boš našel kar nekaj mojih primerov v izvorni kodi.

Torej po START bitu pošlješ najprej naslov Prmer: Če je ADR pin na Vcc je naslov B'01110110' sledi "instrukcija" -kam bomo pisali 0x00 sledi vpis v kontrolni register, ki pove ic-ju način delovanja tok skozi displeje ... nato sledijo 4 paketi po 8 bitov podatka za prikaz ter stop bit. Priporočam ti, da pogledaš za SAA1064 datasheet.

Primer dela kode pisane v ASM

Koda:
   CALL START_B
   MOVLW NASLOV ;NASLOV ZA SAA1064
   CALL POSLJI
   MOVLW INSTRUKCIJA ;NA^IN DELOVANJA SAA1064
   CALL POSLJI
   MOVF TOK,W   ;TOK SKOZI DIODE
   CALL POSLJI
   MOVF DEL1,W   ;PRVI DEL
   CALL POSLJI
   MOVF DEL2,W   ;DRUGI DEL
   CALL POSLJI
   MOVF DEL3,W   ;TRETJI DEL
   CALL POSLJI
   MOVF DEL4,W   ;^ETRTI DEL
   CALL POSLJI
   CALL STOP_B
   RETURN


_________________
lp
Silvo
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.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Maj 21, 2004 2:56 pm    Naslov sporočila:   Odgovori s citatom

Še podrutine;
Kristal 4Mhz
Koda:


;INSTRUKCIJE ZA SAA1064
#DEFINE NASLOV B'01110110'   ;PIN ADR NA Vcc
#DEFINE INSTRUKCIJA B'00000000'   ;V REGISTER
#DEFINE KONTROLNI B'00010111'


;*********************************
;RUTINA I2C
;PROCEDURA POćLJE START BIT
;*********************************
START_B
   BSF PORTA,SDA
   BCF PORTA,SCL
   BSF STATUS,RP0
   BCF TRISA,SDA
   BCF TRISA,SCL
   BCF STATUS,RP0
   BSF PORTA,SCL
   NOP
   BCF PORTA,SDA
   NOP
   BCF PORTA,SCL
   RETURN


;***********************************
;RUTINA I2C
;PROCEDURA POćLJE STOP BIT
;***********************************
STOP_B
   BCF PORTA,SCL
   BCF PORTA,SDA
   BSF PORTA,SCL
   NOP
   BSF PORTA,SDA
   BSF STATUS,RP0
   BSF TRISA,SCL
   BSF TRISA,SDA
   BCF STATUS,RP0
   RETURN   

;*****************************************
;RUTINA I2C
;POćILJANJE PODATKA
;*****************************************
POSLJI
   MOVWF TMP
   MOVLW .8
   MOVWF PONOVI
NAZAJ
   BCF PORTA,SDA
   BTFSC TMP,7
   BSF PORTA,SDA
   BSF PORTA,SCL
   NOP
   BCF PORTA,SCL
   RLF TMP,F
   DECFSZ PONOVI,F
   GOTO NAZAJ
   BCF PORTA,SDA
   BSF PORTA,SCL
   NOP
   BCF PORTA,SCL
   RETURN


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



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pet Maj 21, 2004 3:27 pm    Naslov sporočila:   Odgovori s citatom

Silvo: vse tvoje primere kjer je SAA1064 imam že nekaj časa na disku..
Bom najprej probal napisati kodo v asmblerju in nato bom odšel na picbasic (možna napaka v vezju).
Silvo: v prilogi je asm program, ki sem ga sestavil iz tvojega primera, ki mi ne deluje.



Saa_pic.zip
 Opis:

Download
 Ime datoteke:  Saa_pic.zip
 Velikost datoteke:  824 Bytov
 Downloadano:  12 krat

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.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Maj 21, 2004 3:40 pm    Naslov sporočila:   Odgovori s citatom

Na hitro sem pogledal - ni videt, da bi bilo kaj narobe. Sumim tvoj hardware. Preveri, če slučajno nisi zamenjal SCL ter SDA ? Tukaj v službi nimam kakega hardwera, da bi lahko stvar poskusil. Bom probal program jutri popoldne doma (prej nimam časa).
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
glavič
Član
Član



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pet Maj 21, 2004 6:29 pm    Naslov sporočila:   Odgovori s citatom

Sem probal oba primera SCL in SDA povezav.
Bi bil zzlo hvaležen če bi probal ta program, da vidim ali je program ali hardware.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
glavič
Član
Član



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pet Maj 21, 2004 6:59 pm    Naslov sporočila:   Odgovori s citatom

Silvo: zakaj imaš pri svojem projektu ura_termo1.zip http://www.elektronik.si/phpATM/index.php?&direction=0&order=&directory=Nacrti%20tiskana%20vezja%20izdelki pin 1 (ADR) vezan na ground?

in zakaj imaš čisto različne start in stop bite kot si mi jih napisal zgoraj?
Citiram:
START_BIT
bsf SDA
bsf SCL
nop
nop
bcf SDA ;nizek SDA
nop
nop
nop
nop
nop
bcf SCL
return

STOP_BIT
bcf SDA
bsf SCL
nop
nop
nop
nop
bsf SDA
nop
nop
nop
nop
return
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.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Maj 21, 2004 7:09 pm    Naslov sporočila:   Odgovori s citatom

Rutina je definitvno pravilno napisana. Na izhodu SAA1064 se bi stanje moralo zamenjat.
-preveri pin 1 ADR primer programa naslavlja čip z adress pinom na +5V (bit 1 ter 2 prvega niza osmih bitov poslanega na I2C vodilo)

- vključen je dinamičen način osveževanja 1+3 2+4 bit0
- displeji so vključeni bit 1,2
- test izključen bit 3 (poskusi postavit ta bit na 1)
- tok skozi displej 3mA bit 4
(vse se nanaša na tretje poslani niz konstanta "tok" )
Mislim, da sem zasledil tudi, da uporabljaš statitčni način - 2 displeja. Torej bit 0 postavi na 0

_________________
lp
Silvo
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.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Maj 21, 2004 7:28 pm    Naslov sporočila:   Odgovori s citatom

Še odgovor na zgornji post.
Običanjo, ko se lotim pisati program le tega v veliko primerih napišem na novo od začetka do konca. Ravno zaradi tega na videz različni rutini. V tej drugi preklaplam pri start bitu še vhode na izhode. Pri rabi I2C vodila namreč obstaja pravilo "lepega vedenja" takrat ko je na njem več uporabnikov. Vsi pini takrat ko niso v rabi naj bi bili definirani kot vhodi. Na obeh pinih bi morali biti pull up upori, ki bi linijo držali na visokem potencialu. Uporabnik, ki bi želel uporabljati to vodilo bi moral najprej preveriti, če je le to prosto. In to tako, da preveri, če sta obe liniji visoki. Če je vodilo prosto pač pošlje start bit SCL potegne dol ter na ta način tudi ostalim "inteligentnim" uporabnikom na vodilu pove, da je vodilo zasedeno. Zaradi tega je razlika zgornje start stop procedure.

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



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pet Maj 21, 2004 7:36 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
Mislim, da sem zasledil tudi, da uporabljaš statitčni način - 2 displeja. Torej bit 0 postavi na 0
s tem se nebi strinjal, ker v datasheetu piše obratno. če je bit postavljen na 0 je static mode vključen.

C0 = 0 >> static mode, i.e. continuous display of digits 1 and 2
C0 = 1 >> dynamic mode, i.e. alternating display of digit 1 + 3 and 2 + 4


Citiram:
preveri pin 1 ADR primer programa naslavlja čip z adress pinom na +5V (bit 1 ter 2 prvega niza osmih bitov poslanega na I2C vodilo)
imam ADR pin na +Vcc, in imam tudi nastavljeno na $76 kar naj bi bilo za +Vcc. vendar stvar še vedno ne deluje.
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.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Maj 21, 2004 7:42 pm    Naslov sporočila:   Odgovori s citatom

Saj sem tudi tako napisal Wink pri statičnem je 0 pri dinamičnem pa 1 (BIT 0)
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
glavič
Član
Član



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pet Maj 21, 2004 7:50 pm    Naslov sporočila:   Odgovori s citatom

ne, uporabljam 4 displeye.
zgoraj sem v programu napisal samo 2 bajta za 1 in 2 displey.
to sem kmalu zatem popravil in dodal še zadnja dva bajta..
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
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group