Odeslání přijatáho bajtu v Interrupt v Céčku

Zdravím,

Mám menší nejasnost. Začal jsem programovat v MikroC a zasekl jsem se na odeslání přijatého bajtu v rutině přerušení (Interrupt) Jde mi zatím o to abych PICkem přijal bajt a rutině přerušení ho zase odeslal zpět.

void interrupt() {
if (PIR1.RCIF) {
uart_rd = RCREG;
PORTB = uart_rd;
UART1_Write_Text(uart_rd);
}
}

Jde o řádku UART_Write_Text(uart_rd) píše to “Reentrancy is not allowed: function ‘UART1_Write_Text’ called from two threads __Lib_UART_c67.c”

V rutině main funguje tenhle řádek úplně normálně a rutina Interrupt bez tohoto řádku taky funguje. Snad bych to měl nějak deklarovat, když to potřebuji použí v rutině přerušení?

Víte někdo co s tím? Dík…

Proč místo "UART1_Write_Text(uart_rd); " raději nepoužiješ prostě

Ano sice to funguje, ale to jen proto, že k odeslání bajtu z USARTu stačí jen naplnit TXREG a o nic víc se nestarám. Ale co kdybych měl komunikaci přes 1-wire. To už není tak jednoduché a musím použít něco jako “OW_Write_Text(text)” abych provedl subrutinu. V tom jistě bude jiný háček, ale stejně dík. Alespoň mi funguje oboustraná kominikace s PC.

Proč to dělat jednoduše, když to jde složitě, že. :slight_smile: