AVR Studio biên dịch không chạy được

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • Multi System
    Thành viên tích cực
    • Feb 2008
    • 671

    #1

    AVR Studio biên dịch không chạy được

    Trước giờ em lập trình quen trên CVAVR, các bác lập trình trên AVR Studio quen rồi xin giải thích giúp em trường hợp này với:
    Em lập trình đơn giản là IO Port trên AVRStudio 4.17, khi biên dịch không lỗi, debug chạy bình thường nhưng xuất file HEX và nàp vào chip nó không chạy. Code là như thế này
    PHP Code:
    #include <avr/io.h>
    #include <avr/iom16.h> // Gọi cái trên có lẽ cái này không cần thiết các bác nhỉ / :D
    void delay (unsigned int ms)
    {
      unsigned char i;
      while(ms--)
       {
         for(i=0;i<150;i++)
          {};
       }
    }
    
    int main (void)
    {
      PORTA = 0xFF; // High Logic
      DDRA  = 0xFF; // Output
      while(1)
       {
              PORTA = 0x00;
         delay(5000);
         PORTA = 0xFF;
         delay(5000);
       }
    } 
    
    Debug thấy PORTA nhấp nháy đều vậy mà nạp vào chip thì PORT luôn bằng 0xFF.
    Chip em cấu hình như sau:
    Device: atmega16
    Frequency: 16000000 Hz
    Optimization: -O2
    Cũng code đó mà bỏ vào CVavr và Compile thì chạy bình thường.
    không biết có phải do AVR Studio không nữa, các bác giải thích giúp em. Xin cám ơn !
  • Auto_engine
    Thành viên chính thức
    • Aug 2006
    • 87

    #2
    Nguyên văn bởi Multi System Xem bài viết
    Trước giờ em lập trình quen trên CVAVR, các bác lập trình trên AVR Studio quen rồi xin giải thích giúp em trường hợp này với:
    Em lập trình đơn giản là IO Port trên AVRStudio 4.17, khi biên dịch không lỗi, debug chạy bình thường nhưng xuất file HEX và nàp vào chip nó không chạy. Code là như thế này
    PHP Code:
    #include <avr/io.h>
    #include <avr/iom16.h> // Gọi cái trên có lẽ cái này không cần thiết các bác nhỉ / :D
    void delay (unsigned int ms)
    {
      unsigned char i;
      while(ms--)
       {
         for(i=0;i<150;i++)
          {};
       }
    }
    
    int main (void)
    {
      PORTA = 0xFF; // High Logic
      DDRA  = 0xFF; // Output
      while(1)
       {
              PORTA = 0x00;
         delay(5000);
         PORTA = 0xFF;
         delay(5000);
       }
    } 
    
    Debug thấy PORTA nhấp nháy đều vậy mà nạp vào chip thì PORT luôn bằng 0xFF.
    Chip em cấu hình như sau:
    Device: atmega16
    Frequency: 16000000 Hz
    Optimization: -O2
    Cũng code đó mà bỏ vào CVavr và Compile thì chạy bình thường.
    không biết có phải do AVR Studio không nữa, các bác giải thích giúp em. Xin cám ơn !
    Dùng #include <avr/io.h> rồi thì bỏ cái dòng thứ 2 đi, bạn đọc thử cái file "io.h" sẽ hiểu tại sao

    Thêm nữa, WinAVR nó có header hỗ trợ delay rồi, ko biết có chính xác lắm ko, nhưng mà nếu dùng thì cũng tạm được, nó nằm trong file "delay.h" thì phải với 2 câu lệnh là _delay_ms(ms) và _delay_us(us)

    Bạn đặt thạch anh cao thế 16Mhz, xem kĩ lại xem có đúng tần số thạch anh ko? Kiểm tra lại khi Make file (ấn F7 trong AVR Studio) xem có warning nào ko? Vì có một số trg hợp bạn chưa cấu hình AVR nó báo warning và sau đó khi chạy thì sẽ ko chạy theo đúng yêu cầu của bạn.

    Comment

    • Multi System
      Thành viên tích cực
      • Feb 2008
      • 671

      #3
      mạch của dùng TA 16M thì phải cấu hình đúng 16 M chứ. Nhấn F7 không lỗi không cảnh báo.

      Comment

      • VNarmy
        Moderator
        • Feb 2007
        • 1413

        #4
        Trong cái ngoặc vòng for thử chèn quả asm("NOP"); xem dư lào.
        Có khi nhanh quá ko nhìn kịp.
        AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
        Xem thêm tại Online Store ---> Click here
        Mob: 0982.083.106

        Comment

        • Multi System
          Thành viên tích cực
          • Feb 2008
          • 671

          #5
          Nguyên văn bởi VNarmy Xem bài viết
          Trong cái ngoặc vòng for thử chèn quả asm("NOP"); xem dư lào.
          Có khi nhanh quá ko nhìn kịp.
          Cám ơn anh !
          Em bụp phát nháy liền

          Comment

          • tieungu
            Thành viên chính thức
            • Nov 2008
            • 70

            #6
            mình đang sài win vista 64bit không biết nên cài version nào của avrstudio.cảm ơn

            Comment

            • tienhuypro
              Thành viên tích cực
              • Mar 2009
              • 382

              #7
              Cái này tui cũng bị. Lập trình GLCD tren CVAVR thì nạp vào IC chạy ầm ầm, còn trên AVRstudio thì đơ ra.
              Thêm cái nữa là trên CVAVR dao động ADC không cho chia 4, còn trên AVRStudio thì vô tư. Bác nào gặp rồi cho cao kiến với.

              Email:
              Tel: 0983.497.310

              Comment

              • microchip
                Thành viên tích cực
                • Sep 2007
                • 155

                #8
                sao không sài cái thư viện <util/delay.h> xài hàm _delay_ms(time) delay vô tư . Nói thiệt xài AVR studio không đã bằng eclipse + Winavr , mặt dù thằng AVRStudio nó cũng sử dụng winavr nhưng cái editor của nó chuối không chịu nỗi, giờ có bản 5 rồi thấy cũng khá hơn nhưng vẫn thua eclipse .

                Comment

                • Multi System
                  Thành viên tích cực
                  • Feb 2008
                  • 671

                  #9
                  Câu hỏi đấy cách đây 2 năm rồi. Cái hồi mới cưới cả họ AVR ấy mà, giờ thì quen mặt quá rồi!
                  Nói chung dùng AVRStudio cũng phê phết, nó làm cho óc mình linh hoạt thêm.

                  Comment

                  Về tác giả

                  Collapse

                  Multi System Tìm hiểu thêm về Multi System

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

                  Collapse

                  Đang tải...