Hallo,
Ich brauche zur komfortablen Steuerung eines CO2 Lasernetzteils ein PWM Signal.
Dies sollte sowohl in der Frequenz als auch im Tastverhältnis änderbar sein.
Die Register schauen beim ARM anders aus als bei den Atmega's. (sonst wäre es einfach)
Ich habe etwas gesucht und auch das Datenblatt zu Rate gezogen.
Gefunden habe ich dieses Beispiel
Die Variante mit PWM Controller und mit der Funktion InitPWMController_MCLK() wäre mit Anpassungen genau das was ich suche.
Da meine Hardware an PortC.28 (D3) und nicht an PortC.23 habe ich den Code in diesem Bereich entprechend geändert.
void InitPIO()
{
//Because we are using PORTC.PIN23 in peripheral B mode
// we need to enable the clock for that line.
PMC->PMC_PCER0 = _BV(ID_PIOC);
//Disable PIO Control on PC23 and set up for Peripheral B PWML7
//PWM Pin 6 on the board
PIOC->PIO_PDR = PIO_PC23;
PIOC->PIO_ABSR = PIO_PC23;
//Enable output on C23
PIOC->PIO_OER = PIO_PC23;
//Enable pull-up on pin
PIOC->PIO_PUDR = PIO_PC23;
}
PortC.28 ist ja auch ein PWM Pin beim Due.
Wenn ich das Teste wird der Pin wie erwartet auf High gezogen aber kein PWM erzeugt.
ich muß gestehen, das ich nicht alles was im Datenblatt steht richtig verstehe.
zb. PMC Peripheral Clock Enable Register 1 (PMC_PCER1) was ist mit den PID's gemeint.
Dem PWM Controller muß doch gesagt werden, an welchen Pin er das PWM Signal ausgeben soll.
//Because we are using PORTB.PIN25 in peripheral B mode
// we need to enable the clock for that line.
PMC->PMC_PCER0 = _BV(ID_PIOB);
Denke hier klemmt es, weil ich eben den PortC.28 habe.
Vermutlich muß hier noch was geändert werden ?
Im Datenblatt unter 28.15.23 (PMC Peripheral Clock Enable Register 1) zu finden.