@@ -19,6 +19,11 @@ def irq(u):
1919
2020text = "Hello World" * 20
2121
22+ char_margin = 10 # number of characters to wait before and after the expected IRQ firing
23+
24+ if "psoc-edge" in sys .platform :
25+ char_margin = 100
26+
2227# Test that the IRQ is called after the write has completed.
2328for bits_per_s in (2400 , 9600 , 115200 ):
2429 uart = UART (* uart_loopback_args , baudrate = bits_per_s , ** uart_loopback_kwargs )
@@ -27,12 +32,12 @@ def irq(u):
2732 # The IRQ_TXIDLE shall trigger after the message has been sent. Thus
2833 # the test marks a time window close to the expected of the sending
2934 # and the time at which the IRQ should have been fired.
30- # It is just a rough estimation of 10 characters before and
31- # 20 characters after the data's end.
35+ # It is just a rough estimation of 'char_margin' characters before and
36+ # '2 x char_margin' characters after the data's end.
3237
3338 bits_per_char = 10 # 1(startbit) + 8(bits) + 1(stopbit) + 0(parity)
34- start_time_us = (len (text ) - 10 ) * bits_per_char * 1_000_000 // bits_per_s
35- window_ms = 20 * bits_per_char * 1_000 // bits_per_s + 1
39+ start_time_us = (len (text ) - char_margin ) * bits_per_char * 1_000_000 // bits_per_s
40+ window_ms = ( 2 * char_margin ) * bits_per_char * 1_000 // bits_per_s + 1
3641
3742 print ("write" , bits_per_s )
3843 uart .write (text )
0 commit comments