Citat:
FrequencyTimer2::setPeriod(400); - koliki je ovo period, 1000=1 sec ??
mora pogledas FT2 dokumentaciju, ako se dobro secam to generise pwm 1000000 / x Hz na D11 pinu dakle setuje timer1/2 sa tim preskalerom ALI ti onda sa FrequencyTimer2::setOnOverflow(kita); zakacis funkciju kita() da se izvrsi na overflow, e sad ne secam se dal je overflow 8bit ili 16bit ako je 8bit onda ti se kita() izvrsi u slucaju setPeriod(1000)
1000000/1000 = 1000Hz
1000Hz / 256 = 3.9 puta u sekundi ti se izvrsi kita()
ako je 16bitni onda jos sporije ...
znaci tvojih 400 bi trebalo da izvrsava kita() 9.7 puta u sekundi
TREBALO!!!!
moz proveris tako sto ces u kita() upalis ugasis led umesto sto radis sve ovo pa izmeris :D ili pravilnije procitas doc za FT2 library :D ... ja sam ga koristio za generisanje frekvencije na D11 pre milion godina tako da ovo ostalo je vise manje educated guess
e sad, sto se tice citanja, poenta tih fancy referenci od 20-50din je da ubrza matis i pojednostavi stvari, odatkle 4.095-4.096 referenca, 2.047-2.048, 1.023-1.024 etc..
krenes za pocetak bez ikakvog filtriranja
Code:
#include <FrequencyTimer2.h>
#define REFERENCA 2495
volatile unsigned long VIN = 0;
void kita(void) {
// https://www.arduino.cc/reference/en/language/functions/math/map/
VIN = map( analogRead(A0), 0, 1023, 0, REFERENCA);
}
void setup() {
Serial.begin(9600);
delay(2);
FrequencyTimer2::setPeriod(400); // 100
FrequencyTimer2::setOnOverflow(kita);
FrequencyTimer2::enable();
}
void loop() {
unsigned long v;
noInterrupts();
v = VIN;
interrupts();
Serial.print("Vin = ");
Serial.print(v);
Serial.println("mV");
delay(1000);
}
to je da vidis sta ti je na A0 ... e sad sta si ti turio pre A0, nisam citao celu temu mnogo ste zakomplikovali .. ali dovedi napon sa baterije na A0 i vidi sta ces dobiti