Skocz do zawartości

AVR kwarc dziwne zachowanie


Imperatorek

Pomocna odpowiedź

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:

obraz.thumb.png.0785ec05a0edb64b44fb8527fa14aba3.png

Edytowano przez Imperatorek
Link do komentarza
Share on other sites

A więc tak -- kwarc jest wsadzony zaraz obok nóżek mikrokontrolera, zaraz za tym (następne oczko płytki) kondensatory a te bezpośrednio do linii masy na płytce stykowej.

 

Zbyt długie przewody powodują niepoprawną pracę mikrokontrolera, ale czy moje podpięcie już wykracza poza bezpieczne granice?

Link do komentarza
Share on other sites

Trudno mi powiedzieć, ale 22pF pojemności to naprawdę nie jest dużo. Piszesz, że na płytce działa, więc strzelałbym w długość przewodów albo kiepskie połączenia. Tylko to jest takie zgadywanie, równie dobrze może to być jednak błąd w schemacie (bardzo często błędy są tam, gdzie uważamy, że na pewno jest dobrze), połączeniach, fuse-ach, zasilaniu, etc. — najlepiej wszystko cierpliwie po kolei sprawdzić, eliminując poszczególne możliwości.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Na pewno wszystko będę jeszcze dokładnie sprawdzał 🙂

Co do kondensatorów to jakie wartości powinienem dobrać zamiast obecnych (tak orientacyjnie)? 22 pF zaleca nota katalogowa mikrokontrolera i tym się kierowałem przy ich doborze.

 

Link do komentarza
Share on other sites

22pF to dobra wartość, ale weź pod uwagę, że przy takich małych wartościach znaczenie zaczynają mieć wszystkie rzeczy w pobliżu — nawet długie nóżki kondensatora. Plus, indukcyjność też wpływa na przesunięcie sygnału w fazie. Tak więc i kwarc i kondensatory tak blisko mikrokontrolera jak tylko się da.

  • Lubię! 1
Link do komentarza
Share on other sites

9 minut temu, kaczakat napisał:

22pF to wartość maksymalna, zajrzyj jeszcze raz do noty katalogowej, tam jest coś-22pF. Jak doliczysz pojemność z blaszek w stykówce to może się okazać, że właśnie dlatego bez tych 22pF działa lepiej.

Masz rację, nota przewiduje kondensator z zakresu 12-22 pF.

Niestety nie mam pod ręką nic z tego przedziału oprócz wspomnianych 22 pF wiec na chwilę obecną nie mogę tego sprawdzić.

Link do komentarza
Share on other sites

Dopóki masz go na stykówce po prostu zostaw sam kwarc i wywal kondensatory, jak procesor rusza to znaczy że problemu szukać trzeba gdzie indziej. Mam nawet taki układ polutowany na płytce uniwersalnej i działa bez problemu na samym kwarcu, testowałem od 1-20 (i 32) MHz, UART po kabelkach i BT, również niekorzystne baudrate jak 115200 -500000 i wszystko działa OK. Pewnie z kwarcem 12pF byłoby lepiej, ale właśnie też takiego nie miałem.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.