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



Teraz jest 21 lut 2026, o 19:14


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 102 ]  Przejdź na stronę 1, 2, 3, 4  Następna strona
Autor Wiadomość
PostNapisane: 23 mar 2013, o 23:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Witam.
Próbuję zrobić prosty regulator temperatury.
Zacząłem od zegara i już mi nic nie wychodzi.
Napisałem krótki kod, zapożyczony z forum który wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I problem wygląda tak że na wyświetlaczu nić się nie pojawia. Nawet napis "czas". wygląda na to że w ogóle nie występuje tu żadne przerwanie. szukam po różnych przykładach, i nie wiem jak mam to zrobić by zadziałało :(

Korzystam z Atmegi 16 z kwarcem 32,768kHz. Na początku z kondensatorami 18pF, teraz je wymontowałem .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 00:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Zmienna sek jest wykorzystywana w przerwaniu i w pętli głównej dlatego powinna być volatile.

Poza tym zmienna Timer2_flag powinna być zerowana w pętli głównej bo teraz to raz ustawiona w przerwaniu zawsze będzie mieć wartość 1.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 09:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Nic to nie pomogło :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 09:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Oj nie podłączyłem go do XTAL1 i XTAL2 pin 12 i 13 :(
Po zmianie już coś działa. kombinuje dalej :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 09:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

tak do tego już doczytałem i jest bez kondensatorów.

------------------------ [ Dodano po: 58 minutach ]

Teraz mam takie dziwne zjawisko.
Jak liczy sekundy to do 59s liczy. następnie powinien wyzerować sekundy i dodać 1 min. niestety dodaje minute a sekundy liczy 09,19,29,39,49,59,69,79,89,99, następnie 10,11,12,13....
próbowałem tu też zrobić miganie dwukropka między min a sek, lecz mój warunek coś nie działa:
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: 24 mar 2013, o 10:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 gru 2012
Posty: 72
Pomógł: 6

Jeżeli sekundy są mniejsze od 10 wbij 0 na pierwszą pozycje.
Tak samo minuty. kod Mirkowy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tak to po prostu zostaje poprzednia wartość na wyświetlaczu w drugiej pozycji sekundy, po wstawieniu 0 na pierwszą druga zaczyna się zmieniać i nadpisuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 11:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

W między czasie zacząłem to robić tylko że ja zrobiłem min<9 i 9 mi zostawała, po zmianie na 10 już lepiej to działa.
A to Mirek przedstawił gdzieś artykuł jak zaprogramować zegarek ?
Bo szukałem i coś chyba za mało skutecznie.
A co z mrugającymi dwukropkami?
ten kod wynalazłem w książce ale nie działa mi w moim zastosowaniu:(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 11:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

A to robiłem tez z else lecz lcd_str("") gdy wstawiłem spacje między cudzysłów zadziałało. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 11:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 gru 2012
Posty: 72
Pomógł: 6

To co podałem wy wyrwane z tematu TWI (PCF8583). W main'ie siedzi.

Jak nie wpisałeś spacji pomiędzy cudzysłowy to nic nie wstawiało. Spacja tak jakby wymazuje, lecz to spacja jest.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 14:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

No tak jest tam coś takiego.
układ liczy poprawnie (bynajmniej tak samo jak telefon ) :)
zacząłem analizować temat przetwornika analogowo-cyfrowego, ponieważ chciałem w taki sposób podłączyć do procesora klawiaturę.
Lecz męczy mnie jeden problem czy ja dobrze robię. Ponieważ układ ma za zadanie regulować temperaturę na małej makiecie, makieta już jest prawie gotowa. składa się z grzałki 230V która ma być płynnie regulowana moc, oraz wentylator z regulowanymi obrotami.
Zastosowałem już kwarc zegarkowy (32,768kHz) no i jeden timer. Ale do pozostałych zadań jakie ma wykonywać układ ten kwarc wydaje się raczej za mały. jak już to samego przetwornika potrzebują 50-200kHz :( w takim bądź razie muszę zrezygnować z kwarca zegarkowego i dać większy po czym odpowiednio go dzielić do danego zadania czy jest możliwość wykorzystania jeszcze jednego generatora kwarcowego?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 14:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

Jeżyk-1 napisał(a):
...Zastosowałem już kwarc zegarkowy (32,768kHz) no i jeden timer. Ale do pozostałych zadań jakie ma wykonywać układ ten kwarc wydaje się raczej za mały. jak już to samego przetwornika potrzebują 50-200kHz :( w takim bądź razie muszę zrezygnować z kwarca zegarkowego i dać większy po czym odpowiednio go dzielić do danego zadania czy jest możliwość wykorzystania jeszcze jednego generatora kwarcowego?


A czemu nie możesz zastosować wewnętrznego oscylatora?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 14:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Masz na myśli ten kwarc zostawić (32,768), a do pozostałych zadań wykorzystać oscylator wewnętrzny ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 14:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

Do zegarka kwarc się przyda, do reszty wewnętrzny oscylator wystarczy w większości przypadków.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 15:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

No dobrze, to będę próbował na wewnętrznym. A tak tylko z ciekawości zapytam czy jak mam jeden kwarc wpięty pod TOSC1 i TOSC2 to czy jest możliwość podłączenia kolejnego kwarca pod XTAL1 i XTAL2?

A wracając do mojej klawiatury analogowej, wyczytałem że jak mam podłączone napięcie do VREF to nie mogę ustawić innego napięcia. A w swoim układzie mam 6 przycisków, z rezystorami 20k i pierwszym rezystorem od Vcc 140k. napięcie z dzielnika powinno być 2,5V a zmierzone wynosi 2,567V. W takiej sytuacji muszę ustawić napięcie VREF 2,56 ale pin 32(AREF) odłączyć od zasilania ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 15:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

Tak, możesz podłączyć w ten sposób 2 kwarce.
Jak korzystasz z wewnętrznego źródła napięcia odniesienia to AREF podłącz przez kondensator ceramiczny 100nF do GND.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 16:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Czego się nie chwycę to co chwile jakiś problem :(
Zrobiłem tak jak pisałeś dałem VREF przez kondensator 100n do GND i napisałem coś takiego:

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


Wykorzystałem kod mojego miernika czasu do pomiaru napięcia. Sytuacja jest dość dziwna ponieważ nie dusząc przycisków pojawia się wartość 1000 do 1020 a czasem nawet pojawi się 9900. a napięcie mam: 2,567V zmierzone. Gdy wciskam jakiś przycisk to napięcie spada a wartość na wyświetlaczu wzrasta np dla pierwszego przycisku ok 2500 przy napięciu 0,65V i dla ostatniego przycisku 9300 przy 2,37V :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 18:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

9900 masz bo zostają poprzednie pomiary na wyświetlaczu ;)
po lcd_int(pomiar(7)); dodaj np.:
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: 24 mar 2013, o 18:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

To nie wygląda jak by zostawał poprzedni wynik. Nic nie ruszam jedynie obserwuje wyświetlacz i tak się zmienia z 1000 na 9000 i z powrotem na 1000.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 18:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

Max wartość ADCW to 1023 ;)
A jak samo się zmienia bez naciskania klawiszy w dużym zakresie to pewnie port ADC pomyliłeś.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 19:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Schemat drabinki rezystorów mam taki jak w książce na stronie 246.
6 przycisków 7 rezystorów, każdy po 20k plus rezystor dzielnika 140k.
Podłączyłem go do PA7 pin 33, więc w tej linii wpisałem 7 :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pozostały port A jest podłączony LCD może tu jest jakiś konflikt ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 19:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

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

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


i dodaj te spacje na końcu wyniku.

Warunek: if (godz > 24) też jest zły ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 19:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Masz na myśli że powinno być if (godz > 23)?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 19:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

Jeżyk-1 napisał(a):
Masz na myśli że powinno być if (godz > 23)?


Tak.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 20:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Jak dla mnie to na wyświetlaczu zostają Ci śmieci po poprzednich pomiarach. Dodaj te kilka spacji i sprawdź to. Bez wykluczenia tej możliwości to można debugować długo i radośnie i nic z tego nie wyjdzie jeżeli to śmieci będą problemem.

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2013, o 20:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Tak, to musiały być śmieci. Teraz pojawiają się racjonalne wyniki :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2013, o 15:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Działam dalej i próbuję wyniki pomiarowe zamienić na konkretne już przyciski.

Program aktualnie działa tak że po wciśnięciu odpowiedniego przycisku pojawia się cyferka na LCD.

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


Czytałem o instrukcji ENUM ale mało zrozumiałem jak to przerobić:(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2013, o 17:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

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



Ja bym to raczej tak zapisał:

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: 25 mar 2013, o 17:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Tak jest dla mnie bardziej czytelne. Choć twój kod na pewno zajmuje mniej miejsca w pamięci.
Mimo to zainteresowałem się nim i wstawiłem go do swojego projektu.
Tylko musiałem troszkę go przerobić, ponieważ gdy nie był wciśnięty przycisk żaden to pokazywał jak by był wciśnięty przycisk nr6:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Co do mojego problemu to poradziłem se w taki sposób, tyle się męczyłem ponieważ chciałem to zrobić na tablicach ale mi nie wyszło.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie wiem dlaczego pojawia mi się żółty trójkącik z informacją :
Kod:
Multiple markers at this line
   - unused variable 'OK'
   - unused variable 'ESC'
   - unused variable 'RIGHT'
   - unused variable 'LEFT'
   - unused variable 'UP'
   - unused variable 'DOWN'
   - 'KEY' may be used uninitialized in this



Ostatnio edytowano 25 mar 2013, o 19:01 przez Jeżyk-1, łącznie edytowano 1 raz

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

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

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


O coś takiego Ci chodziło ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2013, o 08:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

No właśnie o coś takiego mi chodziło :)

Zabrałem się za robienie menu, niestety chce je zrobić na switch ponieważ inne metody są dla mnie za trudne na razie.
Wstępnie wygląda to tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I nie działa to tak jak ma :(
Przyciskam przycisk "RIGHT" i zmienia się pozycja ustawień ale różnie raz z 0 na 1 a drugi raz z 0 na 3 :(
Wygląda to na drgania styków, lecz w funkcji sprawdz_klawiature() jest eliminacja drgających styków, chyba że nie działą tak jak powinna:
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 102 ]  Przejdź na stronę 1, 2, 3, 4  Następna strona

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO