Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 kwi 2024, o 10:55


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 49 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 19 lis 2014, o 10:10 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

Panowie, Panie potrzebuję pomocy bo siedzę i siedzę i nie mogę sobie dać rady z kodem BASCOM. Jestem początkujący, a raczej raczkujący w AVR, programowaniu itd. Sad

Próbuję zbudować sterownik do pokoju który ma wykonywać:
-sterowanie światłem (8x)
-sterowanie piecem/kotłem gazowym (temperatura noc i dzień-dwie różne temperatury)
-każdy przycisk ma dwie funkcje (krótkie i długie naciśnięcie)

Chciałbym sterować tym poprzez:
-przyciski (8x)
-pilot rc5
-RS485

Mój sterownik składa się z:
-ATmega32
-kwarce: 11.0592 i zegarkowy
-TSOP1736
-MAX485
-LCD 4x20
-DS1307
-DS18B20
-ULN2803
-buzzer
-przekaźniki (9x)
-przyciski (narazie micro switch, a docelowo dotykowe)

LCD ma wyświetlać:
-godzinę
-datę
-dzień tygodnia
-temperaturę
-stan pieca (włączony/wyłączony)
-czy piec grzeje czy nie

Ustawienia zegara chciałbym ustawiać poprzez pilota, ale nie wiem jak zrobić jakieś menu ustawień itp.

Może pokarzę swój kod:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Mój sterownik prawie działa, prawie bo:
-pierwszy znak na wyświetlaczu mi przygasa/mruga
-nie wiem jak zrealizować odczyt pilota rc5.
-temperatura co jakiś czas zmienia się na (0, 355, 85, -25 stopni) zmieniałem już DS18B20 na inny
-nie wiem jak zrealizować menu ustawień zegara poprzez pilota.

Teraz jak dołożę obsługę rc5-getrc5-to wszystko mi przestaje działać. Jak wrzucę program tylko do obsługi pilota na uC, aby wyświetlał adres i komendę na LCD to wszystko jest OK.
Mój kod zrobił się już dość duży i moje umiejętności są zbyt małe, aby nad nim zapanować.

Proszę o pomoc. Z góry bardzo dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 13:00 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 518
Pomógł: 26

Kolego poco do przerwania Timer0 władowałeś obsługę klawiszy. Zrób sobie procedure do obsługi klawiszy i wywołuj ją tylko co jakiś czas który wyznaczysz timerem A nie tak jak ty sprawdzasz klawisze co 0,00092s Żebyś tak szybko wciskał klawisze, że z taką częstotliwoscią musisz sprawdzać stan klawiszy. Tak jak w/w wywal waity i zastąp je flagami a czas generowania tych flag wyznaczaj timerem.

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 19:17 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

Bardzo dziękuję Kolego @Niveasoft za kody. Teraz na spokojnie muszę to jakoś przełożyć na mój mały rozumek :)
Niveasoft napisał(a):
Ciekawe są przyciski bo ten jeden krotki kod "załatwia" wszystkie rozpisane przedtem osobno.

Ale w ten sposób chyba nie dam rady zrealizować swojego pomysłu-krótkie naciśnięcia, włącz/wyłącz wyjścia. Długie naciśnięcia-pod każdym przyciskiem inna "komenda" do wysłania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 19:34 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

matekogon napisał(a):
Kolego poco do przerwania Timer0 władowałeś obsługę klawiszy. Zrób sobie procedure do obsługi klawiszy i wywołuj ją tylko co jakiś czas który wyznaczysz timerem

A po co odczytywać ciągle przyciski ? Sprawdzaj stan wejść przycisków i obsługę wywołaj dopiero jak któryś zostanie naciśnięty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 19:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2014
Posty: 569
Lokalizacja: Żagań
Pomógł: 54

Zawsze można wykorzystać:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W pętli głównej.

*(opisy przycisków z moich kodów, należy dostosować do swoich)

