[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-chat] Troubles with software uart
From: |
Kreyl |
Subject: |
[avr-chat] Troubles with software uart |
Date: |
Fri, 23 Mar 2007 01:47:33 +0300 |
Hi!
I am trying to implement software UART at ATTiny26. (I can't use
it's USI, because those pins are used for PWM output).
Transmitting works ok, but recieving not. Device sees something
incoming, but doesn't decode it; result is always 0b11111111 for delay
time greater than 18 (CPU freq = 1 MHz), otherwise something like
0b11100000.
Maybe, something is wrong with asm parameters.
Here is INT0 code:
ISR (INT0_vect) {
uint8_t i=22, BitCounter=8, Rxbyte=0;
asm volatile (
"cli" "\n\t"
"ldi %1, 9" "\n\t" // Bit-counter
"ldi %2, 0" "\n\t"
// "ldi %0, 22" "\n\t" // half-bit delay
"1: dec %0" "\n\t"
"brne 1b" "\n\t"
"2: ldi %0, 130" "\n\t"
"3: dec %0" "\n\t" // One-bit delay
"brne 3b" "\n\t"
"clc" "\n\t" // clear carry
"sbic %3, %4" "\n\t" // if RX pin high
"sec" "\n\t"
"dec %1" "\n\t" // If bit is stop bit
"breq 4f" "\n\t" // return
"ror %2" "\n\t" // shift bit into Rxbyte
"rjmp 2b" "\n\t" // go get next
"4: sei" "\n\t" // End
: "=r" (i), "=r" (BitCounter), "=&r" (Rxbyte)
: "I" (_SFR_IO_ADDR (PINB)), "I" (PB6), "r" (Rxbyte)
);
UARTRXCommand = Rxbyte;
}
Best regards,
Kreyl
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-chat] Troubles with software uart,
Kreyl <=