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



Teraz jest 3 lut 2025, o 16:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 27 lut 2014, o 19:44 
Offline
Nowy

Dołączył(a): 31 lip 2013
Posty: 20
Pomógł: 0

Witam mam pytanie związane z case 0: w podanym programie. Występuje tam opuźnienie _delay_ms(750) niezbędne do konwersji danych z czujnika ds18b20. Jenak jeśli przy próbie zmiany na np case 1: wystęuje opóźniennie (muszę przytrzymać klawisz aby menu się przełączyło). Jeśli usunę opuznienie to temperatura nie konwertuje się. Czy koledzy mogą mi podpwiedzieć jak rozwiązać ten problem ??
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



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

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Podpowiedzieć to mogę Ci tyle że dobrze byłoby się zainteresować timerami programowymi. Nie wiem czy masz Mirka niebieską książkę, a jeśli tak to warto do nie zajrzeć, dość sporo o nich pisze i pokazuje jak ich używać. No a jeśli nie masz książki to napisz coś więcej, jakiego procka używasz, jakie taktowanie to może się coś wspólnie poradzi na te timery :)

------------------------ [ Dodano po: 3 minutach ]

No chyba że używasz też w projekcie jakiegoś zegarka np. PCF-a to też można go zaprząc do odliczania czasu.

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2014, o 20:42 
Offline
Nowy

Dołączył(a): 31 lip 2013
Posty: 20
Pomógł: 0

Urzywam Atmegi 32 , taktowany z częstotliwością 11059200 Hz, i wklejam całem moje wypociny, wiem że program nie jest zbyt optymalny ale to mój pierwszy projekt więc proszę o wyrozumiałośc :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: kilkunastu sekundach ]

Urzywam Atmegi 32 , taktowany z częstotliwością 11059200 Hz, i wklejam całem moje wypociny, wiem że program nie jest zbyt optymalny ale to mój pierwszy projekt więc proszę o wyrozumiałośc :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



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

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Podstawową rzecz do odpalenia timera programowego masz już zrobioną, czyli aktywowany TIMER tykający co 10ms.
Najpierw zadeklaruj zmienną TIMER

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


Następnie dopisz sobie w wektorze przerwania ISR poniższy kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozostaje jeszcze zmiana w "case 0". Po poleceniu "czujniki_cnt = search_sensors();" wpisz to:

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


oczywiście delaya wywalasz a resztę zostawiasz tak jak masz.
Mam nadzieję że zadziała, bo piszę to z głowy czyli z niczego :) i istnieje szansa że gdzieś się walnąłem.

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 06:52 
Offline
Nowy

Dołączył(a): 31 lip 2013
Posty: 20
Pomógł: 0

Prawie działa :) menu przeskakuje plynnie ale temperatura pobiera się tylko raz,, potem już sie nie zmienia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 16:10 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Wydaje mi się że spowodowane to jest tym że nie wykonuje się "case 0:" bo to w nim masz fragment kodu odpowiedzialny za pomiar temperatury z czujników. Przy starcie programu zmienna "a" używana w "przełączniku" jest równa 0, więc następuje pomiar temperatury. Pomiar ten powinien być dokonywany dopóty, dopóki nie użyjesz klawisza KEY1 lub KEY2 bo wtedy zmienna "a" zmienia swą wartość. No i teraz pytanie czy zmienna "a" znowu ma wartość równą 0 po zabawie z przyciskami? Tak patrzę na ten kod i niby mieć powinna.
Spróbuj , o ile jeszcze tego nie zrobiłeś, cały ten kod do odczytu temperatury z timerem programowym, uruchomić w pętli głównej bez "case". Będzie przynajmniej wiadomo czy jest on poprawny, chociaż ja właśnie w taki sposób korzystam z timera i to działa.

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2014, o 11:46 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 52
Pomógł: 0

Witam.

Zastanawiam się nad poprawnością kodu kolegi Marcinf8702. Próbuje właśnie zrobić swój własny termostat i jak na razie jestem na etapie tworzenia menu, aby można było na wyświetlaczu pokazywać różne temperatury poprzez wciśnięcie przycisku. Natknąłem się na ten temat i nasunęło mi się kilka pytań. Problem wygląda tak, że menu robię na podobnej zasadzie jak kolega czyli z wykorzystaniem instrukcji switch. Teraz pytanie jak kod Pana Mirka pokroić na części, aby wykorzystać instrukcję switch. Ja pokroiłem go trochę inaczej niż kolega Marcinf8702 tylko nie wiem czy poprawnie... Wrzucę fragmenty kodu związanego z czujnikiem temperatury, pomijając zbędne rzeczy.

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



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


Tak ja "pokroiłem" kod Pana Mirka, lecz wygląda to trochę inaczej niż u kolegi Marcinf8702. On praktycznie wszystko wrzucił do instrukcji switch case 0. Oraz nie wykorzystał sprawdzania flagi tyknięć timera... Jak to powinno wyglądać poprawnie???

Pojawił się własnie problem z którym nie wiem jak sobie poradzić. Gdy chodzę po menu i wejdę w podmenu z temperaturami to muszę długo czekać na odczyt temperatur, i albo wyświetli mi temperaturę albo przez chwilę wyświetla 85 stopni i po chwili dopiero temperaturę właściwą. Jak sobie z tym poradzić?

_________________
www.electrobot.pl



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: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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