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] Przesyłanie zmiennych po RSie między dwoma uP.

mdcs 30 Lip 2008 01:00 2144 8
REKLAMA
  • #1 5390616
    mdcs
    VIP Zasłużony dla elektroda
    Witam...
    Przyznaję na wstępie - mam zaćmienie umysłu (nowa dziewczyna) i morduję się cały wieczór z pewnym problemem. Zapewne jedna podpowiedź, któregoś z doświadczonych "kontrolerowców" rozwiąże mój problem.

    Nadaję do magistrali RS487 ciąg zmiennych typu Byte następującym algorytmem:

    Config Portd.2 = Output
    Config Serialin = Buffered , Size = 15
    
    Kierunek Alias Portd.2
    Dim Dane1 As Byte , Dane2 As Byte , Dane3 As Byte
    Enable Interrupts
    
    Set Kierunek
    Cursor Off
    Dane1 = 1
    Dane2 = 136
    Dane3 = 3
    Lcd Dane1 ; "," ; Dane2 ; "," ; Dane3
    Do
    Printbin Dane1 ; Dane2 ; Dane3
    Wait 4
    Loop


    Jak to po drugiej stronie (na drugiej Atmedze z MAXem487) odebrać, żeby pod zmiennymi Dane1, Dane2 i Dane3 (również typu Byte) mieć przesłane wartości?
    Jak zczytuję jako String, jest ok...ale inaczej nie idzie.
    Próbuję takim kodem:

    Config Pind.2 = Output
    Config Serialin = Buffered , Size = 15
    
    Dim Dane1 As Byte , Dane2 As Byte , Dane3 As Byte
    
    Kierunek Alias Portd.2
    
    Enable Interrupts
    
    Cls
    Reset Kierunek
    Do
    Inputbin Dane1 , Dane2 , Dane3
    Lcd Dane1 , Dane2 , Dane 3
    Wait 2
    Loop
    
    Próbuję takim 
  • REKLAMA
  • #2 5390796
    n01x
    Poziom 12  
    Czemu w nadajniku komfigurujesz bufor wejsciowy?
    Po co wogole to konfigurujesz?
  • #3 5393740
    ZbeeGin
    Poziom 39  
    n01x napisał:
    Czemu w nadajniku komfigurujesz bufor wejsciowy?
    Po co wogole to konfigurujesz?

    Kolega mógł po prostu się pomylić, i zamiast CONFIG SERIALOUT napisał CONFIG SERIALIN. Przy wolnych prędkościach transmisji lub przy wolnym zegarze kontrolera tak jest nieco lepiej.
  • REKLAMA
  • #4 5394812
    Freddy
    Poziom 43  
    ZbeeGin napisał:
    n01x napisał:
    Czemu w nadajniku komfigurujesz bufor wejsciowy?
    Po co wogole to konfigurujesz?

    Kolega mógł po prostu się pomylić, i zamiast CONFIG SERIALOUT napisał CONFIG SERIALIN. Przy wolnych prędkościach transmisji lub przy wolnym zegarze kontrolera tak jest nieco lepiej.

    Kolega napisał prezecież:mam zaćmienie umysłu (nowa dziewczyna)
    Zamiast się zająć nową dziewczyną, zajmuje się ATMegą :D

    Zwróć uwagę, że w programie wysyłającym masz wait 4, a w odbierającym Wait 2. Tutaj może byc problem.
  • REKLAMA
  • #5 5398797
    mdcs
    VIP Zasłużony dla elektroda
    wait 2 i wait 4 to nie problem... czytnik odczytuje przesłane do bufora dane po prostu dwa razy częściej jak nadaje je nadajnik
    Szanowni Koledzy - ja nie mam problemu z transmisją, czy błędami. Przeczytajcie uważnie to o czym piszę. Dane dochodzą, ale nie wiem jak je pozapisywać z powrotem w zmiennych Dane1, Dane2 i Dane3. Jeśli wyświetlę na LCD odbiornika to co dotarło instrukcją INPUT Dane (gdzie Dane to zmienna typu string) otrzymam poprawny wynik , czyli 11363... ale jak próbuję wrzucić te dane pod zmienne Dane1, Dane2, Dane3 instrukcją 'Printbin Dane1 ; Dane2 ; Dane3' to uzyskuję w nich inen wartości niż wysłane 1 136 i 3.
  • #6 5399071
    zumek
    Poziom 39  
    mdcs napisał:
    ... to uzyskuję w nich inen wartości niż wysłane 1 136 i 3.

    A co dokładnie oznacza "inne wartości" :?:
    Jakie wartości mają zmienne Dana1,... ,itd , w odbiorniku :?:
    Czy zawsze są jednakowe :?:


    Jak w nadajniku masz
    
    Lcd Dane1 ; "," ; Dane2 ; "," ; Dane3
    Do
    Printbin Dane1 ; Dane2 ; Dane3
    '...
    

    , to w odbiorniku daj
    
    Do
    Inputbin Dane1 , Dane2 , Dane3
    'Lcd Dane1 , Dane2 , Dane 3                   'Co to za dziwna składnia ???????
    Lcd Dane1 ; "," ; Dane2 ; "," ; Dane3
    '...
    

    i napisz co z tego wyniknęło ;)

    Piotrek
  • Pomocny post
    #7 5404083
    Stepel
    Poziom 20  
    czy nie potrzebna jest tutaj instrukcja INKEY() ?

    swojego czasu zrobiłem taki układ , że dwa procki atmega8535 przesyłały między sobą zmienną. program zajął dosłownie 3,4 linijki w odbiorczym użyłem instrukcji inkey() tzn , jeżeli było coś w buforze(różne od 0 ) to wyświetlało daną. oczywiście czasy w realizacji pętli były takie same oraz kwarce również ( 11,0592 MHz). Wysyłanie oczywiście za pomocą print a odbiór input. Nie wiem czy ma znaczenie, że to było przy RS232.
  • REKLAMA
  • #8 5404525
    Freddy
    Poziom 43  
    Fakt mdcs mnie też troszkę przymuliło, ale nauczony przykrym, choć skąpym doświadczeniem wolę się czepiać do wszystkiego.

    Podam prosty, choć szokujący przykład.

    
    b=10 : a=a/3 : waitus25
    


    to wcale nie jest to samo co
    
    b=10 
    a=a/3  
    waitus25
    
  • #9 5411167
    mdcs
    VIP Zasłużony dla elektroda
    Dzięki Koledzy...problem rozkminiony. Napisanie nowej procedurki z trzema inkeyami podstawiającymi pod kolejne zmienne poszczególne znaki z bufora rozwiązało problem.
REKLAMA