Przeszukaj forum
Pokazywanie wyników dla tagów 'kwarc'.
Znaleziono 1 wynik
-
Cześć wszystkim. Mam problem z rezonatorem kwarcowym na płytce stykowej -- w momencie podpięcia go przez kondensatory 22 pF do masy, urządzenie nie jest rozpoznawane i avrdude wyświetla mi błąd (Mega1284). Jak tylko odłączę go od masy to urządzenie da się normalnie zaprogramować choć nie jestem pewien czy wszystko działa, ponieważ nie mogę przeprowadzić poprawnej transmisji UART (błędy w ramce danych, program jest dobry bo przez chwilę działał na ATMedze328p -- sprawdzane analizatorem logicznym.) Nie zamieszczam schematu podłączenia, ponieważ jest dobre -- na płytce lutowanej w której pracował mikrokontroler wszystko działa przy takim samym podłączeniu (kwarc połączony z masą). Zastanawia mnie też czy problemem może być sam kwarc. Zawsze używałem takich z oznaczeniem np. 16.000 itp. natomiast ten którego używam obecnie ma oznaczenie R160LEB8w Z góry dzięki za odpowiedzi. PS: Odpowiedź avrdude przy poprawnej transmisji. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e9706 (probably m1284) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "asdf1.hex" avrdude: writing flash (184 bytes): Writing | ################################################## | 100% 0.08s avrdude: 184 bytes of flash written avrdude: verifying flash memory against asdf1.hex: avrdude: load data flash data from input file asdf1.hex: avrdude: input file asdf1.hex contains 184 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.08s avrdude: verifying ... avrdude: 184 bytes of flash verified avrdude: safemode: Fuses OK (E:FF, H:99, L:F7) avrdude done. Thank you. Kod programu: /*Przek dompilacją należy zdefinować wartości BAUD Rate */ #include <avr/io.h> #define BAUD 9600 #define MYUBRR F_CPU/16/BAUD-1 void UART_Init( unsigned int ubrr); void UART_Transmit(unsigned char data); int main(void) { char i = '5'; UART_Init(MYUBRR); UART_Transmit(i); while(1) ; return 0; } void UART_Init( unsigned int ubrr) { /*Set baud rate */ UBRR0H = (unsigned char)(ubrr>>8); UBRR0L = (unsigned char)ubrr; /*Enable receiver and transmitter */ UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Set frame format: 8data, 2stop bit */ UCSR0C = (1<<USBS0)|(3<<UCSZ00); } void UART_Transmit( unsigned char data ) { /* Wait for empty transmit buffer */ while ( !( UCSR0A & (1<<UDRE0)) ) ; /* Put data into buffer, sends the data */ UDR0 = data; } Wynik z analizatora stanów -- BAUD ustawiony na 9600 tak jak w programie: