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

amega8L [bascom] problem z print

cezary1986 20 Lis 2009 13:56 1434 10
REKLAMA
  • #1 7285530
    cezary1986
    Poziom 10  
    Witam
    Mam problem z transmisją uC -> PC przez rs232. Problem polega na tym, że zamiast wartości wpisanych do zmiennych odbieram litery. Ustawienia portu com1, terminala i uC są zgodne. Według data sheeta uC przy transmisji danych 38400bps i taktowaniu 8Mhz błąd wynosi 0,2%. Poza tym sprawdzałem inne prędkości transmisji i efekt wciąż ten sam :/ Komputer z uC jest połączony poprzez max3232, połączenia są w porządku.

    Docelowo program będzie przesyłał wartości 3 zmiennych, oto fragment kodu odpowiedzialny za transmisję rs232 oraz wydruk z terminala:
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 38400
    Config Pinb.1 = Output
    Dim X As Byte
    X = 11
    Dim Y As Byte
    Y = 203
    Dim K As Bit
    K = 1
    
    Do
    Print X
    Waitus 30
    Print Y
    Waitus 30
    Print K
    Waitms 100
    Loop
    End
    


    amega8L [bascom] problem z print

    Proszę o pomoc...
  • REKLAMA
  • #2 7285554
    dawid512
    Poziom 32  
    Spróbuj printbin.
  • REKLAMA
  • #3 7285576
    cezary1986
    Poziom 10  
    z print bin(x) cały czas to samo, miesza jedynki i zera razem z literkami p i q
  • #4 7285690
    dawid512
    Poziom 32  
    Fuse bity ustawione na 8MHz? Kwarc zewnętrzny?
  • #5 7285698
    cezary1986
    Poziom 10  
    Fuse bity przestawione na 8MHz, kwarc wewnętrzny. Mam innego max3232 i inną atmege, sprawdzę też inny port com

    Dodano po 30 [minuty]:

    Problem rozwiązany, wszystkie układy były w porządku. Powodem było zbyt niskie napięcie mikrokontrolera. Pracuję na atmega8L, która wg data sheeta powinna pracować od 2,7V, a nie dawała sobie rady z samą komendą print przy 3,03V (mierzone podczas pracy). Od 3,3V wszystko działa jak należy :)
  • REKLAMA
  • #6 7286014
    Logan
    Poziom 30  
    cezary1986 napisał:
    Fuse bity przestawione na 8MHz, kwarc wewnętrzny. (...)


    Chyba zewnętrzny.
  • #7 7286138
    cezary1986
    Poziom 10  
    Logan napisał:
    cezary1986 napisał:
    Fuse bity przestawione na 8MHz, kwarc wewnętrzny. (...)


    Chyba zewnętrzny.


    Fuse bity przestawione z fabrycznego 1MHz na 8MHz, z zewnętrznego kwarcu nie korzystam, wcześniej źle się wyraziłem, korzystam z wewnętrznego oscylatora.
  • #8 7287197
    Logan
    Poziom 30  
    Atmega8 posiada wewnętrzny oscylator RC 1MHz, a nie 8MHz. Jeśli się myle to proszę mnie poprawić.
  • REKLAMA
  • #9 7287430
    Konto nie istnieje
    Poziom 1  
  • #10 7290875
    xury
    Specjalista automatyka domowa
    cezary1986 napisał:
    Fuse bity przestawione na 8MHz, kwarc wewnętrzny. Mam innego max3232 i inną atmege, sprawdzę też inny port com

    Dodano po 30 [minuty]:

    Problem rozwiązany, wszystkie układy były w porządku. Powodem było zbyt niskie napięcie mikrokontrolera. Pracuję na atmega8L, która wg data sheeta powinna pracować od 2,7V, a nie dawała sobie rady z samą komendą print przy 3,03V (mierzone podczas pracy). Od 3,3V wszystko działa jak należy :)

    Tak na oko to wydaje mi się, że to problem był po stronie Max 3232. Tak z ciekawości zasilałeś go z tego samego źródła co Atmegę ?
  • #11 7301333
    cezary1986
    Poziom 10  
    Układ max3232 zasilam z tego samego źródła co atmegę.
    Bardzo możliwe że to wina maxa. Nie jestem pewny ale przy 3V powinien pracować z innymi kondensatorami niż 0,1uF, które dobierałem na napięcie 3,3V.
REKLAMA