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][mega32] Transmisja 2xm32 UART Brak komunikacji

krzysztofo 05 Kwi 2011 20:01 1685 9
REKLAMA
  • #1 9364473
    krzysztofo
    Poziom 11  
    Witam.

    Od kilku dni próbuję uruchomić komunikację pomiędzy dwoma atmegami. Do tego celu wykorzystałem kilka sposobów przesyłu, ale żaden nie był skuteczny.

    Ciekawi mnie co robię nie tak... ok powoli nawet irytuje.
    Mam wrażenie, że coś pominąłem...

    Atmegi są ustawione na 8MHz lfuse - 0xe4 , hfuse - 0xD9
    pind.0 (rx) pierwszego do pind.1 (tx) drugiego
    pind.1 (tx) pierwszego do pind.0 (rx) drugiego

    przykładowy program, który wg forumowiczów działa (niestety u mnie brak reakcji, tak jakby zatrzymywał się na input):

    nadajnik:
    
    $regfile = "m32def.dat"                                     
    $crystal = 8000000                                         
    
    $lib "glcdKS108.lib"
    
    Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 5 , Ce2 = 4 , Cd = 1 , Rd = 2 , Reset = 3 , Enable = 0
    Setfont Font8x8
    Cls
    
    $baud = 1200
    Config Serialin = Buffered , Size = 20
    Config Serialout = Buffered , Size = 20
    Enable Interrupts
    
    Dim A As Single
    Dim A1 As String * 6
    A = 123
    
    
    Dim S As Byte
    Dim S1 As String * 3
    S = 1
    
    
    Do
       For S = 1 To 25
    
          S1 = Str(s)
          A1 = Str(a)
    
          Print S1 ; Chr(13);
          Print A1 ; Chr(13);
    
          Lcdat 1 , 1 , "wy " ; A1
          Lcdat 2 , 1 , "wy " ; S1
    
          Wait 1
    
       Next S
    
    Loop
    
    End
    
    '**** BIBLIOTEKI ***************
    
    $include "font8x8.font"
    


    odbiornik:
    
    $regfile = "m32def.dat"                                    
    $crystal = 8000000                                         
    
    $lib "glcdKS108.lib"
    
    Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 5 , Ce2 = 4 , Cd = 1 , Rd = 2 , Reset = 3 , Enable = 0
    Setfont Font8x8
    
    $baud = 1200
    
    Config Serialout = Buffered , Size = 20
    Config Serialin = Buffered , Size = 100
    
    Enable Interrupts
    
    Dim X As Byte
    Dim A As Single
    Dim A1 As String * 6
    Dim S As Byte
    Dim S1 As String * 3
    
    Cls
    Lcdat 4 , 4 , "uruchomione"
    
    Do
    
       Input S1
       Input A1
    
       S = Val(s1)
       A = Val(a1)
    
       Lcdat 1 , 1 , "Od" ; S
       Lcdat 2 , 1 , "Od" ; A
       
       Incr X
       Lcdat 3 , 1 , X
    Loop
    
    End
    
    
    '**** BIBLIOTEKI ************
    
    $include "font8x8.font"
    


    Oprócz napisu "uruchomione" na wyświetlaczu nic się nie wyświetla.
    Niestety nie mam dostępu do oscyloskopu co bardzo by ułatwiło pracę. napięcie tx = 5v rx= ok 1v - wartości takie same na obydwu prockach.

    Z najciekawszych rad moich kolegów mogę wymienić "hmm podłącz zasilanie...". Podłączyłem - nie pomogło :)

    Proszę was o jakąkolwiek pomoc!

    Pozdrawiam
    Krzysztof
  • REKLAMA
  • #2 9364732
    Azonic_2006
    Poziom 17  
    Witam!!!
    Może głupie ale procki są zasilane z tego samego źródła czy różnych bo jak z różnych to musi być jeszcze masa między nimi.
    Pozdrawiam!!!
  • #3 9365317
    krzysztofo
    Poziom 11  
    Wszystko podłączone na makiecie z jednym źródłem zasilania...
  • REKLAMA
  • REKLAMA
  • #5 9366839
    krzysztofo
    Poziom 11  
    Niestety nie mam dostępu do portu szeregowego, więc nie mogę.

    Czy program teoretycznie powinien działać? czy procki dobrze mam ustawione? czy dobrze są podłączone? Czy jest coś o czym powinienem wiedzieć, a czego nie napisałem?
  • #6 9366884
    asembler
    Poziom 32  
    Ja bym podłaczył kwarce zamiast ustawiać na wewn.
    To nie wrózy powodzenia przy pierwszych próbach.
  • REKLAMA
  • #7 9368730
    krzysztofo
    Poziom 11  
    Niestety przejście na kwarce zewnętrzne nic nie zmieniło.

    Jak to możliwe, że u mnie nie działa taka prosta rzecz :(
  • #8 9368945
    asembler
    Poziom 32  
    Faktycznie też się dziwię. Kiedys dawno dawno temu tez walczyłemz podobnym problemem 100% sprawny program 100% sprawne procesory a okazało sie że mam pomylone kabelki
  • #9 9369388
    MaxX850
    Poziom 13  
    Tak dla testu tylko wywal Config Serialout w nadajniku. Miałem kiedyś taki dziwny przypadek - ustawiłem sobie bufor wyjściowy dla przesłania króciutkiej ramki, a w odbiorniku cisza. Bez bufora wyjściowego działało prawidłowo. Do dziś nie wiem co było przyczyną.
  • #10 9371507
    krzysztofo
    Poziom 11  
    Kurcze próbuję z różnymi programami, nawet procki wymieniłem i bez efektu.

    Ma ktoś może działający program oraz schemat połączenia? Wiem, że w połączeniu nie ma filozofii, ale możliwe, że nie widzę rzeczy oczywistych...

    ...................................................................

    Zaczęło działać!!! :) Pięknie działa, cudownie się na to patrzy :)

    A teraz ciekawostka co było przyczyną. Nie wiem dlaczego akurat tak, ale w nadajniku usunąłem wszystkie polecenia związane z wyświetlaczem i obecnie działa! Ma ktoś na to racjonalne wytłumaczenie?

    Dziękuję wszystkim za pomoc i pozdrawiam
    Krzysztof
REKLAMA