Hello Guys,
i want to reproduce the Signal in the Attachement on only 1 Pin on the Arduino Due.
Here are the Signal specifications:
-> at all the Signal consists out of 19 blocks â 16Bit
-> the first 2 Blocks are every time the same "AAAB" and "2000" the 3rd Block should be variable later
and the last 16 blocks are every time the same "0000"
-> the coding of the Signal in the attachment is, that 1 is a falling edge and 0 is a rising edge
-> between every Bit there is a pause â 1us....(so 1us is the sampling rate)..Signal = 1 Mhz
Can u help me to realize that in a Code for my arduino ?![]()
I did something before, to get 4 different Signals â 16Bit on the same Pin by push a Button
#define NOP __asm__ __volatile__ ("nop\n\t");
#define PAUSE NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP
// 1 NOP Befehl entspricht 12ns (1/84MHz)
void setup() {
pinMode(5, OUTPUT);
Serial.begin(115200);
}
void loop() {
/*
on pin 5:
Signal 1: 1010 1010 1100 1100
Signal 2: 1110 1110 1010 1010
Signal 3: 1010 0110 0110 1010
Signal 4: 1101 1101 0011 0010
*/
if(Serial.available()>0){
byte input = Serial.read();
Pio *p = digitalPinToPort(7); // Port.C
uint32_t s5 = digitalPinToBitMask(5);
uint32_t c5 = digitalPinToBitMask(5);
switch (input){
case '1':
p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE
p->PIO_CODR = c5; PAUSE
break;
case '2':
p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
break;
case '3':
p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
break;
case '4':
p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE
p->PIO_SODR = s5; PAUSE p->PIO_SODR = s5; PAUSE p->PIO_CODR = c5; PAUSE
p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE p->PIO_CODR = c5; PAUSE p->PIO_SODR = s5; PAUSE
p->PIO_CODR = c5; PAUSE
break;
}
}
}
Can I use it maybe for this Task by rewirting ?
Or maybe u have a new Solution for it ![]()
Would be fine !
Best regards and thank u !
