
Zitat von
alex91
Hallo!
Mit dem folgenden Code erzeuge ich mir einen Impuls am Pin 3 meines Arduino uno.
Ich möchte jatzt aber auch noch auf einem zweiten Pin einen um 180° phasenverschobenen Impuls erzeugen.
Kann mir da bitte jemand weiterhelfen?
Code:
// A sketch that creates an 250 kHz 6-bit resolution PWM with varying duty cycle
#include <avr/io.h>
#include <util/delay.h>
void setup()
{
pinMode(3, OUTPUT); // Output pin for OCR2B
pinMode(11, OUTPUT); // Output pin for OCR2A
// Set up the 250 kHz output
// TCCR2A = bit(COM2A1) | bit(COM2B1) | bit(WGM21) | bit(WGM20);
TCCR2A = bit(COM2A1) | bit(COM2A0) | bit(COM2B1) | bit(WGM21) | bit(WGM20); // invertierenden und non invertierenden mode für OC2A bzw OC2B
TCCR2B = bit(WGM22) | bit(CS20);
OCR2A = 63;
// OCR2B = 0;
OCR2B = 63; //compare match Wert für OC2B
}
void loop()
{
}
Hallo,
ich habe mal in Deinem Code etwas editiert. Rot soll raus und grün rein. Der ATMega328 kann mit den COM1Ax und COM2Bx Bits auf einen inverting mode und non-inverting mode im Fast PWM mode eingestellt werden.
Aus dem Datenblatt für OC2A. Das Gleiche gilt auch für OC2B:
Clear OC2A on Compare Match, set OC2A at BOTTOM, (non-inverting mode).
Set OC2A on Compare Match, clear OC2A at BOTTOM, (inverting mode)
Also OC2A auf Output schalten und die entsprechenden COM2xx Bits setzen und dann noch den Comparewert in OCR2A und OCR2B setzten. Es sollten jetzt zwei 180° phasenversetzte Signal an OC2A (Digitalpin 11) und OC2B (Digitalpin 3) vorhanden sein.
Fehler vorbehalten, da ich Arduino nicht, den Controller aber schon kenne.
Gruß
Searcher
Lesezeichen