Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[BASCOM][AVR] Przesyłanie zmiennej typu Byte

piotrek700 02 Jun 2009 22:20 2288 10
  • #1
    piotrek700
    Level 13  
    Ten temat był juz poruszany tysiące razy ale nie mogłem znaleźć nic co by mi odpowiadało i pomogło rozwiązać mój problem. Ale przejdźmy do rzeczy: Chodzi oto żeby jeden kontroler wysyłał zmienną typu Byte (lub jakiejkolwiek innej zmiennej oprócz BIT) a drugi ją odbierał , przypisywał wartość odebranej zmiennej jakiejś innej zmiennej w swoim programie i żeby ta czynność stale się powtarzała. Chodzi o jak najprostszy sposób wykonania takiego manewru. Czy ktoś mógł by mi napisać, lub podesłać, przykład fragmentu kodu dla układu nadawczego i odbierającego?
  • #2
    dawid512
    Level 32  
    Masz do dyspozycji UART, 1WIRE, I2C, SPI. Polecam UART, 2 linie sygnałowe i masa. Przykład znajdziesz w helpie.
  • #3
    piotrek700
    Level 13  
    Wziąłem sie za Uart ale cos mi nie wychodzi. Chce przesłać zmienna "Licznik_1" do układu odbiorczego i przypisać ją zmiennej "Licznik" ale nie działa. Czy fus CKDIV 8 ma być włączony, czy kwarce w obu układach musza pracować z tą samą częstotliwością? Oczywiście masy układów połączone i TDX-->RDX

    Quote:

    Układ nadawczy
    $crystal = 12000000
    $baud = 9600

    Config Portd = Output
    Portd = &B0000000

    Dim Licznik_1 As Byte
    Enable Interrupts

    Do

    Print Licznik_1
    Waitms 1

    Loop


    Quote:
    Odbiornik:

    $crystal = 12000000
    $baud = 9600
    Config Portd = Input
    Portd = &B0000000

    Dim Zliczanie As Byte

    Do

    Inputbin Licznik_1
    Waitms 1

    Loop
  • #4
    dawid512
    Level 32  
    W programach brakuje deklaracji jakiego uc używasz. Dobrze byłoby gdyby zegar w jednym i drugim uc był taki sam. Grzebałeś w fuse bitach?
  • #5
    piotrek700
    Level 13  
    Przestawiłem tylko na zewnętrzy oscylator, dzielnik CKDIV 8 -wyłączony. Mógł byś mi napisać przykład jak to poprawić żeby działało?
  • #6
    dawid512
    Level 32  
    Najpierw napisz mi z jakich uc korzystasz oraz jak ustawiłeś fuse bity.
  • #8
    dawid512
    Level 32  
    Łączysz:
    TX uc1 do RX uc2
    RX uc1 do TX uc2
    oraz dajesz wspólną masę.
    Napisz porządnie program nie zapominając o deklaracji jakiego uc używasz.
  • #9
    piotrek700
    Level 13  
    Zrobiłem wszystko tak jak napisałeś, zadeklarowałem uC i połączyłem wszystko jak ma być i dalej nic. Zmieniałem funkcje inputbin na input i to samo.
  • #11
    piotrek700
    Level 13  
    Błąd znajdował się w kodzie programu. Teraz działa. Dzięki za pomoc.