Code below is from examples library, I can observe the signal on serial plotter but I wan to see that on oscilloscope.
How to add PWM output on PA7 pin ?
STM32F103
/*
Smoothing
Reads repeatedly from an analog input, calculating a running average
and printing it to the computer. Keeps ten readings in an array and
continually averages them.
The circuit:
* Analog sensor (potentiometer will do) attached to pin 15
Created 22 April 2007
By David A. Mellis <dam@mellis.org>
http://www.arduino.cc/en/Tutorial/Smoothing
Ported to Maple 27 May 2010
by Bryan Newbold
*/
// Define the number of samples to keep track of. The higher the number,
// the more the readings will be smoothed, but the slower the output will
// respond to the input. Using a constant rather than a normal variable lets
// use this value to determine the size of the readings array.
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int index1 = 0; // the index1 of the current reading
int total = 0; // the running total
int average = 0; // the average
int inputPin = PA6; // analog input pin
void setup() {
// Declare the input pin as INPUT_ANALOG:
pinMode(inputPin, INPUT_ANALOG);
Serial.begin(115200); // Ignored by Maple. But needed by boards using hardware serial via a USB to Serial adaptor
// Initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
// Subtract the last reading:
total = total - readings[index1];
// Read from the sensor:
readings[index1] = analogRead(inputPin);
// Add the reading to the total:
total = total + readings[index1];
// Advance to the next position in the array:
index1 = index1 + 1;
// If we're at the end of the array...
if (index1 >= numReadings) {
// ...wrap around to the beginning:
index1 = 0;
}
// Calculate the average:
average = total / numReadings;
// Send it to the computer (as ASCII digits)
Serial.println(average, DEC);
}/*
Smoothing
Reads repeatedly from an analog input, calculating a running average
and printing it to the computer. Keeps ten readings in an array and
continually averages them.
The circuit:
* Analog sensor (potentiometer will do) attached to pin 15
Created 22 April 2007
By David A. Mellis <dam@mellis.org>
http://www.arduino.cc/en/Tutorial/Smoothing
Ported to Maple 27 May 2010
by Bryan Newbold
*/
// Define the number of samples to keep track of. The higher the number,
// the more the readings will be smoothed, but the slower the output will
// respond to the input. Using a constant rather than a normal variable lets
// use this value to determine the size of the readings array.
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int index1 = 0; // the index1 of the current reading
int total = 0; // the running total
int average = 0; // the average
int inputPin = PA6; // analog input pin
void setup() {
// Declare the input pin as INPUT_ANALOG:
pinMode(inputPin, INPUT_ANALOG);
Serial.begin(115200); // Ignored by Maple. But needed by boards using hardware serial via a USB to Serial adaptor
// Initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
// Subtract the last reading:
total = total - readings[index1];
// Read from the sensor:
readings[index1] = analogRead(inputPin);
// Add the reading to the total:
total = total + readings[index1];
// Advance to the next position in the array:
index1 = index1 + 1;
// If we're at the end of the array...
if (index1 >= numReadings) {
// ...wrap around to the beginning:
index1 = 0;
}
// Calculate the average:
average = total / numReadings;
// Send it to the computer (as ASCII digits)
Serial.println(average, DEC);
}
/*
Smoothing
Reads repeatedly from an analog input, calculating a running average
and printing it to the computer. Keeps ten readings in an array and
continually averages them.
The circuit:
* Analog sensor (potentiometer will do) attached to pin 15
Created 22 April 2007
By David A. Mellis <dam@mellis.org>
http://www.arduino.cc/en/Tutorial/Smoothing
Ported to Maple 27 May 2010
by Bryan Newbold
*/
// Define the number of samples to keep track of. The higher the number,
// the more the readings will be smoothed, but the slower the output will
// respond to the input. Using a constant rather than a normal variable lets
// use this value to determine the size of the readings array.
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int index1 = 0; // the index1 of the current reading
int total = 0; // the running total
int average = 0; // the average
int inputPin = PA6; // analog input pin
int outputPin = PA7; //output pin
int pinMode(PinPA7, OUTPUT); // output pin
int analogOut = map(average, 0,1023, 0,255);
void setup() {
// Declare the input pin as INPUT_ANALOG:
pinMode(inputPin, INPUT_ANALOG);
pinMode(out, PWM);
analogWrite(PinPA7);
Serial.begin(115200); // Ignored by Maple. But needed by boards using hardware serial via a USB to Serial adaptor
// Initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
// Subtract the last reading:
total = total - readings[index1];
// Read from the sensor:
readings[index1] = analogRead(inputPin);
// Add the reading to the total:
total = total + readings[index1];
// Advance to the next position in the array:
index1 = index1 + 1;
// If we're at the end of the array...
if (index1 >= numReadings) {
// ...wrap around to the beginning:
index1 = 0;
}
// Calculate the average:
average = total / numReadings;
// Send it to the computer (as ASCII digits)
Serial.println(average, DEC);
}
/*
Smoothing
Reads repeatedly from an analog input, calculating a running average
and printing it to the computer. Keeps ten readings in an array and
continually averages them.
The circuit:
* Analog sensor (potentiometer will do) attached to pin 15
Created 22 April 2007
By David A. Mellis <dam@mellis.org>
http://www.arduino.cc/en/Tutorial/Smoothing
Ported to Maple 27 May 2010
by Bryan Newbold
*/
// Define the number of samples to keep track of. The higher the number,
// the more the readings will be smoothed, but the slower the output will
// respond to the input. Using a constant rather than a normal variable lets
// use this value to determine the size of the readings array.
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int index1 = 0; // the index1 of the current reading
int total = 0; // the running total
int average = 0; // the average
int inputPin = PA6; // analog input pin
int outputPin = PA7; //output pin
/* int pinMode(PinPA7, OUTPUT); // output pin */
int analogOut = map(average, 0,1023, 0,255);
void setup() {
// Declare the input pin as INPUT_ANALOG:
pinMode(inputPin, INPUT_ANALOG);
pinMode(outputPin, PWM);
//analogWrite(PinPA7);
Serial.begin(115200); // Ignored by Maple. But needed by boards using hardware serial via a USB to Serial adaptor
pinMode(PA7, OUTPUT); // output pin
analogOut = map(average, 0,1023, 0,255);
// Initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
/*pinMode(PinPA7, OUTPUT); // output pin
analogOut = map(average, 0,1023, 0,255);*/
// Subtract the last reading:
total = total - readings[index1];
// Read from the sensor:
readings[index1] = analogRead(inputPin);
// Add the reading to the total:
total = total + readings[index1];
// Advance to the next position in the array:
index1 = index1 + 1;
// If we're at the end of the array...
if (index1 >= numReadings) {
// ...wrap around to the beginning:
index1 = 0;
}
// Calculate the average:
average = total / numReadings;
// Send it to the computer (as ASCII digits)
Serial.println(average, DEC);
}
On most Arduino boards (those with the ATmega168 or ATmega328P), this function works on pins 3, 5, 6, 9, 10, and 11. On the Arduino Mega, it works on pins 2 - 13 and 44 - 46. Older Arduino boards with an ATmega8 only support analogWrite() on pins 9, 10, and 11.
Where in your sketch are you sending anything to PA7?