Thông báo

Collapse
No announcement yet.

AVR cho người mới bắt đầu

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • AVR trong robocon, các pác nghĩ sao

    Comment


    • Quá tốt chứ sao.Robocon thì hơi phí vì tốc độ xử lý của AVR vào dạng khủng đấy đối với mọi ứng dụng.Tôi nghĩ nó rất thích hợp cho lập trình hệ nhúng.

      Comment


      • Chào các bác em mới vào nghề em đang tìm hiểu về avr lập trình để điều khiển hiển thị cân trọng lượng lớn ,A nhân tiện cho em hỏi địa chỉ tin cậy nơi cung cấp các thiết bị liên quan đến avr nha trân thành cảm ơn

        Comment


        • Nguyên văn bởi ttyanhtu Xem bài viết
          AVR trong robocon, các pác nghĩ sao
          o vậy thì tốt quá đung món mình yêu thích rồi cho mình tham gia cùng tìm hiểu nha

          Comment


          • Ảnh hưởng của thạch anh ngoài đến hoạt động của AVR

            Sau một thời gian học AVR mh đã làm được một số ứng dụng đơn giản chủ chọn thạch anh 11.059 MHz vì khi sử dụng không thấy gặp lỗi khi nạp, khi chọn 4 MHz thì chip bị die liên tục. Các bác có thể giải thích thạch anh ngoài có giá trị khác nhau có ảnh hưởng gì đến hoạt động trong mạch???. Thanks!!!

            Comment


            • Nguyên văn bởi mice Xem bài viết
              Sau một thời gian học AVR mh đã làm được một số ứng dụng đơn giản chủ chọn thạch anh 11.059 MHz vì khi sử dụng không thấy gặp lỗi khi nạp, khi chọn 4 MHz thì chip bị die liên tục. Các bác có thể giải thích thạch anh ngoài có giá trị khác nhau có ảnh hưởng gì đến hoạt động trong mạch???. Thanks!!!
              Tôi dùng thạch anh ngoài 4Mhz nạp bao nhiêu con đâu có chết con nào đâu nhi.
              Thạch anh bên ngoài có ảnh hưởng đến tốc độ nạp ISP chứ không làm chết AVR đâu. Thạch anh có tần số lớn sẽ làm tăng tốc độ xử lý của AVR. Tốc độ này được giới hạn tùy theo loại AVR. Thông thường thạch anh hay sử dụng là từ 0-8MHz đối với AVR có đuôi L và 0-16MHz đối với AVR không có đuôi L hoặc V.
              n
              ĐT: 0986 492 489

              Tham khảo:

              Comment


              • Nguyên văn bởi mice Xem bài viết
                Sau một thời gian học AVR mh đã làm được một số ứng dụng đơn giản chủ chọn thạch anh 11.059 MHz vì khi sử dụng không thấy gặp lỗi khi nạp, khi chọn 4 MHz thì chip bị die liên tục. Các bác có thể giải thích thạch anh ngoài có giá trị khác nhau có ảnh hưởng gì đến hoạt động trong mạch???. Thanks!!!
                Ngày trước mình cũng hay ngộ nhận những hiện tượng kiểu như thế này( nào là nguồn điện, nào là loại chíp, nào là đến cả thằng bán hàng đểu cho mình...), cuối cùng rồi thì trình cao dần, vẫn mạch vậy, vẫn những linh kiện vậy, nạp con nào là được con đó, thạch anh nào cũng nạp ráo hết cả....

                Comment


                • phần link về tài liệu hay quá ta!hihi

                  Comment


                  • Nguyên văn bởi huanute
                    Chào các bạn,mình tên Huân.Có ai giúp mình việc này được không?
                    Mình đang lập trình cho ATMEGA16, khi sử dụng timer0 làm bộ đếm, trong codevision, khi muốn nhảy đến địa chỉa ngắt của timer 0 ta dùng cú pháp như sau:
                    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                    Trong đó: interrupt [TIM0_OVF] là khai báo để nhảy đến địa chỉ ngắt của timer0
                    Còn void timer0_ovf_isr(void) là hàm thực hiện khi có sự kiện ngắt xảy ra.
                    Vậy bây giờ mình không muốn khai báo là interrupt [TIM0_OVF] mà muốn khai báo bằng 1 tên khác, ví dụ: ngat [TIM0_OVF]
                    Mình có thể làm việc này được không? nếu có thể thì chỉnh sửa gì đó trog thư viện mega16.h cũng được.
                    Có bạn nào có thể giúp mình được không? mình xin cảm ơn.

                    mail của mình: nguyenhuanute@yahoo.co.uk
                    phần "interrupt [TIM0_OVF]" là cú pháp của chương trình và phải giữ đúng như vậy, cũng giống như bạn không thể thay "if" bằng "nếu"
                    More friends more foods

                    Comment


                    • Chả có ai nói về Ram ngoài của AVR nhỉ ?
                      Mấy bác có sao cho em hỏi về Ram ngoài của AVR với, em cũng biết làm chút ít về con amega128 rồi nhưng chỉ là học mò thôi. Bây giừ em đang làm bảng quang nên cần mở rộng Ram nhưng chưa bít nó làm việc thế nào, phần cứng và phần mềm bó vào nhau như thế nào
                      Ai làm rồi thì chia sẻ với ?.Có bài mẫu thì càng tốt

                      Comment


                      • Nguyên văn bởi khuyenbk
                        Chả có ai nói về Ram ngoài của AVR nhỉ ?
                        Mấy bác có sao cho em hỏi về Ram ngoài của AVR với, em cũng biết làm chút ít về con amega128 rồi nhưng chỉ là học mò thôi. Bây giừ em đang làm bảng quang nên cần mở rộng Ram nhưng chưa bít nó làm việc thế nào, phần cứng và phần mềm bó vào nhau như thế nào
                        Ai làm rồi thì chia sẻ với ?.Có bài mẫu thì càng tốt
                        Bạn tham khảo luồng này xem: http://dientuvietnam.net/forums/showthread.php?t=26491
                        Thân mến,
                        blackmoon.

                        Comment


                        • Nguyên văn bởi huanute
                          Trong codevison có dòng định nghĩa PORTD là: sfrb PORTD=0x12;
                          Như vậy PORTD có địa chỉa là 12h.
                          Bây giờ mình khai báo 1 con trỏ:
                          unsigned char *c_tro;
                          Mình muốn địa chỉ của con trỏ c_tro mang giá trị là 12h thì làm thế nào?
                          có phải là như vậy không: c_tro = &PORTD
                          Sau đó mình muốn PORTD chớp tắt thì mình làm thế này có được không?

                          //chương trình chớp tắt PORTD
                          *c_tro=~*ctro;
                          delay_ms(200);
                          *c_tro=~*ctro;
                          delay_ms(200);


                          Sau đó mình cũng muốn PORTC chớp tắt, mình có thể làm như thế này được không?
                          c_tro = c_tro + 3 //15h là địa chỉ của PORTC

                          //chương trình chớp tắt PORTC
                          *c_tro=~*ctro;
                          delay_ms(200);
                          *c_tro=~*ctro;
                          delay_ms(200);



                          Sau đó mình cũng muốn PORTB chớp tắt, mình có thể làm như thế này được không?
                          c_tro = c_tro + 3 //18h là địa chỉ của PORTB

                          //chương trình chớp tắt PORTB
                          *c_tro=~*ctro;
                          delay_ms(200);
                          *c_tro=~*ctro;
                          delay_ms(200);

                          Cho hỏi, trong diễn đàn này có ai biết mình làm thế này có đúng hay không, nếu làm không đúng thì có ai có cách khác giúp mình hay không, mình chủ yếu là muốn xuất giá trị của biến thông qua địa chỉ của biến đó. Cảm ơn nhiều
                          Tôi không hiểu bạn tại sao bạn cần dùng pointer cho các thanh ghi, khi mà việc truy xuất các thanh ghi đều có tên riêng trực tiếp, và thông thường đều là truy xuất riêng lẻ, không phải truy xuất mảng.
                          Bạn có thể thử thế này:
                          PORTD = ~PORTD;
                          PORTC = ~PORTC;
                          ...

                          Thân mến,
                          blackmoon.

                          Comment


                          • - Khi mình không muốn cho chương trình sử dụng vùng Ram nội từ 60H đến 100H (ATMEGA16) thì làm thế nào?
                            RAM của vi điều khiển được C compiler dùng cho nhiều mục đích: biến, stack, ... Người dùng trong đa số trường hợp đều ko can thiệp đến việc sử dụng RAM của compiler, vì mục đích tối ưu của nó. Với trường hợp của bạn, sử dụng CodeVisionAVR, có lẽ chỉ có cách khai báo biến đặt tại địa chỉ ô nhớ đó (giống như mong muốn của bạn ở phía dưới) thì C compiler sẽ ko dùng ô nhớ đó vào việc khác.


                            - Mình muốn khai báo 1 mảng gồm 160 phần tử mà địa chỉ đầu tiến là 60H và địa chỉ cuối cùng là 100H thì làm thế nào?
                            Trong Help của CodeVision có đề cập đến vấn đề này, sử dụng toán tử @:
                            unsigned char k[160] @0x60;

                            Các bạn sẽ học được rất nhiều điều từ Help của phần mềm, vậy hãy dành thời gian cho điều đó.
                            Thân mến,
                            blackmoon.

                            Comment


                            • Cảm ơn bác blackmoon !! .Em làm được rồi

                              Nhưng có vấn đề nữa xin hỏi bác tí :
                              Em dùng Codevision để làm , và dùng CodewiZard để thiết lập giống như người ta. Nhưng đến chỗ I2C chọn DS1307 để hiện thời gian thực ,thì ko hiểu sao em ko làm so để móc được cho ra cái DS1307.h để thực hiện. Trong khi đó em thấy họ làm ngon lành, em ko biết là do phiên bản Code hay là thế nào. Thiết lập cho I2C thì vẫn được , nhưng DS1307 thì ko thể
                              Em cũng đã thử các phiên bản Code khác nhưng đề ko được.
                              Ai biết rồi giúp em với.
                              Cảm ơn nhìu nhìu!!!!!

                              Comment


                              • Ah quên !!!
                                Lõi như vầy nè

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X