Witam.
Mam problem z połączeniem UART w atmedze16 z USB w komputerze.
Jako przejściówki używam przeprogramowanego JTAGa. Po zwarciu odpowiednich pinów i połączeniu przez putty wprowadzone znaki pojawiają się w terminalu, więc wydaje się sprawna.
Komunikacja między dwoma atmegami po zwarciu nóżek Rx i Tx również działa. Sprawdzałem wysyłając co jakiś czas znak w jednym procesorze, drugi programując tak, aby zapalał na moment diodę po otrzymaniu tego znaku.
Kiedy natomiast odłączę przejściówkę z JTAGa do atmegi i komputera, oraz łączę się przez putty na terminalu nic się nie pojawia.
Do atmegi podłączony jest kwarc 14,7456 MHz, w ustawieniach projektu AVR Studio ustawiłem więc Frequency na 14745600 hz.
Kod źródłowy programu:
Ustawienia putty:
Serial line to connect to: COM4 (sprawdzone w menadżerze urządzeń)
Speed (baud): 9600
Data bits: 8
Stop bits: 1
Parity: None
Flow control: None
Fuse bity:
High: 0x19
Low: 0xFF
Nie mam już nawet pomysłu gdzie szukać przyczyny problemu:(
Mam problem z połączeniem UART w atmedze16 z USB w komputerze.
Jako przejściówki używam przeprogramowanego JTAGa. Po zwarciu odpowiednich pinów i połączeniu przez putty wprowadzone znaki pojawiają się w terminalu, więc wydaje się sprawna.
Komunikacja między dwoma atmegami po zwarciu nóżek Rx i Tx również działa. Sprawdzałem wysyłając co jakiś czas znak w jednym procesorze, drugi programując tak, aby zapalał na moment diodę po otrzymaniu tego znaku.
Kiedy natomiast odłączę przejściówkę z JTAGa do atmegi i komputera, oraz łączę się przez putty na terminalu nic się nie pojawia.
Do atmegi podłączony jest kwarc 14,7456 MHz, w ustawieniach projektu AVR Studio ustawiłem więc Frequency na 14745600 hz.
Kod źródłowy programu:
#include <avr/io.h>
#include <stdint.h>
void uart_init(uint16_t baud) {
UBRRH= (F_CPU/16/baud-1) >> 8;
UBRRL= F_CPU/16/baud-1;
UCSRC=(_BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0));
UCSRB=(_BV(RXEN)|_BV(TXEN));
}
void uart_put_char(const uint8_t data) {
while(!(UCSRA & _BV(UDRE)));
UDR=data;
}
uint8_t uart_get_char(void) {
while(!(UCSRA & _BV(RXC)));
return UDR;
}
int main() {
uart_init(9600);
while(1) {
uint8_t data=uart_get_char();
uart_put_char(data);
}
}Ustawienia putty:
Serial line to connect to: COM4 (sprawdzone w menadżerze urządzeń)
Speed (baud): 9600
Data bits: 8
Stop bits: 1
Parity: None
Flow control: None
Fuse bity:
High: 0x19
Low: 0xFF
Nie mam już nawet pomysłu gdzie szukać przyczyny problemu:(