element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum Why only selective pins have PWM ?
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Verified Answer
  • Replies 1 reply
  • Subscribers 390 subscribers
  • Views 1010 views
  • Users 0 members are here
  • pwm
  • atmega328p
Related

Why only selective pins have PWM ?

rishi2628
rishi2628 over 10 years ago

For atmega328p ,there are only 6 pins that have the function of pwm. PWM is basically oscillating the pin high to low where the width of the high pulse decides the value of the signal. This can also be done manually by keeping the pin high for few microseconds and then low for some more microseconds. I tried controlling a pwm servo from a non pwm pin using this logic and it worked. So now coming to the question, if high and low is what is there to pwm then why is it only limited to 6 pins. All the I/O pins of atmega328p should have the pwm facility but why only 6 have this facility? What makes these 6 pins so special?

  • Sign in to reply
  • Cancel

Top Replies

  • Robert Peter Oakes
    Robert Peter Oakes over 10 years ago +3 verified
    The PWM feature you talk of on the 6 pins is actually implemented in hardware inside the ATMEGA328, Hardware PWM is good because it means that once the PWM is started the code need not do anything for…
Parents
  • Robert Peter Oakes
    0 Robert Peter Oakes over 10 years ago

    The PWM feature you talk of on the 6 pins is actually implemented in hardware inside the ATMEGA328,

     

    Hardware PWM is good because it means that once the PWM is started the code need not do anything for it to continue unless you want to change its parameters or stop it all together so you have ALL the CPU power for other things

    Also the Hardware PWM will be able to go as high as 8 Mhz on a 16Mhz Arduino if you know how to setup the hardware correctly

     

    The downside of software PWM is your code has to continually update the pins involved and maintain timers for the purpose. The drawback of this is that it will not be as precise as the physical timers inside the chip and that it will take away from performing other processing in the arduino. (Less time to do other things) and if another task takes a little longer it will affect your output PWM waveform

    The upside of course is that you can use any pin as a software PWM.

     

    The reason not all pins have this is because of cost and complexity, all the overloaded pins on the arduino have to include multiplexers to route the required internal hardware to the pin, the more options the more complex and of course the more costly. It is a compromise between functionality and cost

     

    Hope this clarifies things

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • Reject Answer
    • Cancel
Reply
  • Robert Peter Oakes
    0 Robert Peter Oakes over 10 years ago

    The PWM feature you talk of on the 6 pins is actually implemented in hardware inside the ATMEGA328,

     

    Hardware PWM is good because it means that once the PWM is started the code need not do anything for it to continue unless you want to change its parameters or stop it all together so you have ALL the CPU power for other things

    Also the Hardware PWM will be able to go as high as 8 Mhz on a 16Mhz Arduino if you know how to setup the hardware correctly

     

    The downside of software PWM is your code has to continually update the pins involved and maintain timers for the purpose. The drawback of this is that it will not be as precise as the physical timers inside the chip and that it will take away from performing other processing in the arduino. (Less time to do other things) and if another task takes a little longer it will affect your output PWM waveform

    The upside of course is that you can use any pin as a software PWM.

     

    The reason not all pins have this is because of cost and complexity, all the overloaded pins on the arduino have to include multiplexers to route the required internal hardware to the pin, the more options the more complex and of course the more costly. It is a compromise between functionality and cost

     

    Hope this clarifies things

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • Reject Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube