Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

i2c slave

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    i2c slave

    üritan mina siin i2c slave-t oma pic-iga mängida, masterit juba oskan (kuna see kood oli olemas)

    kood on selline, kuid sinna com porti saadetakse suva numbrid
    et kus ma siin puuse panen?
    PIC on 16F627 @ 4MHz
    SDA on RB0/INT
    SCL on RB4

    Kood:
    ;; SL - Slave
    ;;Interupt
            org    0x04                ;This is where PC points on an interrupt
            movwf            TEMP              ;Store the value of w temporarily
            ; check start bit, SDA gets low & SDL is high
            btfss   SL_I2C_PORT, SL_SCL
            goto    iend                ; SDL is low, false interupt
            ; start bit detected
            clrf    InputByte
            movlw   0x08
            movwf   _N                  ; set index to 8
    SCL_Low    btfsc   SL_I2C_PORT, SL_SCL ; wait until SCL gets low
            goto    SCL_Low
    SCL_Hi  btfss   SL_I2C_PORT, SL_SCL
            goto    SCL_Hi
            ; data ready
            btfss   SL_I2C_PORT, SL_SDA
            bcf     STATUS, C
            btfsc   SL_I2C_PORT, SL_SDA
            bsf     STATUS, C
            rlf     InputByte, F  ; i_byte = i_byte << 1 | 0
    
            decfsz  _N, F       ; decrement index
            goto    SCL_Low
    
            movf    InputByte, w
            call    XMIT_RS232
    iend
            bcf     INTCON, 1       ; clear interupt
            movf    TEMP,w          ;Restore w to the value before the interrupt
            retfie                  ;Come out of the interrupt routine
    maki sissel&#252;litamisel tuleb siis selline l&#228;bu
    Kood:
    000000f0: ff 44 ff ff f8 ff ff a3   e1 fd ff f8 3f ff fe 00 
    00000100: ff ff f3 ff ff ff ff ff   22 ff ff cf ff ff ff fe 
    00000110: ff ff e0 7f ff ff ff ff   ff 7f ff ff ff ff ff ff 
    00000120: ff ff ff ff ff ff ff ff   ff ff ff ff ff ff ff ff 
    00000130: ff ff ff ff ff ff ff ff   ff ff ff ff ff ff ff ff 
    00000140: ff ff ff ff ff ff ff ff   ff ff ff

    #2
    Re: i2c slave

    Kes too master on kui tohib k&#252;sida?

    arvutiga suheldakse ikka USARTi kaudu e RS232.

    Comment


      #3
      Vs: i2c slave

      master on motorola MC68HC05B16 kivi, kes muidu suthleb TDA7318-ga.

      pic sai neile vahele pandud

      projektist rohkem:
      http://www.tevalo.ee/foorum/showthre...217#post228214

      antud proge jupike peaks siis i2c siinilt tulevab baidid arvutisse saatma.
      arvutise info saatmine kasutades usart-i t&#246;&#246;tab igati korrektselt.
      kogu kood:

      Comment


        #4
        Re: Vs: i2c slave

        Kuna ma ASM'i ei r&#228;&#228;gi, siis kas ma saan &#245;ieti aru, et sa bitbangid seda infot lihtsalt omale kokku, e ootad &#228;ra mingeid pulsse ja konverdid need arvutile loetavaks jah?
        Sa ikka selle I2C/TWI protokolliga tutvunud oled jah? saadad p&#228;&#228;le iga saadud baiti v&#228;lja ack pulsi jne eks? Loed aadresse &#245;iges j&#228;rjekorras ja kuulad &#245;igeid kanaleid &#245;igel ajal jne.

        Ise tegin just algust selle TWI'ga AVR'i peal ja seal k&#252;ll ma erilisi raskusi ei kohanud. Peaasi, et sul TWI/I2C sagedused klapiksid (selle soovitan v&#228;lja uurida ossi v&#245;i millega iganes) ja edasi on juba suht lapse m&#228;ng sealt need baidid k&#228;tte saada.


        EDIT: soovitan lugeda ATMEGA88 datasheeti. sellel on minu meelest k&#245;ige parem 2 Wire serial interface kirjeldus &#252;ldse koos koodin&#228;idisega nii C's Kui ASM'is. TWI = 2 Wire serial interface = I2C (viimane on microchipi poolt copiraidiga kindlustatud ja seega ATMEL v&#228;ldib seda s&#245;na)
        Microchip Technology is a leading provider of microcontroller, mixed-signal, analog and Flash-IP solutions that also offers outstanding technical support.
        viimati muutis kasutaja bloody-orc; 08 m 2007, 21:24.

        Comment


          #5
          Vs: i2c slave

          Kuna ma ASM'i ei r&#228;&#228;gi, siis kas ma saan &#245;ieti aru, et sa bitbangid seda infot lihtsalt omale kokku, e ootad &#228;ra mingeid pulsse ja konverdid need arvutile loetavaks jah?
          ma saan ka sama moodi aru

          Nagu ikka avastatakse viga peale seda kui teiste k&#228;est n&#245;u on k&#252;situd.
          Viga oli selles, et SCL juhe polnud pic-iga &#252;henduses - jumper oli lahti &#252;hendatud ning siis saadetigi arvutisse &#245;hku.
          Eks see ole kui &#245;htuti asjaga tegeleda.

          Selle protokolliga ikka tutvunud olen.

          ACK-i saatmist pole veel teinud, igatahes &#245;ige aadressi bait j&#245;udis n&#252;&#252;d ilusti arvutisse. Eks ma homme katsetan edasi.
          viimati muutis kasutaja andresv; 08 m 2007, 21:35.

          Comment


            #6
            Re: Vs: i2c slave

            nagu sa sellest datasheedist n&#228;ed, mis ma soovitasin &#252;leval, siis seda ACK'd peab saatma, et I2C &#252;le&#252;ldse t&#246;&#246;taks kasv&#245;i &#252;he baidini. Kogu jama l&#228;heb muidu lolliks &#228;ra ja siis pole sellest mingit kasu
            See ongi selle bit bangimise ja ise kirjutamise juures see k&#245;ige hullem osa, et sul tuleb mingeid lolle pulsse saata ja meeles pidada... sellep&#228;rast tasubgi alati valida kivi, millel on ka hardware support olemas sellele protokollile. siis on lihtsalt registritesse kirjutamine ja nende olekute kontrollimine, mitte midagi keerulist sellega saaks isegi v&#245;ibolla ASM'is hakkama

            Comment


              #7
              Vs: i2c slave

              Bit-banging on samuti võimalus ja meeles peab prose ise Kui sa ainult kuulad vestlust pealt, ei tohi mingeid ACK-e ega NACK-e saata, ajad vestluse segi. Vastab ainult "päris" slave. Kui aga esined ise slavena, on muidugi teine asi.
              - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
              - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

              Comment


                #8
                Vs: Re: Vs: i2c slave

                Esmalt postitatud bloody-orc poolt
                TWI = 2 Wire serial interface = I2C (viimane on microchipi poolt copiraidiga kindlustatud ja seega ATMEL väldib seda sõna)
                http://www.atmel.com/dyn/resources/p...ts/doc2545.pdf
                OT: nimetust I2C kasutab siiski Philips (kui protokolli leiutaja).

                Comment

                Working...
                X