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

[AVR] Atmega 8 - sterowanie diodami przez Java, problem z konkretnymi wartościami

eivon 09 Lip 2012 20:57 1527 10
REKLAMA
  • #1 11088131
    eivon
    Poziom 9  
    Witam,
    proszę o pomoc. Chcę wysłać jeden bajt do mojego układu, w którym na porcie C są podpięte diody i włączają się przy 1 a wyłączają przy 0. Chce stan tych diod ustalać z poziomu komputera (piszę w javie). Coś tam na pewno działa ponieważ widzę reakcję na przerwanie (jak cokolwiek przesyłam z aplikacji i w ISR(USART_RXC_vect) nakazuję zmianę stanu diod to diody się zmieniają - póki co wszystkie). Chcę ustalić konkretne wartości

    FRAGMENT JAVY
    Kod: Java
    Zaloguj się, aby zobaczyć kod


    AVR w C
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 11088332
    krru
    Poziom 33  
    Wysyłaj coś innego niż FF to będziesz zapalał rożne kombinacje LEDów.
  • REKLAMA
  • #3 11088735
    eivon
    Poziom 9  
    wiem ....
    czekam na inne pomysły,
    pozdrawiam :)
  • REKLAMA
  • #4 11088946
    LordBlick
    VIP Zasłużony dla elektroda
    1. Powinieneś się zdecydować, albo obsługujesz odbiór w przerwaniu, albo w procedurze rec(). Obie metody na raz powodują, że procesor będzie wisiał cały czas w procedurze rec()(RXC będzie zawsze wyzerowane po wyjściu z przerwania),
    2. Następna sprawa - nie używa się już #include <avr/signal.h>, tym bardziej jednocześnie z #include <avr/interrupt.h>.
    3. #define F_CPU 8000000 w kodzie to nie jest też dobre - albo w Makefile, albo w ustawieniach projektu - zależnie od środowiska.

    Moja propozycja kodu:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #5 11089017
    eivon
    Poziom 9  
    Niestety to również mi nie działa, zastanawiam się czy to nie jest błąd po stronie javy.. Objaw jest taki, że diody się czasem zmieniają (gdy klikam non stop, opcję SEND w aplikacji mam pod przyciksiem i to dzięki niemu cały czas wysyłam ten bajt) i nie ma to żadnego związku z ustaloną wartością.

    1. czy jest coś dla windowsa dzięki czemu mogę obserwować bity pojawiające się na porcie COM? taki wireshark ale dla innego interfejsu..
    2. czy wszystko co potrzebne zostało włączone w inicjalizacji USART?
    3. może być też to problem z niedopasowaniem prędkości transmisji.. Sprawdzałem jednak w menedżerze urządzeń i wyglądało na OK ale jeszcze bliżej się też temu przyjrzę..
  • Pomocny post
    #6 11089110
    LordBlick
    VIP Zasłużony dla elektroda
    eivon napisał:
    1. czy jest coś dla windowsa dzięki czemu mogę obserwować bity pojawiające się na porcie COM? taki wireshark ale dla innego interfejsu..
    Bray'S Terminal, ale blokuje port, ma możliwość wysyłania.
    eivon napisał:
    3. może być też to problem z niedopasowaniem prędkości transmisji.. Sprawdzałem jednak w menedżerze urządzeń i wyglądało na OK ale jeszcze bliżej się też temu przyjrzę..
    Każdy program w WinAPI powinien wypełniać odpowiednią strukturę z tego co pamiętam DCB i funkcje GetComState/SetComState (aż musiałem zerknąć do własnych źródełek sprzed 6 lat ;) )
    Po stronie mikrokontrolera rozumiem, ze masz pewność co do tych 8MHz ? Bo fabrycznie jest 1MHz, co daje mały błąd tylko przy niedużym BAUD...
  • #7 11089252
    Jacek_paw
    Poziom 16  
    eivon napisał:

    1. czy jest coś dla windowsa dzięki czemu mogę obserwować bity pojawiające się na porcie COM? taki wireshark ale dla innego interfejsu..


    Taki program istnieje, nazywa się: "Free Serial Port Monitor"

    Co do Twojego problemu to sprawdź czy przypadkiem komputer po wysłaniu Twojego bajtu nie dokłada na końcu jeszcze któregoś, albo obu znaków końca linii (LF,CR).
  • #8 11089304
    kuba1im
    Poziom 19  
    Pamiętaj również o tym, że transmisja odbywa się w kodzie ASCII. Możliwe, że to co otrzymujesz to prawidłowe wartości tylko Ty spodziewasz się otrzymać coś zupełnie innego.
  • #9 11090089
    xdf0r
    Poziom 13  
    A ja mam pytanie, mianowicie jakiej biblioteki używasz do obsługi rs232 w javie?
  • #10 11223226
    eivon
    Poziom 9  
    Witam,
    dla potomnych: układ działa, komunikacja jest, bity są odbierane i interpretowane prawidłowo.

    Kod poprawiony przez LordBlicka jest oczywiście OK..

    Powiem krótko: ZMIENIAĆ BAUD W SYSTEMIE NA MINIMUM W TAKICH PRZYPADKACH :)

    Używam biblioteki RXTX

    Pozdrawiam
  • Pomocny post
    #11 11223552
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA