Thông báo

Collapse
No announcement yet.

Vấn đề giao tiếp máy tính

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Vấn đề giao tiếp máy tính

    Mình xin hỏi vấn đề này :
    khi dùng i2c, có khai báo cho các chân còn lại của portc là output,nhưng khi đọc hay ghi i2c thì portc k thể sd đc,các port khác vẫn bình thường.
    Proteus hay mạch thật đều bị.
    Void main()
    {
    bit_clear(trisc,0);
    set_tris_b(255);
    while(1)
    {
    output_high(pin_c0);
    if(input(pin_b0)==1)
    {
    i2c_start();
    i2c_write(0xa0);
    i2c_write(0x00);
    i2c_write(0);
    i2c_write(1);
    i2c_stop();
    }
    }
    }

  • #2
    Co ai giup minh voi

    Comment


    • #3
      Dien dan gi vang tanh the troi. Come on

      Comment


      • #4
        Nguyên văn bởi TL_pro Xem bài viết
        Mình xin hỏi vấn đề này :
        khi dùng i2c, có khai báo cho các chân còn lại của portc là output,nhưng khi đọc hay ghi i2c thì portc k thể sd đc,các port khác vẫn bình thường.
        Proteus hay mạch thật đều bị.
        Void main()
        {
        bit_clear(trisc,0);
        set_tris_b(255);
        while(1)
        {
        output_high(pin_c0);
        if(input(pin_b0)==1)
        {
        i2c_start();
        i2c_write(0xa0);
        i2c_write(0x00);
        i2c_write(0);
        i2c_write(1);
        i2c_stop();
        }
        }
        }
        Vớ vỉn quá ...chân nào mà chẳng dùng được ! thậm chí chân I2C còn tái sử dụng làm việc khác được nữa ý chứ.

        Kết luận :
        - Proteus chỉ là phần mềm mô phỏng ( không có gì đảm bảo ) . Nhiều trường hợp trong Proteus chạy .. ra mạch thật không chạy ... mạch thật chạy ngon nhưng trong proteus không chạy nổi.
        - Mạch thật : IC có vấn đề , chết chân, chết cổng , trình dịch lỗi ( lởm khởm )
        chắc chắn trình dịch với bài đơn giản thế này thì không có chuyện đó .
        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

        Comment


        • #5
          hic. ko lỗi thì em nói làm gì.
          _Khi khai báo #use i2c(master,scl=...,sda=.... force_sw) hoặc #use i2c(master,scl=...,sda=...)
          bình thường khi ko đụng đến ghi hay xóa i2c thì các chân còn lại của portc output bình thường , nhưng khi có tác động đến i2c là các chân còn lại ko làm được nữa ( làm mạch thật cũng vậy) , việc ghi xóa dữ liệu tốt
          _Khi khai báo #use i2c(master,scl=...,sda=.... force_hw)
          các chân còn lại vẫn hoạt động bình thường , nhưng ghi xóa ko đc ,ec ec .

          Comment


          • #6
            đây là code máy tính gởi xuống 1 số 4 byte, pic nhận,tính toán,xong ghi vào 24c04. mô phỏng thì đúng,nhưng mạch thì số ghi vào 24c04 bị sai => đọc ra số sai.có ai biết chỗ nào giúp mình với

            #int_rda
            void ngatrs232()
            {
            c=getc();
            if(c=='[')
            {
            enable=1;
            i2c_start();
            i2c_write(0xa0);
            i2c_write(0x01);
            }
            else if(c==']')
            {
            i2c_stop();
            enable=0;
            chophep=1;
            delay_ms(1);

            }
            else
            {
            string[j]=c;
            if(enable=1)
            {
            if(j==3)
            {
            j=0;
            sonhanduoc=atol(string);
            boiso=sonhanduoc/60;
            soxungle=(sonhanduoc%60)/3*10;

            i2c_write(boiso);
            i2c_write(soxungle);

            printf("%u",boiso);
            printf(" ");
            printf("%u",soxungle);
            }
            else {j++;}
            }
            }
            }
            Last edited by TL_pro; 24-03-2013, 01:37.

            Comment


            • #7
              code thực tế lúc chạy lúc ko, ko có tính ổn định. vd đang chạy tốt , rút điện ,ko đông chạm , 1 lúc cấm vào có khi chạy khi không,nhưng ko chạy là nhiều. test max232, cổng com tốt (khi code đơn giản là việc nhận 1 kí tự , xuất lên màn hình ). mình nghĩ code chưa đúng chỗ gộp chuỗi số thành 1 số do mô phỏng đặt trong đk lí tưởng nên đúng.

              if(j==3)
              {
              j=0;
              sonhanduoc=atol(string);
              boiso=sonhanduoc/60;
              soxungle=(sonhanduoc%60)/3*10;

              i2c_write(boiso);
              i2c_write(soxungle);

              printf("%u",boiso);
              printf(" ");
              printf("%u",soxungle);
              }
              else {j++;}

              Comment


              • #8
                vậy rốt cuộc bạn định hỏi I2C hay là Max232 ???

                Comment


                • #9
                  hì . về phần giao tiếp máy tính là chính , phần i2c là phần nhỏ . tl cả 2 càng tốt .

                  Comment


                  • #10
                    bác đã xóa bít CH(clock hanlt) của ds1307 chưa, chưa xóa bít đó thì mạch thật có chạy vô trời

                    Comment


                    • #11
                      Hj.mình xài i2c với 24c04

                      Comment

                      Về tác giả

                      Collapse

                      TL_pro Tìm hiểu thêm về TL_pro

                      Bài viết mới nhất

                      Collapse

                      Đang tải...
                      X