Thông báo

Collapse
No announcement yet.

Xin giúp về lối giao tiếp atmega8 với 8 ic7495 nối tiếp nhau

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

  • Xin giúp về lối giao tiếp atmega8 với 8 ic7495 nối tiếp nhau

    Các bạn thân mến!
    Mình có một đề tài gửi dữ liệu từ atmega8 sang 8 ic mắc nối tiếp nhau! Sơ đồ bên dưới mình chỉ vẽ 4 ic thôi.
    Vấn đề khó khăn của mình là: Phần cứng đã đúng, code ok, mô phỏng chạy tốt. Nhưng khi làm mạch thực tế thì sau một thời gian thì bổng nhiên dữ liệu xuất ra 74595 bị sai, giống như bị treo ấy!
    Mình có mắc tụ 104 để chống nhiểu cho 74hc595.
    Không biết lỗi do atmega8 treo hay nhiễu ở 74hc595 hay trường hợp nào khác nữa?
    Các bạn giúp mình cách khắc phục nhé!
    Trân trọng cảm ơn!
    Attached Files

  • #2
    Có các tụ 104 chặn ở đầu chân cấp nguồn cho IC là đc rồi_Nếu có đệm thì ngon hơn_Nhưng cũng ko cần lắm vì ko truyền xa.Về lí thuyết thì sơ đồ có vẻ ổn.Dữ liệu xuất sai hay ko xuất dữ liệu mà cũng có dữ liệu ra??2 cái này hoàn toàn khác. Ko có lí do gì mà sau 1 thời gian mới sai_nếu sai thì đã sai từ đầu. CHo nên mời bạn coi lại code xem, nhỡ đâu lại nhầm lẫn tí tẹo đâu đó.


    Add: 97 Quán Nam - Lê Chân - Hải Phòng.
    Tel: 031 518648 Phone: 0904 283 505

    Comment


    • #3
      Thử đoạn code này xem sao. Atmega8 kết nối với 8 75HC595
      HTML Code:
      //=======================
      #include <avr/io.h>
      #include <util/delay.h>
      
      #define HC595PORT     PORTC
      #define HC595DDR    DDRC
      #define SHCP    PC0
      #define DS         PC1
      #define STCP    PC3
      void Send595(uint64_t data)
      {                     
          uint8_t i;
          uint64_t k;                                             
          k=0x8000000000000000;    //64bit
          for(i=0;i<64;i++)
          {   
              if((data & k)==k)
                  HC595PORT|=_BV(DS);
              else
                  HC595PORT&=~_BV(DS);
              HC595PORT&=~_BV(SHCP);
              HC595PORT|=_BV(SHCP);             
              
              HC595PORT|=_BV(STCP);
              HC595PORT&=~_BV(STCP);             
              k >>= 1;                            
          }            
      }
      
      int main(void)
      {
          uint64_t data;
          HC595DDR|=_BV(SHCP)|_BV(DS)|_BV(STCP);
          while(1)
          {
              for(data=1;data<0x8000000000000000;data=data*2)
              {
                  Send595(data);
                  _delay_ms(200);
              }    
              Send595(data);
              _delay_ms(200);
              data=1;    
          }
          return 0;    
      }
      //===============================

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X