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

[BASCOM]Atmega8 + UART - Różne działanie AtMegi w zależności od Terminala

KropekPL 03 Wrz 2015 10:34 1092 6
  • #1 14967899
    KropekPL
    Poziom 2  
    Witam,

    Próbuje zrobić układ dzięki któremu przy pomocy komputera z portem szeregowym RS232 będe mógł sterować urządzeniami podłączonymi do zewnętrznego układu z mikroprocesorem AtMega8.

    Układ ma za zadanie odbierać komendy z PC w formacie #X.Y gdzie X - numer kanału, Y (1 - włącz, 0 - wyłącz) np #3.1 - Włącz kanał 3.

    Układ został już zmontowany. Póki co do portów C AtMega8 podpiąłem diody LED, w przyszłości będą to przekaźniki.

    Dodatkowo napisałem program w Delphi który w zależności od naciśniętego przycisku zapala wirtualną diodę LED na ekranie PC i powinien zapalać diodę LED na układzie zewnętrznym z mikroprocesorem. Tu powstaje problem. Układ odbiera komendę poleceniem INPUT i potwierdza otrzymanie komendy poprzez PRINT, natomiast zaświeca tylko jedną diodę. (reaguje na pierwszą przesłaną komendę) natomiast odbiera i zwraca wszystkie komendy.
    Żeby było zabawnie poprzez Terminal znajdujący się w BASCOMIE w przypadku wpisania z ręki poszczególnych komend układ działa bez zarzutu.
    Ostatnią kwestią jest terminal dołączony do AtmelStudio 6.2 który również odbiera wszystkie komendy i odsyła zwrotnie natomiast nie wykonuje tych komend (nie zapala żadnej diody)

    Kod wsadu do AtMega w Bascomie:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Program użytkowy w DELPHI:
    Kod: Delphi
    Zaloguj się, aby zobaczyć kod


    [BASCOM]Atmega8 + UART - Różne działanie AtMegi w zależności od Terminala

    Czy ktoś może podpowiedzieć o co chodzi i jak wybrnąć z tej sytuacji??

    Z góry dziękuje za pomoc.
  • #2 14968084
    piterek-23
    Poziom 33  
    Tak poza konkursem...
    to:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    wymień na:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    W Bascom masz 7x Led, a w Delphi masz 8x Led.
  • #3 14968162
    KropekPL
    Poziom 2  
    8 Diod w Delphi jest spowodowane tym, że program był przygotowany do portu PB (0 - 7) mikroprocesora gdzie początkowo przyłączyłem 8 diod. Problem polegał tam na tym, że diody podłączone do portu PB6 i PB7 gryzły się z zewnętrznym oscylatorem i UART się wieszał.

    Na tą chwile program w Delphi jest nadal na 8 diod jednak na układzie zewnętrznym diody są podłączone do portu PC (od 0 do 6). Układ testowałem na zewnętrznym oscylatorze jak i na wewnętrznym. W obu przypadkach Terminale działają różnie.
  • #4 14968180
    Konto nie istnieje
    Poziom 1  
  • #5 14968229
    KropekPL
    Poziom 2  
    Terminal wbudowany w Bascom, jak i Terminal napisany w Delphi jak i Terminal wbudowany w Atmel Studio są na tym samym komputerze. Wszystkie mają te same ustawienia:
    port COM1,
    prędkośc: 9600,
    bit parzystości: N,
    ilosc bitów: 8,
    bit stopu: 1

    Komunikacja między Terminalami a układem zewnętrznym jest wg mnie prawidłowa, bo w przypadku wszystkich terminali uzyskuje odpowiedz zwrotną o tej samej treści co wysłałem.
  • #7 14968389
    KropekPL
    Poziom 2  
    szczywronek. Dzięki za podpowiedz.

    Zmodyfikowałem w Delphi zwrot #13#10 na #13 i działa:)
    Pytanie czy #10 jest potrzebne. Czytałem w necie ze komenda INPUT ucina ten znak sterujący przez co jest on dołączany do dalszych komend. Czyli kolejna komenda wygląda następująco #10#2.1#13 zamiast #2.1#13#10.
REKLAMA