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

[atmega16l][bascom] komunikacja uart

wader_669 02 Lis 2008 17:56 1985 2
REKLAMA
  • #1 5694090
    wader_669
    Poziom 28  
    programuje w bascomie.
    Mam taki problem:
    Zrobilem ta przejsciowke https://www.elektroda.pl/rtvforum/topic827115.html dziala super.
    Do tej przejsciowki dolaczylem atmega16l i wyswietlacz od noki 3310. Problem jest taki, ze przy 8mhz wraca zle echo (wewnętrzny oscylator), pojawiaja sie krzaki na terminalu, za to na lcd wyswietla wszystko dobrze. Przy 12mhz (zewnetrzny) juz tego problemu nie ma predkosc transmisji (baud) wynosi 9600
    jak to naprawic, bo chcialem uzyc 8mhz ?

    (wyszukiwarka nie dziala)
  • REKLAMA
  • Pomocny post
    #2 5694772
    mirekk36
    Poziom 42  
    Pisząc 8MHz (wewnętrzny kwarc) miałeś chyba na myśli wewnętrzny oscylator ? tak? i że przy takiej konfiguracji szwankuje ci ATmega16 ????

    Jeśli tak to mogę się podzielić moimi spostrzeżeniami. Otóż nie wiedzieć czemu też często a w zasadzie zawsze gdy biorę Atmega16 na wewn oscylatorze 8MHz to na 9600 nie chce mi działać zbyt dobrze podczas gdy ATmega8 zwykle zawsze mi działa od razu bez najmniejszego problemu.

    Również gdy do ATmega16 podłączałem zewnętrzny kwarc obojętnie jaki nawet 8MHz to już wszystko było dobrze. Szybko doszedłem do wniosku że cała wina leży w moich ATmegach16 a dokładniej mówiąc w tym iż trzeba było bardziej je skalibrować - tym jednym bajtem do kalibracji oscylatora wewn. Można to zrobić spokojnie programowo i wtedy ładnie śmiga na 8MHz wewn oscylator.

    można sobie to takim prostym programikiem w Bascomie sprawdzić, tzn sprawdzić przy jakiej wartości bajtu kalibracyjnego zaczyna dobrze działać transmisja RS232 no i taką później ustawiać za pomocą polecenia, np:

    Osccal = 188  


    a wcześniej sprawdzić w ten sposób:

    Do
      Osccal = Osccal + 1
      Print "halo ;) mega16 " ; Osccal
      Waitms 300
    Loop


    ta pętla powoduje że co powiedzmy 300ms zwiększa wartość tegoż bajtu i wysyła na RS232 powyższy tekst oraz wartość bajtu Osccal. Gdy wartość bajtu będzie na początku zła to w terminalu będą pojawiały ci się krzaki przy transmisji ale kiedy będzie już prawidłowa to pojawi się ładnie napis oraz kilka prawidłowych eartości przy których będzie go widać. Wtedy wybierz tę środkową i ustawiaj ją zawsze przy starcie programu.

    od czasu gdy to sprawdziłem to często stosuję gdy mam właśnie taki problem z prockiem na wewn oscylatorze
  • #3 5695513
    wader_669
    Poziom 28  
    poprawilem blad (tak na marginesie napisalem wewnetrzny oscylator :P )
    zastanawia mnie jedynie dlaczego jak kumpel wpadl z kodem napisanym w c dzialalo wszystko super na wewnetrznym rezonatorze.

    dzieki za pomoc
    _________________________________

    wiesz co jest smieszne ze przy 3,3V dziala wszystko super a przy 5V juz nie
REKLAMA