Can I interrupt BBB interrupts for a short time (0.5 ms)?

I am trying to write a small driver program on Beaglebone Black, which should send a signal with such timings:

enter image description here

I need to send 360 bits of information. I am wondering if I can turn off all interrupts on the board for 500 µs while I send a signal. I have no idea if I can just disable all interrupts. Searches so far have been unkind. Any ideas how I could achieve this? I have some prototypes in assembly language for a signal, but I'm sure interrupts interrupt it.

So, for example, I hope I can have something like this:

disable_irq();
/* asm code to send my bytes */
reenable_irq();

What would the bodies of disable_irq () and reenable_irq () look like?

+4
2

, , - local_irq_disable() local_irq_enable(), IRQ CPU. .

. , GPIO < 1/3 .

. , GPIO Beaglebone ~ 2.78MHz, SoC IO (~ 0,18 ).

, , , :

SPI.

?

SPI 48 Beaglebone Black, DMA. . ~ 0.021us (@48MHz) .

, 30- (2 30- ):

'0' , 2 - 17 '1, 43' 0 - SPI (@48MHz).

"1" , 2 - 43 '1, 17' 0 - SPI (@48MHz).

+6

, SPI . . :

Q1 500 ?

A: 0.5 . ISR , concurrency . , ISR ( ) . - , , . . , ATOM .

Q2 ?

A:. asm , . API, , 3 ():

state_t tState = get_interrupt_status( );
disable_interrupt( );
... /*your operation here*/
resume_interrupt( tState );
+1
source

All Articles