_________________
http://leszczamiga.ppa.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 21:02 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 518
Pomógł: 26

matrix napisał(a):
matekogon napisał(a):
Kolego poco do przerwania Timer0 władowałeś obsługę klawiszy. Zrób sobie procedure do obsługi klawiszy i wywołuj ją tylko co jakiś czas który wyznaczysz timerem

A po co odczytywać ciągle przyciski ? Sprawdzaj stan wejść przycisków i obsługę wywołaj dopiero jak któryś zostanie naciśnięty.


Kolego trochę cię nie rozumie , czym sie różni odczytywanie stanów przycisków od stanów wejść przycisków?
A o ciągłym odczytywaniu stanów przycisków to nie wiem z czego wywnioskowałeś . Pisze tu o wywoływaniu procedury w pewnych odstępach czasu

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 23:04 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Ale po co w pewnych odstępach czasu ?
Niech będzie napisane:

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I masz obsługę przycisków tylko w chwili naciśnięcia któregokolwiek a nie w odstępach czasowych.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 07:48 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 518
Pomógł: 26

matrix napisał(a):
Ale po co w pewnych odstępach czasu ?
Niech będzie napisane:

If przycisk1 = 0 OR Pzrycisk2 = 0 OR Przycisk3 = 0 then gosub obsluga_przyciskow

I masz obsługę przycisków tylko w chwili naciśnięcia któregokolwiek a nie w odstępach czasowych.


Czyli ten warunek sprawdzasz non stop w pętli głównej na pełnej prędkości avr A po co ?
Przecież wystarczy sprawdzić go co 4ms

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 16:05 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

Kolego @Niveasoft dziękuję za dotychczasową pomoc, próbuję to jakoś przetrawić i wykorzystać w swoim projekcie. Nie ukrywam, że podałeś mi tak dużo cennych informacji, że aż ciężko mi się w tym wszystkim odnaleźć.

