logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Mega16 RS232↔PC - Brak komunikacji przy 16MHz, błędy przy 8MHz, Bascom

WaWrzOL 15 Kwi 2005 10:56 1473 10
REKLAMA
  • #1 1406954
    WaWrzOL
    VIP Zasłużony dla elektroda
    Posty: 235
    Pomógł: 19
    Ocena: 23
    Mam nastepujacy problem. W zaden sposob M16 nie moze sie skomunikowac po przesz RS'a z PC. Dodam ze na 2313 wszytsko dziala jak nalezy. M16 gdy jest taktowny kawrcem 16Mhz (kondesatory 33p) nie wysyla kompletnie nic. Gdy taktuje go zegarem 8Mhz wysylane sa smieci. W dodatku odmiezane czasy przez procesor sa znacznie wydluzane. Pisze w Bascomie, a to program do testu:

    
    $crystal = 8000000
    Dim X As Byte
    Do
    Print X
    X = X = 1
    Wait 1
    Loop
    End
  • REKLAMA
  • Pomocny post
    #2 1407005
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    Nie znam BASCOMA ale nei masz tu ani ustwionej szybkości transmisji ani nie piszesz nic o ustawoenieu fusebitów. Może ATmega16 pracuej Ci w dalszym ciągu na wewnętrznym rezonatorze 1MHz - na co by zresztą wskazywało:
    "... W dodatku odmiezane czasy przez procesor sa znacznie wydluzane..."
  • REKLAMA
  • #3 1407111
    yarpen2
    Poziom 22  
    Posty: 549
    Pomógł: 39
    Ocena: 39
    zgadzam się z przedmówcą ...

    (kiedyś to też przerabiałem)
  • #4 1407216
    Jaca
    Poziom 32  
    Posty: 1332
    Pomógł: 239
    Ocena: 217
    Dla M16 (wg specyfikacji ATMEL, strona 24 pdf'a) kondensatory przy kwarcu powinny mieć wartość od 12 pF do 22 pF. Dodatkowo sprawdź FuseBit'y (strona 24-25 pdf'a) dla odpowiedniej częstotliwości rezonansowej kwarcu. Co do Bascom'a to dodaj wpisy, których brakuje w Twoim programie:

    $crystal = 7372800
    $regfile = "m16def.dat"
    $baud = 115200 'lub inne prędkości, zgodne z ustawieniami PC


    Dla stabilnej (bezbłędnej) komunikacji po RS232 używaj kwarców typu: 3.6864 MHz, 7.3728 MHz, 11.0592 MHz (strona 166-169 pdf'a).
  • REKLAMA
  • #6 1407915
    2P
    Poziom 20  
    Posty: 345
    Pomógł: 22
    Ocena: 205
    Jak napisali koledzy: w atmedze musisz włączyć zewnętrzny rezonator wysokiej częstotliwości. Domyślnie pracuje na wewnętrznym RC 1MHz.
    Jeśli korzystasz z BASCOM'owego programatora zerknij na ostatnią z zakładek.
  • #7 1408975
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    WaWrzOL napisał:
    M16 gdy jest taktowny kawrcem 16Mhz (kondesatory 33p) nie wysyla kompletnie nic.


    Zanim zmienisz zegar na zewnetrzny to sugeruje abyś podłączył mniejsze kondensatory zamiast tych 33p, bo mi M8 nie odpalił z kwarcem 12Mhz i 33p.
    Daj najlepiej 15p, ewentualnie 22p
  • REKLAMA
  • #8 1409138
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    lbugiera napisał:
    [...]mi M8 nie odpalił z kwarcem 12Mhz i 33p.
    A kolega czytał dokładnie notę katalogową ? Do czego służy bit konfiguracyjny CKOPT dla zewnętrznego rezonatora kwarcowego >8 MHz ? ;)
    Pozdrawiam, Light'I
  • #9 1409215
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    Light'­­­­I napisał:
    lbugiera napisał:
    [...]mi M8 nie odpalił z kwarcem 12Mhz i 33p.
    A kolega czytał dokładnie notę katalogową ? Do czego służy bit konfiguracyjny CKOPT dla zewnętrznego rezonatora kwarcowego >8 MHz ? ;)
    Pozdrawiam, Light'I


    Czytałem ,czytałem.. i między innymi jest napisane, że kondenstaory powinny być 12-22p . A co do M8 i 33p to jednak działa bo przed chwilą sprawdzałem :) ... więc ładnie przepraszam za rozsiewanie nieprawdy :)
    Coś musiałem wtedy namieszać :)
  • #10 1409268
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    lbugiera napisał:
    [...]Czytałem ,czytałem.. i między innymi jest napisane, że kondenstaory powinny być 12-22p.
    Też nieprawda... ;) W tabelce 7 na stronie 35 to są tylko wartości pomocnicze zalecane(initial guidelines), nie wymagane. Powinny być tylko jednakowej wartości (C1=C2), a optymalna ich wartość zależy od użytego rezonatora, pojemności montażowej i zakłóceń elektromagnetycznych. Najważniejsze dane są u producenta rezonatorów. Tym niemniej mam woreczek kondziołków 22p na podorędziu... ;)
    Pozdrawiam, Light'I
  • #11 1409888
    WaWrzOL
    VIP Zasłużony dla elektroda
    Posty: 235
    Pomógł: 19
    Ocena: 23
    Dzieki. Jednak winne byly fusebity :wink: Ustawilem na 1111:1111 w Bascomie i jest okej.

Podsumowanie tematu

✨ Problem dotyczył braku komunikacji mikrokontrolera ATmega16 z komputerem przez RS232 przy taktowaniu kwarcem 16 MHz oraz błędów przy 8 MHz, pisany w Bascomie. Przyczyną były nieprawidłowo ustawione fusebity, przez co mikrokontroler pracował na wewnętrznym rezonatorze 1 MHz, co powodowało wydłużenie odmierzanych czasów i błędną transmisję. Zalecano sprawdzenie i poprawne ustawienie fusebitów na zewnętrzny rezonator kwarcowy wysokiej częstotliwości oraz dobranie odpowiednich kondensatorów (12-22 pF) do kwarcu. Wskazano także konieczność ustawienia w Bascomie parametrów takich jak $crystal, $baud oraz $regfile, aby zapewnić poprawną konfigurację transmisji szeregowej. Poprawiono także błąd w kodzie programu (zamiast X=X=1 powinno być incr X). Po ustawieniu fusebitów na zewnętrzny rezonator i poprawnej konfiguracji program działał poprawnie.
Wygenerowane przez model językowy.
REKLAMA