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

[Bascom][Atmega8] Sprzętowy uart - zła wartość zmiennej

simoneus1 13 Sie 2009 22:28 2646 6
REKLAMA
  • #1 6890786
    simoneus1
    Poziom 16  
    Witam
    Połączyłem dwie atmega8 razem ze sobą poprzez uart'a. W programie pierwszego procesora jest wpisana stała wartość do zmiennej. Zmienna ta jest wysyłana przez uart'a do drugiego procesora i wyświetlana na lcd 16x1.
    Problem polega na tym, że w czasie przesyłania tej zmiennej dodane są do niej jakieś bity, i na wyświetlaczu przed wartością zmiennej mam jakieś dziwne krzaczki, które nie występują nawet w ascii.
    W czym tkwi problem ??

    Serdecznie pozdrawiam simoneus
  • REKLAMA
  • #2 6890932
    m.bartczak
    Poziom 16  
    Mógłbym prosić choćby o kod?

    ... łatwiej ocenić.

    O schemacie już nie wspominam :)
  • REKLAMA
  • #3 6890978
    simoneus1
    Poziom 16  
    Witam
    Oto kod
    nadajnik :
    
    $regfile = "M8def.dat"
    $baud = 9600
    Dim A As Word
    
    Do
    A = 1215
    Print A
    Lcd A
    Wait 1
    Cls
    
    Loop
    
    
    
    odbiornik:
    $regfile = "M8def.dat"
    $baud = 9600
    
    Dim A As String * 10
    
    Cls
    Lcd "start"
    Waitms 500
    Cls
    
    Do
    Input A
    
    Lcd A
    Waitms 500
    Cls                                                        
    
    Loop
    End
    


    schematu nie mam chęci na razie rysować bo jet już późno a mam ciężki dzień w pracy za sobą ale wygląda to tak, że tx nadajnika jest podłączony z rx odbiornika, wyświetlacz na pinach b atmegi.

    Dodałem znaczniki [code] - proszę stosować w przyszłości.
    [zumek]
  • REKLAMA
  • #4 6891029
    mirekk36
    Poziom 42  
    no bardzo ciekawe połączenie - wysyłasz zmienną typu Word - za pomocą zwykłego PRINT (poczytaj sobie w helpie n/t PRINT) ... a na dodatek oczekujesz po drugiej stronie zmiennej typu STRING - i dziwisz się, że dostajesz "krzaczki" - to wcale nie dziwne - to prawidłowe zachowanie w przypadku takiego błędu programisty.

    poza tym nie masz określonego taktowania procka za pomocą dyrektywy $crystal - więc w grę jeszcze dodatkowo może wchodzić problem z prędkością 9600bps - tym bardziej jeszcze - jeśli nie przeprogramowałeś fusebitów w procku? (być może?)
  • REKLAMA
  • #5 6891105
    simoneus1
    Poziom 16  
    Witam
    Pierwsze co mi przyszło na myśl to właśnie zadeklarowane zmienne, ale tylko zmienna zadeklarowana jako string odbierze mi tą wartość. Co do $crystal to używam wewnętrznego zegara takowania. A co do krzaczków to nie jest dokładnie tak, że mam całość odbierana jako krzaczki tylko jeden znak a potem jest moja wartość taka, jaka jest zapisana w programie nadajnika.

    Pozdrawiam simoneus
  • #7 6893109
    simoneus1
    Poziom 16  
    Witam
    Dziękuje działa. Człowiek cały czas się uczy :D

    Serdecznie pozdrawiam simoneus
REKLAMA