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

                      • nguyendinhvan
                        Trả lời cho Vấn đề về tốc độ quay
                        bởi nguyendinhvan
                        Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
                        Hôm qua, 19:50
                      • Andrea14
                        Vấn đề về tốc độ quay
                        bởi Andrea14
                        Chào mọi người,

                        Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                        12-12-2025, 12:42
                      • bqviet
                        Trả lời cho Đấu tắt điện cho máy tính bảng
                        bởi bqviet
                        Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                        06-12-2025, 17:17
                      Đang tải...
                      X