Niveasoft napisał(a):
Po co zamykać pozycję kursora w If`ach i pisać to dwa razy jeśli i tak będziesz musiał zacząc pisac w tym samym miejscu tylko treść sie różni. Stajesz wiec kursorem i dopiero rozważasz co wyświetlisz.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Co do tego ostatniego to chodziło mi wyświetlanie jak i za jednym razem sterowanie piecem
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 16:40 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

matekogon napisał(a):
Czyli ten warunek sprawdzasz non stop w pętli głównej na pełnej prędkości avr A po co ?
Przecież wystarczy sprawdzić go co 4ms

No dobrze, niby fajne rozwiązanie ale...
Wiadomo nie od dziś że w przerwaniu ma być jak najmniej.
Do tego wyobraźmy sobie że w przerwaniu masz spełniony warunek i co ? Masdz skok do przerwania i skok z przerwania do podprogramu ?
Bo tak to odebrałem.
Jeśli w przerwaniu tylko ustawimy flagę to ok.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 17:34 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 518
Pomógł: 26

matrix napisał(a):
matekogon napisał(a):
Czyli ten warunek sprawdzasz non stop w pętli głównej na pełnej prędkości avr A po co ?
Przecież wystarczy sprawdzić go co 4ms

No dobrze, niby fajne rozwiązanie ale...
Wiadomo nie od dziś że w przerwaniu ma być jak najmniej.
Do tego wyobraźmy sobie że w przerwaniu masz spełniony warunek i co ? Masdz skok do przerwania i skok z przerwania do podprogramu ?
Bo tak to odebrałem.
Jeśli w przerwaniu tylko ustawimy flagę to ok.



No w końcu przecisnąłem swoją koncepcję Oczywiście mowa tylko o ustawianiu flagi w przerwaniu. Oczywiście w końcu moge powiedzieć że twój sposób też jest dobry hehe Dzięki za polemikę

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 17:52 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Tylko że z ustawianiem flagi wciąż jest źle bo i tak w pętli głównej masz sprawdzanie warunku czy flaga jest ustawiona. Więc po co sprawdzać czy flaga jest ustawiona skoro od razu można sprawdzić stan przycisków.
Tak czy siak w pętli coś sprawdzać musisz więc co za różnica czy sprawdzisz flagę czy stan przycisków ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 18:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Po pierwsze błędy wskazań temperatury to PRZEDE WSZYSTKIM zakłócona praca i2c przez przerwania. Wystarczy przenieść to badanie (oczywiście nie w takiej formie jak obecna!) do przerwań i bez sprawdzania sumy kontrolnej praktycznie 100/100 pomiarów będziesz miał prawidłowe. To się w zasadzie tyczy wszystkich urządzeń podłączanych przez i2c. Wiem, bo sam kiedyś nie przespałem przez to nocy aż mnie oświeciło... :)

Widzę, że korzystasz z mojego pomysłu badania klawiszy - małą rada: wywal wszystkie Pkx=1, bo jest do niczego nie potrzebne, a Pkx=0 przenieś przed ostatnie End If dla każdego przycisku. Poza tym sensowne jest takie rozwiązanie dla max 4 przycisków. Dla większej ilości lepiej jest zrobić multipleksowane ich sprawdzanie (w sensie programu oczywiście nie sprzętu) - sprawdzałem kiedyś i porównywałem rozmiar tych rozwiązań.
Przyciski możesz oczywiście sprawdzać w pętli głównej (o ile wywalisz wszystkie blokujące WAIT z programu i zastąpisz je timerami), bo jeśli żaden nie będzie wciśnięty to czas wykonywania będzie nie dłuższy niż to co kolega wyżej zaproponował z operatorem OR. Zaproponował bym tu jednak timer programowy w przerwaniu (co je drastycznie odchudzi i przyspieszy) i ustawił jego sprawdzanie na początek tej litanii przycisków z przywracanym czasem powiedzmy 10-20ms. Takich programowych timerów możesz zrobić nawet kilkanaście jeśli będzie taka potrzeba dla różnych czynności i dzięki temu pozbędziesz się wait z programu, które chyba najbardziej tu bruździ...
Na zachętę podam Ci tu moje rozwiązanie 8-u przycisków, które kiedyś dla kogoś robiłem. Jest tam wait, ale ten program nic innego nie robił oprócz włączania/wyłączania portów:

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jedyne ograniczenie to takie, że przyciski muszą być na jednym porcie.


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 18:52 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

Cytuj:
Widzę, że korzystasz z mojego pomysłu badania klawiszy

Tak, znamy się z forum elektroda.pl
To ja Ciebie zamęczałem różnymi pytaniami na tamtym forum ;)

Dostałem tu tyle pomocnych rad, że głowa mi pęka i nie mogę się odnaleźć z tym wszystkim.
W wielu wątkach tego forum zobaczyłem, że ludzie tu są bardzo przyjaźni i potwierdzam to w 100% :)

Na tą chwilę kod wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ale już mam problem bo krótkie naciśnięcia guzików nie chcą przełączać wyjść. Jest tylko sygnał dźwiękowy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 19:08 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 518
Pomógł: 26

obsługa przycisków i wewnątrz waitms 5 po co?


Autor postu otrzymał pochwałę

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 19:15 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

matekogon napisał(a):
obsługa przycisków i wewnątrz waitms 5 po co?

Usunięte.
Zostało mi po poprzednim kodzie, aby wysłało dany tekst i poczekało przed przełączeniem karty na "odbiór"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2014, o 20:00 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 518
Pomógł: 26

Czy pomogło ? Kolego a tak zapytam z czystej ciekawości czy próbujesz w przypadku jakiegoś problemu najpierw podglądnąć (wyświetlić) sobie stan zmiennych które są odpowiedzialne za wejście w jakąś procedurę lub w jakiś warunek który ci sie nie wykonuje.

przykład masz warunek IF a=0 and b=0 then......... no i oczywiście ci sie nie wykonuje ten warunek. Kilkanaście razy analizujesz kod i wydaje się że jest wszystko ok ale jednak nie działa. Człowiek duma i duma a tu sobie możesz wyświetlić wartości tych zmiennych na lcd i co okazuje się że gdzieś po drodze np A=1 no i tu jest problem. W tedy zacieśnia ci sie krąg podejrzanych do tylko zmiennej A

To tak na marginesie bo morze tak robisz nie wiem więc pytam

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2014, o 17:29 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

Niveasoft napisał(a):
Stan portu odczytuje się z rejestru PIN nie PORT więc "Outputs_port = Portb" w przyciskach spróbuj zamienić na "Outputs_port = PINB"

Od tego wczoraj zacząłem, ale nic to nie dało :(

Siedziałem wczoraj do 1 w nocy i nic mądrego nie wymyśliłem-kod @Niveasoft nie chciał się "złamać" i ze mną współpracować :(
Kod podany przez @SylwekK znów zamula mi wszystko :(

Rozbiłem na części obsługę przycisków (tak jak miałem wcześniej) i wszystko działa-tak mi się wydaje, że jest OK.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak teraz zabrać się za zegarek (DS1307) i menu ustawień zegarka z pilota?
W kodzie wyżej upchnąłem zegarek, ale nie wiem czy to wszystko jest jak być powinno.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2014, o 21:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

pimowo napisał(a):
Kod podany przez @SylwekK znów zamula mi wszystko


Jeśli się go prawidłowo wstawi to absolutnie nic nie zamula bo wykonywany jest sekwencyjnie po jednym przycisku w każdym obiegu pętli.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2014, o 00:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Aleśta sie uwzieli na te Pk=1... Wywalić to, a Pk=0 wstawić przed ostatnie End If ! Przeanalizujcie jak działa ten program i do czego jest Pk...

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2014, o 01:00 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

Kombinowałem wczoraj jak koń pod górę. Również z dodatkową zmienną, ale chyba w między czasie coś innego jeszcze zmieniłem i nie chciało ruszyć.
Dzięki @Niweasoft, przyciski działają, że hej ;)
@SylwekK już wczoraj wziąłem sobie do serca te "Pk=x" i ich nie ma :)

Jutro jeszcze poćwiczę rc5, zegar i jego ustawienia.
U mnie są dwa kwarce bo jeden(zegarkowy) do DS1307 (a ten DS aby odciążyć ATmege) a drugi (11.0592) do ATmegi, aby nie było błędów transmisji RS485.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2014, o 13:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Wiem, że to nie temat o guzikach, ale wydaje mi się, że to dobra okazja aby coś wyjaśnić, a konkretnie istotę programiku badania klawisza krótki/długi mojego autorstwa, bo nie chcę aby były powielane błędy.

Poniżej wersja bez użycia przerwań czyli z Waitms -tak czy inaczej jakieś opóźnienie jest potrzebne aby wyeliminować drgania styków. W takim układzie jest o tyle dobrze, że opóźnienie występuje dopiero po wciśnięciu guzika.

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Takich podobnych linii jak ta...
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

...może być więcej z różnymi czasami (jednak krótszymi niż reakcja na długi przycisk!) dzięki czemu jednym przyciskiem możemy obsłużyć nawet i 10 zadań rozbudowując program TYLKO o linię z zakresem badanego czasu. Przykład wykorzystania jest w tym temacie http://www.elektroda.pl/rtvforum/viewtopic.php?p=9215879#9215879. Kilka postów dalej jest źródło programu.
Tu jeszcze jedna uwaga - operator AND w Bascom jest straaaaasznie pamięciożerny dlatego zazwyczaj rozbijałem to na dwa niezależne warunki co w programach na takiego attiny13 było bardo istotne. Tu zostawiam, aby łatwiej było zrozumieć działanie.

Jeśli program ma być w pełni "przelotowy" czyli bez opóźnień nawet podczas trzymania guzika skorzystajmy z przerwań i jednego timera programowego:

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Niewielkie zmiany - dosłownie jeden krótki warunek (ale nie powiem gdzie - sami pomyślcie to będzie znaczyło, że rozumiecie jego działanie) w podanych wyżej programach pozwala np. na uzyskanie repeatu dla klawisza. Program jest naprawdę bardzo elastyczny na rozbudowę jego funkcjonalności.
Reszta jest wystarczająco dobrze skomentowana i myślę, że z analizą problemu nie będzie :)


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2014, o 20:53 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 518
Pomógł: 26

SylwekK napisał(a):
Poniżej wersja bez użycia przerwań czyli z Waitms -tak czy inaczej jakieś opóźnienie jest potrzebne aby wyeliminować drgania styków.


odsyłam do artykułu Mirka który wyjaśnił temat o drganiu styków
http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2014, o 21:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Nie do końca właściwie się wyraziłem. Chodziło o "...opóźnienie jest potrzebne aby między innymi wyeliminować drgania styków."
Artykuł Mirka powinien już każdy znać dawno, a przynajmniej zagadnienia tam poruszane tu natomiast jest mowa o czymś zupełnie innym... ;)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 11:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Niveasoft napisał(a):
Pamiętam że Sylwkowi się nie podobało że użyłem dwóch Timerów w urządzeniu do generowania sygnału prędkości.

Sytuacji niestety nie pamiętam wiem natomiast jedno, że jeśli od początku nie zacznie się prawidłowo programować to czym większy projekt tym większe problemy, które będą się nawarstwiać i nagle się okaże, że duże możliwości sprzętowe okażą się nie wystarczające, żeby zamigać jeszcze jedną diodką (oczywiście przejaskrawiam z tą diodą - chodzi o istotę)... A dwa timery do generowania prędkości jak by to nie miało wyglądać to przynajmniej o jeden za dużo ;)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2014, o 19:43 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

Dopiero dziś znalazła się chwila, aby usiąść sobie przy mojej zabawce...

Kombinuję i już prawie wszystko mam, no właśnie prawie :(
Nie wiem jak zrobić, aby cyfry które chcę ustawić/zmienić ładnie sobie mrugały. Próbuję zaadoptować kod @Niveasoft, ale nie bardzo potrafię to zrobić :(
Zrobiłem, że cyfry (1-8) na pilocie zmieniają mi stan wyjść (Out1-Out8)
Guzik 9 włącza/wyłącza piec
Guzik MUTE przechodzi w stan ustawień i każde następne naciśnięcie zmienia co ma ustawiać(godziny, minuty, dzień, miesiąc, rok, dzień tygodnia), a guzik-strzałka w górę-to zmienia.
Kod teraz wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2014, o 20:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

pimowo napisał(a):
Nie wiem jak zrobić, aby cyfry które chcę ustawić/zmienić ładnie sobie mrugały.

Takie rzeczy najfajniej sie robi z wykorzystaniem timera programowego, którym w pętli głównej zarządzasz, np tak:

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


powyższe umieszczasz gdzieś pod koniec pętli głównej niech sobie działa cały czas, a mogą z tego korzystać różne fragmenty programu. I dalej samo miganie to już formalność:

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a timer w przerwaniach po prostu tak wygląda:

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dodam, że w teraz kiedy piszę w C i działam na lcd buforowanym przykładowe miganie jest jeszcze prostsze, bo po else nie potrzebne są te puste spacje :)


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2014, o 08:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Niveasoft napisał(a):
Programista ktory zna Assemblera, C i Bascom i na codzień programuje dla swojej firmy urządzenia zrobił na innym forum porównanie "Czasochłonności" pisania i testowania programu który czyta dane z Serial Portu i ustawia serwo do żądanej pozycji.
Cytuj:
The Assembler version took about 40 hours to write and test
The C version took about 8 hours to write and test
The Bascom version took about 2 hours to write and test

...wyniki każdy może sobie zinterpretować jak chce. Mogę i ja po swojemu - kiedy ktoś będzie jeszcze pisał to ja będę już robił coś innego.

Powiem przewrotnie - kiedy ja będę się cieszył, że program wyrabia mi w przerwaniach i mieści się w procku, a przy tym nic się ze sobą nie gryzie - ktoś kiedyś będzie jeszcze szukał większego procka i wciąż próbował zoptymalizować algorytmy. - To mówiłem ja, kiedyś zatwardziały bascomowiec, który kijem nie chciał tknąć C. ;)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2014, o 13:32 
Offline
Użytkownik

Dołączył(a): 16 wrz 2014
Posty: 264
Pomógł: 12

pimowo napisał(a):
Jak więc widzę że to Ty robisz coś dziesięć razy zamiast procesor to trochę mnie to irytuje

Przepraszam :oops:
Niveasoft napisał(a):
Druga sprawa.. znów widze Pik = 2 , Pik = 2, Pik = 2 a czy nie można na końcu, po End select, napisac raz? (Chyba że chodzi o zawężenie tego do kilku przycisków ale wtedy lepiej zadeklarować stałą "Const Krotki_pik = 2" i pisac Pik = Krotki_pik).

Tak, chodziło o to, że chciałem wykorzystać trochę więcej przycisków pilota i nie wszystkie miały "pikać" Zrobiłem tak jak mówisz-po End Select dałem "Pik=2" czyli dla wszystkich.
Cytuj:
Trzecia sprawa. O co chodzi z tymi przerwaniami, tam w obsłudze RC5? Takie zamieszanie, że ja nie wiem kiedy one są włączane z powrotem. Jakaś kolejność, albo coś tam chyba jest zatracone. Moim zdaniem, jak już tak to masz rozwiązane. To po wejściu do przerwania mógłbyś je wyłaczyć, odczytać komende i kod, skasować flagę przerwania, włączyć je z powrotem i wyjść

Kiedyś, jak poszukiwałem jak obsłużyć pilota w BASCOM'ie to duża część ludzi mówiła, że należy to robić tylko i wyłącznie w przerwaniu.
To jest kod o którym mówię i na nim się wzorowałem:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Niveasoft napisał(a):
...wyniki każdy może sobie zinterpretować jak chce.

Przyznaję się bez bicia. Nie bardzo się znam na AVR, programowaniu itp. Rzuciłem się na dużą (ogromną) wodę i próbuję uczyć się pływać.

Dzięki Wam drodzy Koledzy wszystko już u mnie działa.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Sterownik w sumie już działa, płytka stykowa wygląda jak przerośnięty pająk-mutant :lol:
Teraz będę próbował stworzyć schemat, PCB
Muszę jeszcze jakoś posprzątać ten kod, a przede wszystkim opisać sobie go w komentarzach bo za jakiś czas to nie będę wiedział sam o co chodzi.

Jeszcze zostało tylko znaleźć jakiś dobry sposób na przyciski dotykowe.
Czy do mojej ATmegi da się jeszcze dorzucić obsługę przycisków dotykowych czy to już byłoby za dużo i lepiej to zrobić na osobnym układzie?
Pozwolę sobie pokazać kod Kolegi @SylwekK
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2014, o 13:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Pewnie, że by się dało, tylko najpierw sprawdź jak Ci te przyciski będą reagować. To była taka moja wariacja na temat przycisków trochę odbiegająca od standardów publikowanych w sieci i kod owszem działa, ale najlepsze efekty uzyskuje się kiedy przycisk jest na laminacie dwustronnym gdzie spód to masa, a przyciski (czym większe tym lepiej) od góry. Na takim pasku laminatu około 3x1cm reagowało przez pleksę gr 2mm. Trzeba też pamiętać o dobraniu liczby NOP jak już się wszystko podłączy.


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 49 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO