Thông báo

Collapse
No announcement yet.

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

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

  • 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 !

  • #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


    • #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


      • #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


        • #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


          • #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


            • #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


              • #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


                • #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...
                  X