Arduino. 12 bits PWM, MKR wifi 1010. Hur?

Permalänk

Arduino. 12 bits PWM, MKR wifi 1010. Hur?

Hur kan jag fixa en 12 bitars PWM i en Arduino MKR Wifi 1010? Har googlat och testat lite. Ser förslag som baseras på laddning och läsning av timerregister. Känns vettigt. Är lite newbee på Arduinos miljö så jag vet inte riktigt om det måste laddas speciella libs och/eller ange vissa headers. Det exemplet jag såg funkade inte på min MKR men det beror nog på att jag antingen saknar rätt header eller lib.
Hittade också nåt lib vid namn AnalogIO_arduino. Manualen säger, kortfattat, att man kan skicka ut signalen på en digital ut. Hur?

Som sagt, målet är PWM signal. Inte HUR jag tar mig dit.
Har ni några tips så hör gärna av er.

Tack.

Permalänk
Medlem

Databladet beskriver väldigt beskriviligt vilka register som används och med formler för att beräkna pulserna.
(Databladet är generellt och inte specifikt för Arduino)

https://docs.arduino.cc/hardware/mkr-wifi-1010
Det är Cortex-M0 32-bit SAMD21 datablad du letar efter.

Har ingen Arduino med arm mikrokontroller, så kan inte bara skriva ut koden för dig.

Vad menar du med
Som sagt, målet är PWM signal. Inte HUR jag tar mig dit.
Har ni några tips så hör gärna av er.

Man ska bara ge tips på pwm signaler, men inte på saker som hjälper dig på vägen?

Permalänk
Skrivet av Sions:

Databladet beskriver väldigt beskriviligt vilka register som används och med formler för att beräkna pulserna.
(Databladet är generellt och inte specifikt för Arduino)

https://docs.arduino.cc/hardware/mkr-wifi-1010
Det är Cortex-M0 32-bit SAMD21 datablad du letar efter.

Har ingen Arduino med arm mikrokontroller, så kan inte bara skriva ut koden för dig.

Vad menar du med
Som sagt, målet är PWM signal. Inte HUR jag tar mig dit.
Har ni några tips så hör gärna av er.

Man ska bara ge tips på pwm signaler, men inte på saker som hjälper dig på vägen?

En funktion, AnalogWrite, skickar ut PWM på en pinne. Den är dock bara 8 bitars. Fick sen se att det finns en AnalogWriteResolution() att anropa FÖRE analogWrite och den funktionen kan ställa PWM till 12 bitar. Dock bara på vissa Arduinos. Lyckligtvis hade jag en som det funkade med. MKR kan det. (Jag hade nämligen en Nano också...).

Jag menade med "målet" att för min del spelar det ingen roll om metod eller annat hur PWM:en åstadkommes. Det viktiga är att PWM-problemet löses.

Permalänk
Medlem

Okej
Då är problemet löst nu?

Går alltid skapa en pwm manuellt annars.
Tex(ej riktig kod, skriver på mobilen
Loop{
Digitalout(high);
Digitalout(low);
}
Det ger en 50% pwm.
Går att lägga in delays för att ändra procentandelen.
Men hårdvaruttimers är ett krav om du skall ha lite högre frekvens.

Permalänk
Skrivet av Sions:

Okej
Då är problemet löst nu?

Går alltid skapa en pwm manuellt annars.
Tex(ej riktig kod, skriver på mobilen
Loop{
Digitalout(high);
Digitalout(low);
}
Det ger en 50% pwm.
Går att lägga in delays för att ändra procentandelen.
Men hårdvaruttimers är ett krav om du skall ha lite högre frekvens.

Det är ju sant. Problemet är att med en loop så bokar du upp datorn till att göra PWM. Med dessa inbyggda PWM så initierar du dem och sen gör annat. Men det är sant, problemet verkar vara löst. God Jul !