Go Down

Topic: Arduino Due Parallel Data Sending Out on Port D (Read 251 times) previous topic - next topic

Lolenlol

I'm working on a project that involves 8 Inch Floppys. I am making a 8 Inch Floppy emulator. Therefor I need to make a FM signal. I want to use a shift register and send the bytes parallel to the shift register. This would be fine, but.... The Arduino Due works differently than others like the Uno and Nano that I worked with. If I wanted to send data parallel out, I could use "PortD = temp". in this case, this isn't an option. Because its a ARM processor, it uses special command lines and registers that I don't know how to use properly. I tried to make it work, but Arduino didn't reconise any register I wanted to use.

Code: [Select]
for (int ii = 0; ii <= 7; ii++) {
      if (c[y] & (B10000000 >> ii)) {
         digitalWrite(myPins[ii],HIGH);
      }else{
        digitalWrite(myPins[ii],LOW);
      }


I know that there are other ways of sending data parallel, but it's too slow. for example: I got the code below from someone (don't remember who) and it works. the problem is that this methode is way to slow to send data. The fastest I can get with this methode is 11,25 kBps I need to send data serial at 250 kbps

I know that there are two ways. the first is to change the digitalwrite code and make it faster, but I don't know how and the second is to use Assembly code. This way the proces is as fast as possibly. I prefere to use Assembly.

http://www.atmel.com/Images/Atmel-11057-32-bit-Cortex-M3-Microcontroller-SAM3X-SAM3A_Datasheet.pdf

This is the datasheet of the SAM3x8E. on page 621 is the  I/O Line Control Logic.
On page 631 is the Register Mapping.
You will need both if you are willing to help me.
I found some information that i MIGHT need.
- Peripheral A output enable
- peripheral A output
- Pio_ABSR

I hope someone is able to help me with this problem.

Go Up