Vėl nuo “sudėtingų” einam link pačių paprasčiausių. Šį kartą pabandysim pasileisti hardwarinį PWMą. Dabar viskas tupi vėl pagrindiniam, main.c faile.
Mano LCD kontrastas valdomas su programiniu PWM. Reikėtu taip kvailai nedaryti, o panaudoti tikrą hardwarinį (kalbainiškai- aparatinį) PWM. Internete susiradau pavyzduką su PWM. Ten naudojamas PWM0 kanalas, ir jo galimos išėjimo kojos labai toli nuo mano LCD lizdo. Tuo tarpu PWM1 kanalo galimo kojos visai patogios. Todėl, kad palengvinti būsimos, pataisytos PCB projektavimą, nutariau užprogramuoti PWM1 kanalą. Source kode yra viskas palikta ir PWM0 kanalo programavimui. O peržvelgus abu variantus, iškarto pasidaro aišku kaip užprogramuoti likusius.
Programoje kiek tai bandoma paaiškinti kaip skaičiuojasi vienas ar kitas parametras- tikslas buvo 2kHz PWM signalas. Bet vistiek rekomenduoju pasiskaityti datašytą.
Kada padarys tokį kontrolerį kurio kojytės bus dar labiau nepririštos prie periferijos?
Aišku:
Atmel ARM SAM7S PWM example with source code and hex, hexas sukompiliuotas Atmel AT91SAM7S256AU serijos čipui.
Jeigu neklystu, tai Cortex-M0+ mikrovaldikliams galima priskirinėti kokias nori kojas kaip nori. Jis ten matricą lygtais turi.
Cortex-M3 kai kurias funkcijas galima priskirti kitoms kojoms.
Nors manau ten ne kiek core galimybė, kiek pačio gamintojo periferijos patobulinimas
Bet analoginių funkcijų perduoti kitoms kojoms neina.
Šitas SAM turi irgi kojas “judančias”, bet alternatyvos tik 2 ar 3. Vis geriau nei nieko.