Hi folks!
I'm a newbie here, and need your help for my very first sketch.
I need some configuration pins to have an action,
and a reset pin that is set OFF by default (HIGH).
Each time the configuration takes place, the RST pin should be active (LOW),
when configuration done, it should return and remain OFF (HIGH).
All pins work perfectly, and stay fixed in their condition,
except for the RST pin, where I get a pulsed waveform.
I know there is a simple fix for this.
Can you help me?
Thanks in advance.
// PA
// Default state 44.1, RST off (HIGH)
// First touch: 48
// Second touch: 88.2
// Third touch: led 96
// Fourth touch: led 176.4
const int LEDA = 13; // LED A connected to digital pin 13, 44.1kHz
const int LEDB = 12; // LED B digipin 12, 48 kHz
const int LEDC = 11; // LED C digital pin 11: 88.2kHz
const int LEDD = 10; // LED D Digital Pin 10 96 kHz
const int LEDE = 9; // LED E digital pin 9 176.4kHz
const int LEDF = 8; // LED pin digitale 8 192.0kHz
//MasterClock select
const int YA = 7; //Y1 digital pin 7 (PD7) 22.5792MHz
const int YB = 6; //Y2 digital Pin 6 (PD6) 24.576 MHz
//button input and reset
const int BUTTON = 5; // Button connected to Input DigitalPin 5 PD5
const int RST = 2; //Reset control digital pin 2, PD2
const int fsA = 4; //FS0 digitalPin 4 PD4
const int fsB = 3; //FS1 pin digitale 3 PD3
const int HWCK0 = 0; //HWCK0 Digital Pin 0 PD0
const int HWCK1 = 1; //HWCK1 Digital Pin 1 PD1
/*
* Global variables (all integers)
*/
int statoButton = 0; // button state (initially not depressed)
int lastStatoButton = 0; // last state of the button (actually not depressed)
int countButton = 0; // Button Count
// App start
void setup()
{
pinMode(LEDA, OUTPUT); // sets the digital pin as an output
pinMode(LEDB, OUTPUT);
pinMode(LEDC, OUTPUT);
pinMode(LEDD, OUTPUT);
pinMode(LEDE, OUTPUT);
pinMode(LEDF, OUTPUT);
pinMode(YA, OUTPUT);
pinMode(YB, OUTPUT);
pinMode(RST, OUTPUT);
pinMode(fsA, OUTPUT);
pinMode(fsB, OUTPUT);
pinMode(HWCK0, OUTPUT);
pinMode(HWCK1, OUTPUT);
pinMode(RST, OUTPUT);
pinMode(BUTTON, INPUT); // sets the digital pin as an input
}
// Loop start
void loop()
{
// Verify if user has depressed the button
if(digitalRead(BUTTON))
{
// Wait for 250ms to let the finger release
delay(250);
// Change the last state of the button
if(lastStatoButton==0) lastStatoButton=1;
else lastStatoButton=0;
// Increase button count
if(countButton<=5) countButton=countButton+1;
else countButton=0;
}
// Based on button state choose the action
switch (countButton)
{
// 48 kHz
case 1:
digitalWrite(RST, HIGH); // reset in default state
digitalWrite(LEDA, LOW);
digitalWrite(LEDB, HIGH); // LED 48 on
digitalWrite(fsA, LOW); // FS0 = 0
digitalWrite(fsB, LOW); // FS1 = 0
digitalWrite(HWCK0, LOW); //HWCK0 = 0
digitalWrite(HWCK1, HIGH); //HWCK1 = 1
digitalWrite(YA, LOW);
digitalWrite(YB, HIGH); // 24.576MHz MCK active
break;
// 88.2 kHz double speed mode
case 2:
digitalWrite(RST, HIGH); // reset off
digitalWrite(LEDB, LOW); // off LED 48
digitalWrite(LEDC, HIGH); // on LED 88.2
digitalWrite(fsA, HIGH); // FS0 = 1
digitalWrite(fsB, LOW); // FS1 = 0
digitalWrite(HWCK0, LOW); //HWCK0 = 0
digitalWrite(HWCK1, LOW); //HWCK1 = 0
digitalWrite(YA, HIGH); // 22.5792 On
digitalWrite(YB, LOW); //off 24.576MHz MCK
break;
// 96 kHz double speed mode
case 3:
digitalWrite(RST, HIGH); //off reset
digitalWrite(LEDC, LOW); // off il LED 88.2
digitalWrite(LEDD, HIGH); // on LED 96
digitalWrite(fsA, HIGH); // FS0 = 1
digitalWrite(fsB, LOW); // FS1 = 0
digitalWrite(HWCK0, LOW); //HWCK0 = 0
digitalWrite(HWCK1, LOW); //HWCK1 = 0
digitalWrite(YA, LOW); // 22.5792 Off
digitalWrite(YB, HIGH); // on 24.576MHz MCK
//delay(500); // wait for a second
break;
// 176.4 kHz quad speed mode
case 4:
digitalWrite(RST, HIGH); // off reset
digitalWrite(LEDD, LOW); // off LED 96
digitalWrite(LEDE, HIGH); //on LED 176.4
digitalWrite(fsA, LOW); // FS0 = 0
digitalWrite(fsB, HIGH); // FS1 = 1
digitalWrite(HWCK0, HIGH); //HWCK0 = 1
digitalWrite(HWCK1, LOW); //HWCK1 = 0
digitalWrite(YA, HIGH); // 22.5792 On
digitalWrite(YB, LOW); // off 24.576MHz MCK
//delay(500); // wait for a second
break;
// 192 kHz quad speed mode
case 5:
digitalWrite(RST, HIGH);
digitalWrite(LEDE, LOW); // off LED 176.4
digitalWrite(LEDF, HIGH); // on LED 192
digitalWrite(fsA, LOW); // FS0 = 0
digitalWrite(fsB, HIGH); // FS1 = 1
digitalWrite(HWCK0, HIGH); //HWCK0 = 1
digitalWrite(HWCK1, LOW); //HWCK1 = 0
digitalWrite(YA, LOW); // 22.5792 Off
digitalWrite(YB, HIGH); // on 24.576MHz MCK
//delay(500); // wait for a second
break;
// 44.1 kHz
case 0:
digitalWrite(RST, HIGH);
digitalWrite(LEDF, LOW); // off LED 176.4
digitalWrite(LEDA, HIGH); // on LED 44.1
digitalWrite(fsA, LOW); // FS0 = 0
digitalWrite(fsB, LOW); // FS1 = 0
digitalWrite(HWCK0, LOW); //HWCK0 = 0
digitalWrite(HWCK1, HIGH); //HWCK1 = 1
digitalWrite(YA, HIGH); // 22.5792 MCK ON
digitalWrite(YB, LOW); //off 24.576MHz MCK
digitalWrite(RST, LOW); //reset on
delay(500);
digitalWrite(RST, HIGH); //reset off
break;
}
}