Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Bascom][Attiny2313] - PWM sterowany z Terminala RS-232

wabikboy 23 Lip 2012 22:07 2405 25
  • #1 23 Lip 2012 22:07
    wabikboy
    Poziom 16  

    Witam!

    Znalazłem na tym portalu trochę informacji na temat pwm i rs232 dla Attiny2313 ale za nic nie mogę znaleźć jak to połączyć
    kod od pwm:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    prosił bym o pomoc w kwestii modyfikacji w/w kodu aby pwm było ustawiane z konsoli przez rs232, tzn chodzi mi o proste przesyłanie danych do uC w postaci np: pwm3 128, lub pwm2 64. może jest to proste ale ja nie wiem jak to ugryźć a zabawę z programowaniem uC dopiero zaczynam i możliwe że jest to na start za ambitny projekt ale bardzo jest mi potrzebny taki układzik.

    0 25
  • #3 24 Lip 2012 13:29
    wabikboy
    Poziom 16  

    Dziękuje za zainteresowanie tematem.

    Oczywiście rozumiem że trzeba uruchomić komunikację z tym że potrzebuje wiedzieć jak połączyć informacje odbierane z rs232 z pwm a dokładnie aby wyglądało np tak: z konsoli wysyłam teks - pwm1 128 i port pwm 1 ma ustawić się na 128, lub coś w tym stylu :)

    0
  • #4 24 Lip 2012 15:59
    xamrex
    Poziom 28  

    No to, to co odbierzesz z RS'a wstawiasz do zmiennej, np dane i potem
    Pwm1a=dane

    Wszystko jest w helpie!
    Rzuć okiem na polecenie input!

    0
  • #5 24 Lip 2012 17:19
    wabikboy
    Poziom 16  

    Staram się coś działać lecz na chwile obecna jest to tylko teoria a kod wygląda tak:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Prosił bym o info czy to zadziała tak jak oczekuje?

    0
  • #6 24 Lip 2012 18:56
    xamrex
    Poziom 28  

    wabikboy napisał:
    Prosił bym o info czy to zadziała tak jak oczekuje?

    Nie

    Poczytaj! wszystko masz w helpie!
    Tu nie podajemy gotowych kodów!

    0
  • #8 24 Lip 2012 20:40
    wabikboy
    Poziom 16  

    arktik1 napisał:
    Przejdź do #2.


    nie rozumiem.

    wiem że marudze ale to co dla was jest jasne dla mnie niestety nie, więc prosił bym chociaż o kawałek kodu który odpowiada za odbiór danych z rs232, kombinuje z samplem z bascoma serin_out.bas ale coś lipa :/

    0
  • #11 25 Lip 2012 02:02
    wabikboy
    Poziom 16  

    Jedna zasadnicza kwestia. Czy ten uC może być podpięty bezpośrednio do portu rs232, bo aktualnie podpiołem go pod 2 i 3 pin i 5

    0
  • #12 25 Lip 2012 08:46
    xamrex
    Poziom 28  

    http://pl.wikipedia.org/wiki/RS-232

    Cytat:
    Specyfikacja napięcia definiuje "1" logiczną jako napięcie -3V do -15V, zaś "0" to napięcie +3V do +15V. Poziom napięcia wyjściowego natomiast może przyjmować wartości -12V, -10V, +10V, +12V, zaś napięcie na dowolnym styku nie może być większe niż +25V i mniejsze niż -25V. Należy zaznaczyć przy tym, że zwarcie dwóch styków RS-232 teoretycznie nie powoduje jego uszkodzenia. W praktyce ten zapis w specyfikacji nie zawsze jest przestrzegany.


    Musisz zastosować układ np. MAX232

    Moja cierpliwość się skończyła, temat raportuje

    0
  • #13 25 Lip 2012 08:51
    wabikboy
    Poziom 16  

    Zapomniałem dodać iż gdzieś się doszukałem że można RX podłączyć przez rezystor ok. 10KOhm, dlatego pytam a tu zaraz takie nerwy,

    P.S. czy jak Ty zaczynałeś z elektroniką to dla ciebie było wszytsko takie oczywiste ?? zwróć uwagę gdzie temat został przeniesiony więc proszę o zrozumienie.'

    Pozdrawiam

    0
  • #14 25 Lip 2012 10:08
    xamrex
    Poziom 28  

    wabikboy napisał:
    P.S. czy jak Ty zaczynałeś z elektroniką to dla ciebie było wszytsko takie oczywiste ??

    Nie, nie było oczywiste, ale zamiast wchodzić na jakieś dziwne strony(nie wiem gdzie można takie głupoty wyczytać:
    wabikboy napisał:
    Zapomniałem dodać iż gdzieś się doszukałem że można RX podłączyć przez rezystor ok. 10KOhm

    to wolałem się posiłkować datasheetem/wikipedią, i jeśli mam uC zasilany 5V, to jest to niemożliwe żeby transmisja RS232 działała.. jeszcze dodając w szereg rezystor..

    0
  • #15 25 Lip 2012 11:52
    LordBlick
    VIP Zasłużony dla elektroda

    wabikboy napisał:
    zwróć uwagę gdzie temat został przeniesiony więc proszę o zrozumienie.
    Zrozumienie można wykazać wobec kogoś, kto dostarcza konkretny opis, co zrobił, co chce tym osiągnąć i dlaczego uważa, że ma z tym problem. To nie jest forum, gdzie siedzą wróżki.
    Oprócz kodu jakby w pierwszym wpisie tematu był schemat podłączeń, nie tracilibyśmy czasu na zbędne dywagacje. Użyj MAX232 zgodnie z notą aplikacyjną w ramach odkupienia (Google wskaże drogę wraz z licznymi przykładami) i zamieść schemat w/g instrukcji zamieszczania obrazków dostępnej w każdym dziale w kolorze czerwonym... ;)

    0
  • #16 25 Lip 2012 14:05
    wabikboy
    Poziom 16  

    Czekam na przesyłkę bo zamówiłem tego nieszczęsnego MAX232 o który takie nerwy :D.

    a w między czasie szperałem w necie i posklejałem w ten sposób:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Bascom kompiluje bez błędów ale że nie mogę tego sprawdzić proszę o odp. czy w dobrym kierunku idę z założeniem czyli: wysyłam z terminala: Obroty 30 to procek ustawi pwm1a = 30.

    Testuję w symulacji swój kod ale mam problem z kawałkiem kodu,
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Nie mam pojęcia jak ustawić pętle If aby wykonała się kiedy do terminala wpiszę ciąg: Obroty0

    0
  • #17 25 Lip 2012 20:22
    arktik1
    Poziom 27  

    W pętli zrób tak:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    W pozycji dane mogą znajdować się liczby od 0 do 255.
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    To możesz usunąć.
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #18 25 Lip 2012 20:51
    wabikboy
    Poziom 16  

    Dzięki za pomoc w tej kwestii z tym że wszystko super działa jeśli odnosi się to do jednego kanału pwm a ja chciałem wpisać dla każdej wartości z 3 oddzielnie i dlatego rozważam warunek tekstowy chyba ze jest jakiś lepszy sposób odniesienia do każdego z pwm

    P.S.

    Rozumiem że Bufor sam się czyści ??

    0
  • #19 25 Lip 2012 21:03
    arktik1
    Poziom 27  

    Najprościej to chyba by było tak.
    Wysyłasz najpierw nazwę PWM którego chcesz zmienić , portem wartość jaką chcesz mu przypisać.
    1 Obroty1
    2 Entrer
    3 200
    4 Enter
    Oczywiście musisz to uwarunkować.

    Dodano po 1 [minuty]:

    Skoro działa to:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    to znaczy że tak

    0
  • #20 25 Lip 2012 21:17
    wabikboy
    Poziom 16  

    no właśnie nie wiem jak się odnieść do tych zmiennych "obroty1" "obroty2" "obroty3"

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    nie mogę pojąć w jaki sposób ustala się daną zmienną aby odnieść się do niej w konsoli

    0
  • Pomocny post
    #21 25 Lip 2012 22:14
    arktik1
    Poziom 27  

    To możesz zrobić tak:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    i w pętli głównej używając np CASE:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #22 25 Lip 2012 22:27
    wabikboy
    Poziom 16  

    Troche może mylące jest to że zmienna nazywa się "obroty" ale to nic związane z silnikami a z diodami RGB, poprostu szukam jak najprostrzego kodu gdyż całym każdym kanałem pwm bedzie sterował skrypt w komputerze, więc wpisywanie entera za każdym razem mi nie przeszkadza i oczywiscie dziękuję za dużą pomoc w tej sprawie, nie mniej jednak jeśli ktoś pokusi się o modyfikację kodu do wersji gdzie można wpisać z konsoli to np tak: Obroty1 255 Obroty2 120 Obroty3 100 Enter , był bym wdzięczny.

    0
  • #23 25 Lip 2012 22:35
    arktik1
    Poziom 27  

    Możesz też dodać taki licznik czasowy, który np. po ok. 5 sekundach wyzeruje ci OBROTY i będziesz musiał każdą zmianę PWM poprzedzić wyborem OBROTYx.
    Umieszczasz go w pętli głównej po END SELECT.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dodano po 4 [minuty]:

    Cytat:
    Obroty1 255 Obroty2 120 Obroty3 100 Enter

    Trochę dużo pisania :cry:

    0
  • #24 25 Lip 2012 22:48
    wabikboy
    Poziom 16  

    No i mam problem :/

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    wrzuciłem cały kod bo może coś za dużo i nie potrzebnie sie pluje o to.

    mam błędy w kompilacji
    błąd 31 linia 74 i 77 - invalid data type
    błąd 269 linia 77 - End Select Expected

    ---------------edit---------------------
    Poprawione, zapomniałem o zmiennych że trzeba je ustawić:)

    0
  • #25 26 Lip 2012 08:16
    arktik1
    Poziom 27  

    Brak: Dim Obroty as byte.
    Usuń: Declare Sub Oproznij_bufor
    Zwracaj uwagę na to co się dzieje w twoim programie, poza ty uporządkuj to trochę.

    0
  • #26 26 Lip 2012 08:26
    wabikboy
    Poziom 16  

    Kod poprawiłem, a z tym: Obroty1 255 Obroty2 120 Obroty3 100 Enter niekoniecznie tak musi być, może być Obroty1 200 Enter Obroty2 120 Enter Obroty3 200 Enter.

    Domyślam się, że dużo pisania by było, gdyż trzeba dopisać dużo zmiennych i je uwarunkować, mimo wszystko - jeszcze raz dziękuję za pomoc.

    P.S. Czy można prosić o sprawdzenie tego fragmentu kodu, bo wydaje mi się, iż jest za dużo pozycji set TCCR1A, chyba że tak ma być.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0