Serial data out, bit banging and threading in c#

Discussion in 'Programmer's Corner' started by hunterage2000, Jul 25, 2018.

  1. hunterage2000

    Thread Starter Senior Member

    May 2, 2010
    I am trying to get my head around threading in C# and I want to run 3 methods in parallel.

    The attached image shows the timing waveform for a SIPO Shift reg.

    The SHCP is the shift reg clock, DS is the serial data out and STCP is the storage register.

    SHCP will be generated using the RS232 TXD pin at 9600 Baudrate, DS with Dtr at 1 bit per ms and STCP with CTS at a ms.

    The idea is to:
    1. Tick a combination of 8 checkboxes then press a SEND button
    1. Start SHCP which will have a start bit
    2. wait 1ms then start DS so SHCP will be at the first 0
    3. For each of the 8 cycles, 8 bits will be shifted with DS on the rising edge of SHCP and leading SHCP by 0.04ms
    4. After the 8th bit, STCP will go HIGH for 1ms
    5. DS will now be on the Shift reg parallel outputs.
    6. GO BACK TO 1.

    Will running 3 threads do these in parallel so the 3 waveforms match up?
  2. MrSoftware

    Senior Member

    Oct 29, 2013
    Your attachment didn't make it. Keep in mind, your 3 threads are not guaranteed to get similar processor time and you will most likely have to manually synchronize them if the timing between their operations is important.
  3. WBahn


    Mar 31, 2012
    It seems like you are trying to work at two ends of a spectrum that are somewhat mutually exclusive. By using a language like C#, you are trying to work at a very high level and encapsulate all the low-level stuff in a black box that just works to provide the high-level behaviors you expect, but then you are wanting to bit bang port pins which is about as low-level and the furthest thing from encapsulation as you might imagine. You might be in for a lot of hidden gotchas as you try to make this work.
    Kjeldgaard and MrSoftware like this.