Thông báo

Collapse
No announcement yet.

PWM with ATMEGA8l

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

  • PWM with ATMEGA8l

    Có bác nào biết về chế độ PWM trong avr (mega8l) không?
    Mình đang cần điều khiển độ sáng tối của đèn LED. CỤ thể là led sáng từ từ.
    Nếu có code C với CODEVISION thi càng tốt. THANKS

  • #2
    Nguyên văn bởi kkkk
    không có cao thủ nào trả lời à. Chán thế.
    chủ nhật mà, mọi người fải ngủ tí chứ
    Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

    Comment


    • #3
      Có cái này...viết lâu rồi bằng C code (WinAVR GCC) cũng ko khác codevision lắm (làm biếng viết lại bằng codevision).
      Biến đồi ADC0 đưa sang điều xung 8bit phase correct , tần số 1khz:
      chú ý: cần thiết mạch ngõ vào cho ADC phù hợp hoặc chia lại giá trị ADC sau khi biến đổi

      #include <avr\io.h>
      #include <avr\iom8.h>
      #include <avr\interrupt.h>
      #include <avr\sleep.h>

      void main(void)
      {
      sei();
      port_int();
      pwm_timer1();
      while(1)
      {
      adc_convert();
      }
      }

      void port_int(void)
      {
      DDRC=0x00;
      PORTC=0x00;
      }

      void pwm_timer1(void)
      {
      TCCR1A|=(1<<COM1A1)|(1<<COM1A0);//set on compare match
      //set to mode 8bit PWM phase and frequency correct 1Khz
      TCCR1A|=(0<<WGM11)|(0<<WGM10);
      TCCR1B|=(1<<WGM13)|(0<<WGM12);
      ICR1=0x5e;
      //set prescaler=64 , 8Mhz/64
      TCCR1B|=(0<<CS12)|(1<<CS11)|(1<<CS10);
      }

      void adc_convert(void)
      {
      unsigned char ch=0;
      ADMUX|=(1<<REFS0)|(1<<ADLAR)|ch;
      ADCSRA|=(1<<ADEN)|(1<<ADIE)|(1<<ADPS0);
      //start convertion
      sleep_enable();
      set_sleep_mode(SLEEP_MODE_ADC);
      ADCSRA|=1<<ADSC; //begin convert
      while(!(ADCSRA&(1<<ADIF)))
      {}
      }

      /*ngat ADC finish*/
      ISR(ADC_vect)
      {
      sleep_disable();
      OCR1AL=ADCH;
      }
      Last edited by apple; 19-10-2008, 21:32.
      Mấy ai định nghĩa được tình yêu.
      Có gì đâu một buổi chiều.
      Kề dao lên cổ yêu hay chết .
      Gật đầu cái rụp thế là yêu.

      --------
      Apple

      Comment


      • #4
        PWM là cái căn bản của AVR mà bạn,... Bạn đọc kỹ Datasheet, mà sơ qua củng được. rồi dùng ngày công cụ tự tạo code của CodeVision, là mọi việc được giải quyết gần hết rồi,...
        VD: PWM sử dụng TIMER 2 chỉ cần khai báo:

        Code:
        // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In 
        // State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T 
        PORTB=0x00;
        DDRB=0x08;   // PORTB.3 là chân OC2
        
        // Timer/Counter 2 initialization
        // Clock source: System Clock
        // Clock value: 15.625 kHz
        // Mode: Fast PWM top=FFh
        // OC2 output: Non-Inverted PWM
        ASSR=0x00;
        TCCR2=0x6E;
        TCNT2=0x00;
        OCR2=0x00;
        đấu Led vào PORTB.3, cả điện trở hạn dòng nữa nhé
        Sau đó để thay đổi giá trị Duty_cycle thì bạn đổi giá trị OCR2 là được... bạn thử đi sẽ hiểu
        *** Thành viên không biết gì về điện ***

        Comment


        • #5
          heh
          cảm ơn các bác nhiều nhé
          cuối cùng thì đã xong
          em mới bắt đầu với avr đã làm nhiều với 8051. giớ thấy lại cũng chả có j. các bác nhỉ. em nghĩ chắc chắn với 8051 cũng làm được..và với timer 1 cũng được.

          Comment


          • #6
            Nguyên văn bởi kkkk Xem bài viết
            heh
            cảm ơn các bác nhiều nhé
            cuối cùng thì đã xong
            em mới bắt đầu với avr đã làm nhiều với 8051. giớ thấy lại cũng chả có j. các bác nhỉ. em nghĩ chắc chắn với 8051 cũng làm được..và với timer 1 cũng được.
            Hơi khác nhau tí bạn ạ, 8051 có nhiều loại, một số loại cao cấp như của philip có hỗ trợ PWM từ phần cứng, nhưng một số loại của ATMEL như dòng 89S5x... không có PWM từ phần cứng, khi đó PWM phải sử dụng ngắt TIMER, nhưng có ưu điểm là bạn thích xuất ra chân nào củng OK.,
            *** Thành viên không biết gì về điện ***

            Comment


            • #7
              Mình nghĩ AVR cũng có thể xuất PWM ở bất cứ chân nào được đấy chứ. mega8 có ngắt Compare match output và cờ OCFx (output compare flag) có thể làm được việc đó
              Mấy ai định nghĩa được tình yêu.
              Có gì đâu một buổi chiều.
              Kề dao lên cổ yêu hay chết .
              Gật đầu cái rụp thế là yêu.

              --------
              Apple

              Comment


              • #8
                Nguyên văn bởi apple Xem bài viết
                Mình nghĩ AVR cũng có thể xuất PWM ở bất cứ chân nào được đấy chứ. mega8 có ngắt Compare match output và cờ OCFx (output compare flag) có thể làm được việc đó
                hehe, AVR nó làm được tất cả những cái 89S5x làm được, và nhiều cái 89S5x không làm được, Bác phát biểu thế thì em đến chịu !
                *** Thành viên không biết gì về điện ***

                Comment


                • #9
                  dòng 89S5x... không có PWM từ phần cứng, khi đó PWM phải sử dụng ngắt TIMER, nhưng có ưu điểm là bạn thích xuất ra chân nào củng OK.
                  Vậy bác nói từ ưu điểm ở đây là ưu điểm so với cái gì thế nhỉ, ưu điểm 89 so với AVR chăng...
                  Mấy ai định nghĩa được tình yêu.
                  Có gì đâu một buổi chiều.
                  Kề dao lên cổ yêu hay chết .
                  Gật đầu cái rụp thế là yêu.

                  --------
                  Apple

                  Comment


                  • #10
                    Nguyên văn bởi apple Xem bài viết
                    Vậy bác nói từ ưu điểm ở đây là ưu điểm so với cái gì thế nhỉ, ưu điểm 89 so với AVR chăng...
                    ưu điểm là so với AVR ở chế độ bình thường nghĩa là Fast PWM bác ạ,...
                    Em không biết gì về điện, nên có gì sai sót mong bác chỉ bảo??!
                    *** Thành viên không biết gì về điện ***

                    Comment


                    • #11
                      Nguyên văn bởi AVR_VN Xem bài viết
                      ưu điểm là so với AVR ở chế độ bình thường nghĩa là Fast PWM bác ạ,...
                      Em không biết gì về điện, nên có gì sai sót mong bác chỉ bảo??!
                      À à, thì ra ý bác là thế..., thế mà đọc bài của bác e lại nghĩ rằng từ ưu điểm của bác mang cái ý nghĩa AVR ko có khả năng làm được cái việc đưa PWM ra bất cứ chân nào ấy chứ.

                      Ý của bác là ở chế độ Fast thì AVR ko làm được việc này sao...Bác giải thích cho e hiểu phát.
                      Last edited by apple; 24-10-2008, 15:36.
                      Mấy ai định nghĩa được tình yêu.
                      Có gì đâu một buổi chiều.
                      Kề dao lên cổ yêu hay chết .
                      Gật đầu cái rụp thế là yêu.

                      --------
                      Apple

                      Comment


                      • #12
                        em nghĩ là với 8051 bt, chẳng hạn 89sxx cũng co thể chứ thay đổi tần số từ từ cũng tương tự như PWM mà. KHông biết là có đúng không mong chỉ bảo thêm.

                        Comment


                        • #13
                          @ bác quả táo: không biết bác hiểu như thế nào là PWM hỗ trợ sẵn từ phần cứng, thế nào là sử dụng phần mềm...
                          Đại loại em hiểu là : PWM từ phần cứng nghĩa là đúng như e đã bảo, chỉ cần nạp thông số ( duty_cycle, Frequency, out_put ... ) là nó tự chạy.
                          không như 8051, khi PWM người ta thường dùng ngắt Timer để thay đổi chân ra tạo thành cái như là PWM
                          Em nghĩ việc dùng ngắt để thay đổi lối ra là có can thiệp bằng thủ thuật,... và ngắt nào củng thế,...
                          Đơn giản thế thôi ... em củng không có rành điện đóm lắm, e không được học điện chính quy nên cái gì hiểu củng đơn giản vậy đấy !!! hehe, có gì lại cần các bác chỉ bảo
                          *** Thành viên không biết gì về điện ***

                          Comment


                          • #14
                            To AVR_VN: Nói thiệt nghe, tôi ko hiểu được thâm ý của bác (ưu điểm là so với AVR ở chế độ bình thường nghĩa là Fast PWM bác ạ)

                            Fast hay ko Fast thì sao, ưu điểm nhược điểm chỗ nào,đã nói ưu điểm là 89 phải tốt hơn AVR hoặc 89 làm được mà AVR ko làm được, bác nói rõ ý của bác ra coi nào.

                            Bác nói "89 có ưu điểm là có thể PWM ở bất cứ chân nào", vậy là sao , chả lẽ đó là ưu điểm của 89 so với AVR sao trong khi AVR có thể làm được mọi việc mà 89 có thể, vậy ưu điểm ở đây là cái gì vậy.

                            Còn chuyện thế nào là PWM mềm, PWM cứng , cái đó mà ko hiểu thì chắc tôi ko giám hỏi bác về 2 chữ ƯU ĐIỂM của bác rồi, đúng ko bác.

                            Tôi ko quan tâm đến việc bác có học điện hay ko học điện, đó ko phải là vấn đề đang bàn.
                            Câu trả lời của bác ko đi thẳng vào cái tôi cần hỏi. Mong bác đọc kỹ câu hỏi của tôi. Ko đi lòng vòng
                            Mấy ai định nghĩa được tình yêu.
                            Có gì đâu một buổi chiều.
                            Kề dao lên cổ yêu hay chết .
                            Gật đầu cái rụp thế là yêu.

                            --------
                            Apple

                            Comment


                            • #15
                              ai co bai quet led don nao ko gui cho e voi?
                              e dang hoc ve avr ma chua hieu nhieu ve no.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X