Arduino: går det att ta reda på aktuell analog out?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Borre
Inlägg: 4564
Blev medlem: 14 juni 2007, 15:43:50
Ort: Hälsingland

Re: Arduino: går det att ta reda på aktuell analog out?

Inlägg av Borre »

Kollar man källkoden för analogWrite så ser man vilka register som skrivs och använder rätt för den aktuella processorn, då går det att göra så här enkelt på en Atmega328p (UNO osv):

Kod: Markera allt

void setup() {
  Serial.begin(115200);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(3, OUTPUT);
}

void loop() {
  analogWrite(6, 6);
  analogWrite(5, 5);
  analogWrite(9, 9);
  analogWrite(10, 10);
  analogWrite(11, 11);
  analogWrite(3, 3);

  Serial.println(OCR0A); //analogWrite(6, 6);
  Serial.println(OCR0B); //analogWrite(5, 5);
  Serial.println(OCR1A); //analogWrite(9, 9);
  Serial.println(OCR1B); //analogWrite(10, 10);
  Serial.println(OCR2A); //analogWrite(11, 11);
  Serial.println(OCR2B); //analogWrite(3, 3);
  Serial.println();
  delay(1000);
}
För enkelhetens skulle är allt uppradat efter hur registren läses tillbaks, och varje PWM-pin har samma värde på analogWrite som dess pinnummer.
Nu är det bara ett exempel på hur man kan läsa tillbaks värdet, man får såklart anpassa det efter vad man ska göra och det blir heller inte kompatibelt med andra processorer med andra register såklart.
Skriv svar