04-06-2022, 04:14
Witam
Oto program generatora z regulacją częstotliwości, problem = EEPROM nie zachowuje wartosci amp.
Oto program generatora z regulacją częstotliwości, problem = EEPROM nie zachowuje wartosci amp.
Kod:
#include <EEPROM.h>
unsigned long amp = 0;
void setup() {
Serial.begin(115200);
pinMode(A3, INPUT_PULLUP);
pinMode(A4, INPUT_PULLUP);
pinMode(9, OUTPUT); //output A
pinMode(10, OUTPUT); //output B
//Enable pin change interrupts on pins 9 and 10 PB 2 and 3
PCMSK0 |= (1 << PCINT2); //enable interrupt pin 10
PCMSK0 |= (1 << PCINT1); //enable interrupt pin 9
TCCR1A = 0; //clear timer registers
TCCR1B = 0;
TCNT1 = 0;
GTCCR |= 1 << PSRASY; //reset prescaler
//+++++++++++++++++++++++++++++++++++++++++
TCCR1B = (1 << WGM13) + (1 << WGM12) + (1 << CS10); // prescaler = 1 (none)
//+++++++++++++++++++++++++++++++++++++++++++++
//ICR1 = 200;//
//ICR1 = amp;//
OCR1A = ICR1 - 1; //two different pulse widths almost 100% duty cycle
OCR1B = OCR1A / 2; //offset by half period
TCCR1B |= _BV(WGM13) | _BV(WGM12); //CTC mode with ICR1
TCCR1A = _BV(COM1A0) | _BV(COM1B0); //Toggle OC1A/OC1B on compare match
// EEPROM.get(0, amp);
}
void loop() {
ICR1 = amp;
if (digitalRead(A3) == 0) {
amp++;
//EEPROM.write(0, amp);
}
if (digitalRead(A4) == 0) {
amp--;
//EEPROM.write(0, amp);
}
Serial.print("amp Hz = ");
Serial.println(amp);
// Serial.println(amp/10);
}