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

Komunikacja Uart Bascom - problem

Kwiatek88 11 Sty 2009 11:26 2717 7
  • #1 5981433
    Kwiatek88
    Poziom 12  
    Witam

    Mam problem z komunikacją pomiędzy dwoma mikrokontrolerami Atmega8. Chciałbym między nimi przesyłać dane a dokładnie jedną zmienną pochodzącą z mojego dalmierza ultradzwiękowego do mikroprocesora obsługującego sterowanie robotem.
    Byłbym wdzięczny jesli otrzymałbym propozycję działającego programu nadawania i odbioru. Moje próby niepowiodły się używałem instrukcji Print oraz waitkey, inkey i wysyłana zmienna była odbierana z błędami lub była zupełnie inną liczbą. Programuje oczywiście w Bascomie.

    Dziękuje za odpowiedzi
  • #2 5981828
    dawid512
    Poziom 32  
    Pracujesz na wew. oscylatorze czy na zew. kwarcu? Jeśli na oscylatorze to pewnie dla tego masz błąd. Jest on niedokladny i trzeba go kalibrować. Pokaż kawałek kodu oraz schemat.
  • #3 5981890
    Kwiatek88
    Poziom 12  
    Pracuje w obu przypadkach na zewnętrznym kwarcu 8 MHz. Jeden mikrokontroler narazie ma podpięty tylko przewód wyjścia Uart TX który idzie bezpośrednio do drugiego mikrokontrolera na wejście czyli RX w tym natomiast dodany jest jeszcze wyświetlacz LCD do podglądu. Konfiguracja ustawiona jest w Bascomie w opcjach Rs232. Prędkość 4800.

    Wyczytałem na forum że funkcja print wysyła tex a nie zmienne.
    Ja natomiast chciałbym przesłać watrość jednej z miennej do drugiego mikroprocesora. Jak powinienenem to zrobić aby nadać i odczytać wartości. Swego kodu niechciałbym podawać żeby nie sugerować błędów.
  • #4 5982331
    dawid512
    Poziom 32  
    Cytat:
    Wyczytałem na forum że funkcja print wysyła tex a nie zmienne.
    Wysyła i jedno i drugie :)

    Mam nadzieję że masa jednego uc i drugiego jest wspólna bo inaczej będą błędy. Po za tym podłącz przewody do obydwu linii.
  • #5 5982711
    wader_669
    Poziom 28  
    a te 2 uc maja takie samo napiecie zasilania ?
  • #6 5984923
    Kwiatek88
    Poziom 12  
    Obie linie są podłączone, napięcie zasilania jest takie same (układ robie na jednej uniwersalnej płytce stykowej
    Może ktos wie jak powinny być skonfigurowane porty uart ???
    Ja próbowałem różnych sposobów ale nie pomaga, jakas komunikacja jest ale pojawia się kawałek tekstu, liczby bądz zmiennej ale nic kompletnego.
    Poniżej podaje kod programów.

    Nadawanie:

    $crystal = 8000000

    Ddrb = &B11111111
    Ddrd = &B11111110


    'Portb = &B11111111
    'Portd = &B11111111


    Dim I As Byte , Odleglosc As Word ,
    Dim Mybaud As Long
    Dim S As Word

    $baud = 4800
    Enable Interrupts

    Do

    Waitms 500
    Print 125


    Loop
    End



    Odbiór:

    $crystal = 8000000

    Ddrb = &B11111111
    Ddrd = &B11111110
    'Portb = &B11111111
    'Portd = &B11111111

    Echo Off

    $baud = 4800
    Enable Interrupts
    Dim Odebrane As Word
    Cls
    Lcd "witam"
    Waitms 500

    Do

    Odebrane = Waitkey()
    Cls
    Lcd "odebrano " ; Odebrane
    Waitms 500

    Loop
    end



    Jesli macie jakieś sprawdzone programy z poprawna konfiguracją to bardzo bym prosił o umieszczenie.
  • #7 5984970
    dawid512
    Poziom 32  
    Po co uruchamiasz przerwania skoro z nich nie korzystasz? Po za tym na pewno zmieniałeś fuse bity czy tylko podłączyłeś te kwarce? Sprawdź PCB.
  • #8 5985800
    Kwiatek88
    Poziom 12  
    Fuse bity napewno zmieniłem. Po wyjęciu kwarcu mikroprocesory przestają działać. Aż takim lamerem nie jestem wkońcu kilka dni temu zrobiłem Ultradzwiękowy dalmierz odległości i dodam że działa. zakres działania 12 - 250 cm.

    Dodano po 2 [minuty]:

    A przerwania są włączone ponieważ gdzies na forum znalazłem kawałek programu w którym było wykorzystywane przerwanieod uart.

    Niestety dalej nie wiem jak się skomunikować między mikroprocesorami. :(
REKLAMA