Thông báo

Collapse
No announcement yet.

dùng phần mền nào lập trình cho avr tốt nhất?

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

  • dùng phần mền nào lập trình cho avr tốt nhất?

    các bác cho em hỏi lập trình avr bằng c thì dùng phần mền nào ạ phần mền nào là tốt nhất

  • #2
    CodeVisionAVR
    thiết kế phù hợp nhất cho cấu trúc họ Atmel AVR

    Comment


    • #3
      anh có phần mền đó hông cho em xin ++hướng dẩn luôn thì sướng quá

      Comment


      • #4
        Các phiên bản codevisionAVR mới gần đây có hiện tượng ko nhận chip trong mạch nạp các loại dù đã xxx mọi cách, có lẽ do nhà sx cố tình làm thế để ép người dùng mua bản quyền, vì thế hiện tại mình lập trình = codevision nhưng nạp code = avrstudio4 là ngon lành, vả lại trong hệ thống thiết lập fusebit của codevision khi mình chọn chip là ATMEGA8 thì ko thấy bit SPIEN, cái bit này cực quan trọng, trong khi đó avrstudio thì có đủ fusebit, cao thủ nào biết vụ này xin giải thích giúp (mình dùng Codevision 2.5.6 để các bác không nói mình dùng bản cũ nên thiếu này nọ).
        Làm sao mà bạn dám nói là không làm được khi bạn chưa từng thử một lần nào.
        Ngay cả khi bạn đã làm 1 lần và thất bại bạn cũng không có quyền nói là không làm được vì bạn chưa làm lần thứ 2,3...

        Comment


        • #5
          mình làm cũng lâu rồi...mình dùng bản 2.3.4 dùng bản cr.ack thôi...có thể search trên mạng được...
          còn mạch nạp thì mình k biết....mình mua chíp bảo quán họ nạp luôn.....
          còn tài liệu thì tự học trên hocavr.com

          Comment


          • #6
            -Mới thì nên học codevison, biết chút đỉ thì chuyển sang AVRstudio với trình biện dịch WinAVR chính hãng luôn,các VD trong hocavr.com đều viết bằng thằng này, nên chiụ khó đọc sẽ rất dễ hiểu...
            -Lúc trước mình cũng sài codevision, nhưng làm nhiều cái phức tạp codevison trở thành khó hiểu và khó sửa...
            -Codevison dọn sẳng nhiều thứ, nhưng rồi đến một lúc tự nấu tự chế biến thì rất khó khăn..
            -còn sài thằng nào là tùy mục đính và khả năng..

            Comment


            • #7
              mình toàn dùng avrstudio. thư viện cho nó thì rất nhiều trên mạng. mà mình thấy nhiều khai báo trong codevision rối và phức tạp. nhiều cái không cần thiết cũng khai báo ra làm mình mò mỗi khi gặp lỗi rất khó chịu.

              Comment


              • #8
                Nguyên văn bởi nguyentuanqs Xem bài viết
                mình toàn dùng avrstudio. thư viện cho nó thì rất nhiều trên mạng. mà mình thấy nhiều khai báo trong codevision rối và phức tạp. nhiều cái không cần thiết cũng khai báo ra làm mình mò mỗi khi gặp lỗi rất khó chịu.
                mình lâu không còn dùng CV nữa ... nhưng cái này chắc do dùng phần " tự tạo mã " wizard nó mới vậy ... chứ tự viết thì chẳng có gì là thừa cả !
                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


                • #9
                  Nguyên văn bởi queduong Xem bài viết
                  mình lâu không còn dùng CV nữa ... nhưng cái này chắc do dùng phần " tự tạo mã " wizard nó mới vậy ... chứ tự viết thì chẳng có gì là thừa cả !
                  chuẩn rồi đấy ạ.

                  Comment


                  • #10
                    A [MENTION=45]queduong[/MENTION] ơi, xem hộ em cái này với ạ. em mò mà chưa nghĩ ra lỗi ở đâu . http://www.dientuvietnam.net/forums/...nh-voi-165156/
                    Nguyên văn bởi nguyentuanqs Xem bài viết
                    mình đang làm đề tài có liên quan đến tách dữ liệu ( giao thức NMEA trong thông tin vệ tinh sử dụng SIM các bạn nhé). đoạn mã có dạng : $GPGGA,002153.000,3342.6618,N,11751.3858,W,1,10,1. 2,27.0,M,34.2,M,,000 *5E. được truyền liên tiếp qua uart vào vi điều khiển. các đoạn mã có nội dung tương tự cũng được truyền tiếp theo. ví dụ thông tin truyền vào có thể có dạng :....$GPGGA,002153.000,3342.6618,N,11751.3858,W,1, 10,1.2,27.0,M,34.2,M,,000 *5E$GPGGA,5467.000,4578.6618,N,11751.5426,W,2,10,2 .2,12.0,M,376.2,M,,040 *5E.... dạng như vậy. trong đó đoạn đầu có thể thay đổi tùy thuộc vào định dạng dữ liệu. như với đoạn code trên $GPGGA cho biết thông tin sau nó gồm có thời gian, kinh độ, vĩ độ, khoảng cách so với mực nước biển. giờ mình đang loay hoay với thuật toán tách dữ liệu ra. ví như trong dòng dữ liệu vào ta phải bắt được chuỗi có mào đầu là $GPGGA rồi sau đó lại tách ra các dữ liệu đã nói trên. ($GPGGA(mào đầu),002153.000(thời gian),3342.6618,N(vĩ độ),11751.3858,W(kinh độ),1,10,1.2,27.0,M,34.2,M,,000 *5E. dữ liệu tách ra cần cho lưu vào một biến riêng và được truyền đi vào máy tính như sau. pro nào chỉ giáo giúp mình nhé. mình có tham khảo đoạn code sau sử dụng trong 1 ngắt uart nhưng khi viết thì không thực hiện đươc. nếu ai biết sai chỗ nào thì chỉ mình luôn với nhé.
                    Code:
                    	ISR (SIG_USART1_RECV)
                    	{	
                    	data = UDR1;
                    	putChar_LCD(data);
                    	Uart0_Trans(data);
                    	Process_Data(data);
                    	}
                    // ham xu ly du lieu ngat	
                    	void Process_Data(char data)
                    		{
                    		stt = 0;
                    		switch(stt){
                    		case  1: if(data!='$') stt=0; break;
                    		case  2: if(data!='G') stt=0; break;
                    		case  3: if(data!='P') stt=0; break;
                    		case  4: if(data!='G') stt=0; break;
                    		case  5: if(data!='G') stt=0; break;
                    		case  6: if(data!='A') stt=0; break;
                    		case  7: if(data!=',') stt=0; break;
                    //--------tach phan thoi gian------------
                    		case  8: if(data<'0' || data>'9') stt=0; else time[0]=data; break;
                    		case  9: if(data<'0' || data>'9') stt=0; else time[1]=data; break;
                    		case 10: if(data<'0' || data>'9') stt=0; else time[2]=data; break;
                    		case 11: if(data<'0' || data>'9') stt=0; else time[3]=data; break;
                    		case 12: if(data<'0' || data>'9') stt=0; else time[4]=data; break;
                    		case 13: if(data<'0' || data>'9') stt=0; else time[5]=data; break;
                    		case 14: if(data!='.') stt=0; else time[6]=data; break;
                    		case 15: if(data<'0' || data>'9') stt=0; else time[7]=data; break;
                    		case 16: if(data<'0' || data>'9') stt=0; else time[8]=data; break;
                    		case 17: if(data<'0' || data>'9') stt=0; else time[9]=data; break;
                    		case 18: if(data!=',') stt=0; break;
                    //----------tach phan vi do-----------------
                    		case 19: if(data<'0' || data>'9') stt=0; else vido[0]=data; break;
                    		case 20: if(data<'0' || data>'9') stt=0; else vido[1]=data; break;
                    		case 21: if(data<'0' || data>'9') stt=0; else vido[2]=data; break;
                    		case 22: if(data<'0' || data>'9') stt=0; else vido[3]=data; break;
                    		case 23: if(data!='.') stt=0; else vido[4]=data; break;
                    		case 24: if(data<'0' || data>'9') stt=0; else vido[5]=data; break;
                    		case 25: if(data<'0' || data>'9') stt=0; else vido[6]=data; break;
                    		case 26: if(data<0 || data>9) stt=0; else vido[7]=data; break;
                    		case 27: if(data<0 || data>9) stt=0; else vido[8]=data; break;
                    		case 28: if(data!=',') stt=0; else vido[9]=data; break;
                    		case 29: if(data!='N' || data!='S') stt=0; else vido[10]=data; break;
                    		case 30: if(data!=',') stt=0; break;
                    //----------tach phan kinh do------------------		
                    		case 31: if(data<0 || data>9) stt=0; else kinhdo[0]=data; break;
                    		case 32: if(data<0 || data>9) stt=0; else kinhdo[1]=data; break;
                    		case 33: if(data<0 || data>9) stt=0; else kinhdo[2]=data; break;
                    		case 34: if(data<0 || data>9) stt=0; else kinhdo[3]=data; break;
                    		case 35: if(data<0 || data>9)stt=0; else kinhdo[4]=data; break;
                    		case 36: if(data!='.') stt=0; else kinhdo[5]=data; break;
                    		case 37: if(data<0 || data>9) stt=0; else kinhdo[6]=data; break;
                    		case 38: if(data<0 || data>9) stt=0; else kinhdo[7]=data; break;
                    		case 39: if(data<0 || data>9) stt=0; else kinhdo[8]=data; break;
                    		case 40: if(data<0 || data>9) stt=0; else kinhdo[9]=data; break;
                    		case 41: if(data!=',') stt=0; else kinhdo[10]=data; break;
                    		case 42: if(data!='E' || data!='W') stt=0; else kinhdo[12]=data; break;
                    		case 43: if(data!=',') stt=0; break;
                    		default : stt=0; break;
                    	}
                    		}
                    thank mọi người đã đọc!

                    Comment


                    • #11
                      mấy anh ơi codevision nó sinh mã asm làm sao bỏ đi mà không ành hưởng đến chương trình

                      Comment


                      • #12
                        #asm()
                        xong
                        Rễ của sự học tập thì đắng
                        Quả của sự học tập thì ngọt

                        Comment


                        • #13
                          mình dùng IAR , CodeVision , AVRstudio+ GCC , mikroC nhưng chẳng thấy cái gì khác biệt hơn thằng mikroC ... thế là mình toàn dùng mikroC ... nhưng nạp thì dùng STK500 sử dụng với AVR studio ( vì bản thân thằng AVR studio set cấu hình ( Fuse) dễ mà chuẩn ! ), những thằng khác loằng ngoằng, khó chịu ( có khi còn vớ vẩn nữa) !
                          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


                          • #14
                            Nguyên văn bởi nguyentuanqs Xem bài viết
                            A @queduong ơi, xem hộ em cái này với ạ. em mò mà chưa nghĩ ra lỗi ở đâu . http://www.dientuvietnam.net/forums/...nh-voi-165156/
                            theo mình bạn nên dùng 1 buffer ( mảng ) đủ chiều dài để lưu trữ bản tin ... rồi xử lý ... là cách đơn giản và dễ dàng nhất !

                            cách đọc cả bản tin ... thì kiểm tra " lúc nào bắt được kí tự " bắt đầu $" thì ( for i = .... đến ...max)... sau khi bản tin đã được lưu vào bộ đệm xong, thì lấy dữ liệu từ bộ đệm ra khai thác thôi ! Khai thác xong lại tiếp tục đọc lượt mới !
                            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


                            • #15
                              thank a. em cũng đã hoàn thiện. sửa một số lỗi nhỏ nữa là ok

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X