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

ATtiny2313 - problem z komunikacją szeregową przy 9600 baud, kwarc 4MHz

Daniel Kociniewski 06 Maj 2006 14:49 1586 8
REKLAMA
  • #1 2598234
    Daniel Kociniewski
    Poziom 16  
    Posty: 250
    Ocena: 6
    Witam,

    Problem pojawił sie gdy zmuszony zostałem do zmiany procka z AT90S2313 na ATtiny2313. Ogólnie wszystko sie wydaje wporządku BASCOM wykrywa procka i go programuje.

    Nie działa jednak jak powinno odbieranie z procka znaków ASCII. Na starym procku uzywałem następujących parametrów transmisji BAUD9600 8 N 1. Przy takich ustawieniach RS-a otrzymuje krzaki.

    Dopiero zmiana prędkości na 2400 sprawia, że otrzymuje właściwy tekst. Jednakże koniecznie potrzebuje transmisji z prędkością 9600. Używam kwarcu 4Mhz. Jestem raczkujący jeśli chodzi o AVR-y i nie dawno rozpocząłem z nimi zabawę. Nie wiem co jest nie tak, czy jest to wina kwarcu ?

    Z góry dziękuje za pomoc.
  • REKLAMA
  • #2 2598293
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Zapewne tak bo domyślnie (po zxakpie) procek chodzi na wewnątrznym oscylatorze RC.
    Ustaw odpowiednie fusyebity i powinno byc po problemie. Dla pewności zrób mały uklad co miga ledem co 1s i bedziesz wiedział jak chodzi. Jeśli czasy bedą inne to wiesz ze to wina zegara.
  • REKLAMA
  • #3 2598568
    Daniel Kociniewski
    Poziom 16  
    Posty: 250
    Ocena: 6
    Dobra, zrobiłem jak mówiłeś, ustawiłem na external clock, zaprogramowałem . No i lipa, nie wykrywa mi teraz procka ;(. Rozwaliłem go?
  • #4 2598701
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Podłącz zewnetrzny generator pod XTAL1 i jeszcze inaczej zaprogramuj... ;) External Clock to zewnętrzny sygnał taktujący. Pewnie External Cristal Oscilator jest tym, czego potrzebujesz...
  • #5 2598745
    Daniel Kociniewski
    Poziom 16  
    Posty: 250
    Ocena: 6
    Proszę wybaczyć ale jestem zielony w tym temacie :) Tzn. że zablokowałem jakoś procka ? :D Jeśli mam podłaczyć generator to o jakiej częstotliwości? Napięcie ma być standardzie TTL?
  • REKLAMA
  • Pomocny post
    #6 2598881
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Generator o częstotliwości takiej samej, jak w ustawieniach programatora. Tak, TTL. "Zablokowałem" to nienajszczęśliwszy termin, po prostu błędnie ustawiłeś zegar systemowy na zewnętrzne źródło taktowania. Nie byłoby problemu, gdybyś był po lekturze noty katalogowej... ;)
    http://www.atmel.com/dyn/products/datasheets.asp?family_id=607
  • REKLAMA
  • #7 2600237
    Daniel Kociniewski
    Poziom 16  
    Posty: 250
    Ocena: 6
    Dzięki!
    Pociągnąłem sygnał z kwarca z innej płytki z prockiem. No i faktycznie juz mi wykrywa procka i moge zaprogramować. Oczywiście przywróciłem fuse bity jak były na początku. Problem z tym, że później znów przestawia mi sie na external clock :d. Nie wiem czy to wina BASCOMA, bo dzieje się to chyba przy otwarciu pliku .BAS lub po ponownym uruchomieniu BASCOMA. Nie znalazłem nic w opcjach, ale wydaje mi sie, że jakoś "zapamietał" te bity. Być może jak włożę innego ATTina to bedzie podobnie, ale moim drugim prockiem jest AT90S213 a tam nie ma tych fusebitów :D
  • #8 2605228
    ZbeeGin
    Poziom 39  
    Posty: 4327
    Pomógł: 604
    Ocena: 461
    Jak w zakładce "Fuse Bits" kliknąłeś "Write PRG" to ustawienia zostały zapisane w pliku BAS. Zobacz czy w pierwszej linii dodała się dyrektywa $PROG.
  • #9 2606449
    Daniel Kociniewski
    Poziom 16  
    Posty: 250
    Ocena: 6
    Dzięki za pomoc, o to właśnie chodziło. Temat zamknięty.

Podsumowanie tematu

✨ Problem z komunikacją szeregową przy prędkości 9600 baud na mikrokontrolerze ATtiny2313 z kwarcem 4 MHz wynikał z nieprawidłowej konfiguracji fuse bitów dotyczących źródła taktowania. Domyślnie procesor pracuje na wewnętrznym oscylatorze RC, co powodowało błędne odbieranie danych (krzaki). Próba ustawienia fuse bitów na "External Clock" spowodowała brak wykrywania procesora przez programator, ponieważ wymaga to podłączenia zewnętrznego sygnału taktującego o odpowiedniej częstotliwości i poziomie TTL. Poprawnym rozwiązaniem jest ustawienie fuse bitów na "External Crystal Oscillator" i podłączenie kwarcu 4 MHz. Dodatkowo, w BASCOM fuse bity mogą być zapisywane w pliku projektu (.BAS) poprzez dyrektywę $PROG, co powodowało automatyczną zmianę ustawień przy otwieraniu pliku lub ponownym uruchomieniu środowiska. Po poprawnym ustawieniu fuse bitów i konfiguracji kwarcu problem z transmisją 9600 baud został rozwiązany.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA