Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
Wkradł się bład przy wpisywaniu. Fuse Bity E4 D9 a nie 99 bo to pokazuje jasno na Twoim screenie Watchdog Always On :D Wyswietlacz nawet bez nadajnika ma wyświetlac po starcie trzy poziome kreski. W programie łatwo odczytać że żeby ustawić zero na wyświetlaczu procesor podaje masę na sześć segmentów. Wspólna końcówka wyświetlacza jest sterowana poprzez...
Tak, będziesz mógł. Jeśli chcesz liczyć w czasie (a nie chcesz) to mierzony przebieg doprowadzasz do wejścia zegarowego timera, w efekcie każdy impuls powoduje zwiększenie wartości licznika o jeden. Skoro chcesz mierzyć szerokość impulsu to wykorzystujesz wejście ICP timera - timer taktujesz z maksymalną częstotliwością, z kolei impulsy z obrotomierza...
Z dwoma bajtami uC i Dallas w 5ms wyrobią się spokojnie. Problemem jest brak synchronizacji pomiędzy przerwaniami generowanymi przez Timer a funkcją Waitms. Ponieważ przerwanie występuje teraz co 5ms to można w nim ustawić flagę że własnie się zakończyło. Wtedy w pętli głównej możesz sobie spokojnie liczyć te flagi. 50x 5ms = 250ms co bardzo tu pasuje....
Witam, pozwoliłem sobie na drobną modyfikacje Twojego kodu. Dobrze się przyglądnij, porównaj działanie w symulatorze a zobaczysz gdzie jest błąd. Powodzenia!!! $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config...
No tu już nie mogę zdzierżyć :wink: Chcesz korzystać z przerwań od 2 timerów i dziwisz się ,że wchodzą w paradę transmisji 1wire.Te timery to będą nawet sobie wchodzić w paradę , jeśli ich praca nie będzie jakoś zsynchronizowana.Trzeba poprostu "widzieć" oczami wyobraźni pracę programu i tak go skonstruować by działał prawidłowo , lub potrafił się skorygować...
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
z ta kalibracjo to ciekawy temat ,ale jak podepne czujnik do termometru zrobionego na rs232 to temperature pokazuje idealnie,a ten kwarc to faktycznie 12.902400 ,tylko zmieniłem go na 11,059 oczywiscie tez zmieniając w kompilatorze. Wybacz kolego , ale Cię troszkę "obsztorcuje" :D 1)Twierdzisz , że używasz DS1820 (9-bit) , a temperaturę obliczasz jak...
Byłby ktoś w stanie mi z tym pomóc? Miałoby to wyglądać tak: * sterowanie wentylatorami czasowo * sterowanie poprzez odczyt temeratury 2 osobne funkcje (działa albo jedno albo drugie). Do tego co mam dołożenie wł/wył czasowego (w zupełności wystarczy najprostsze z możliwych) OK, Popatrz na swój program; sterujesz ustawienia trzema przyciskami, z których...
Ten program jest taki, że nie wiadomo od czego zacząć poprawiać. Najlepiej byłoby go napisać od nowa :D Niemniej poprawiłem to co ewidentnie musiało być poprawione. Tak na marginesie to nie wiem co za magik wymyślił te ponowne włączanie przerwań w obsłudze przerwania po to tylko by odebrać kod RC5 w przerwaniu. Ludzie to małpują i kłopoty gotowe. Sprawdź...
A spróbuj tak: [syntax=basic4gl] ' Fuse bity ustawione fabrycznie $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Output 'sterowanie segmentów LED Config Portd = Output 'sterowanie segmentów LED Config 1wire = Portc.5 Anoda1 Alias Portc.1 ' Lewy wyświetlacz Anoda2 Alias Portc.2 Anoda3 Alias Portc.3 Dim Nr_wysw As Byte Dim Liczba As Long Dim...
Mam nadzieję że to nie pójdzie do kosza: $crystal = 4000000 '4MHz $regfile = "attiny2313.dat" Config 1wire = Portd.5 Config Timer0 = Timer , Prescale = 64 On Timer0 Przerwanie0 Enable Interrupts Enable Timer0 Start Timer0 Porta = 0 Portb = 0 Portd = 0 Config Porta = 0 Config Portb = 0 Config Portd = 0 '**************************** 'Zmienne...
Tak, jak już pisałem, nie tędy droga. Trzeba zrozumieć, ze Menu czyli interfejs programu z człowiekiem powinno być tylko jego nakładką graficzną. Nie może być tak, że kiedy jesteś w Menu to program zaniedbuje cały system, na przykład nie pilnuje zadanych temperatur. Pomyśl co by było gdyby termostat sterował grzałką w akwarium a Ty sobie radośnie wszedłeś...
http://obrazki.elektroda.pl/8267947700_1... Ponad 20 lat temu jako amator hobbysta budowałem proste układy elektroniczne. Studia i styczność z informatyką spowodowały, że porzuciłem hobby pod nazwą "składanie elektroniki" na rzecz "składanie programów komputerowych". W bieżącym roku (2011) dzięki uprzejmości kolegi Jacka.M, który okazał...
$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 '-- Wejscia przycisków Config Portd.2 = Input Config Portd.3 = Input ' -- podciągnięcie Set Portd.2 Set Portd.3 ' -- porty sterowania segmentami LED Config Portd = Output Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portc.2 = Output ' -- tranzystory Config...
Może nie umie wstawiać? $regfile = "m88def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Portd = &B00001111 'portd 0 1 2 3 jako wyjscia portd 4 jako 1wire 5 6 7 jako wejscia Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portd.3 =...
mała podpowiedź było troche błędów w Twoim programie i przeczytaj co dopisałem wyżej odnośnie pull up [syntax=basic4gl]'----------------------... '--------------------KONFIGURACJA-------... $regfile = "m8def.dat" 'informuje kompilator o procesorze $crystal = 8000000...
http://obrazki.elektroda.net/60_12870844... Witam. Termometrów na elektrodzie było już dużo, w tym projekcie nie ma nic specjalnego, poza tym że wykorzystuje w miarę nowy procesor LPC1343. Projekt umieszczam w sumie tylko po to żeby podzielić się źródłami. Mam nadzieje że komuś się przydadzą. Jak wiadomo, kto stoi w miejscu, ten się cofa....
Witam, poniżej zamieszczam kod z Bascoma mojego sterownika BMS, w tej chwili kontroluje temperaturę, czas, Rs232, LCD 2x16. Obsługa z klawiatury lub pilota RC5, w obecnej chwili rozwiajm go o dostęp przez internet. zajmuje ok 8kb pamięci więc w A162 będziesz miał jeszcze drugie tyle pamięci. Ja kożystam z A32 Pozdrawiam. PS. daj znać jak zakończysz...
A nie lepiej po prostu wszystko na timerach i przerwaniu? Tak co mi na szybko przychodzi do glowy tolinie podpiac pod przerwanie, ustawic na detekcje zmiany zbocza. Zrobic jakas zmienna ktora mowi czy jest to przerwanie startujace czy konczace. Jesli startujace to zczytujesz czy jest to 0 czy 1 i start timera. Jesli przerwanie konczace to stop timer...
http://obrazki.elektroda.pl/5851782000_1... Jako, że sezon na kąpiele w ogródku się rozpoczyna to być może ktoś skorzysta z mojego opisu podgrzewania wody w basenie ogrodowym. Ogrzewanie skończyłem w zasadzie w maju i pod jego koniec i jakieś trzy dni po zalaniu 13-o stopniową wodą miałem temperaturę 26 stopni, ale od początku... Na...
(...) odczytu temperatury. Jaki zaproponowałbyś kod (AVR GCC), aby nie trzeba było używać delay'a (może pooling lub maszynę stanu) ? Przy okazji przedstaw optymalną (bez zmiennoprzecinkowych liczb) konwersję danych ze scratpad'a na stopnie (może być złożeniem liczb całkowitych jako stopnie i części ułamkowe). Do obsługi termometrów DS18B20 bez blokowania...
Wpadł mi w ręce uszkodzony tuner TV-Sat Echostar DSB-717 i postanowiłem jakoś go wykorzystać. A właściwie nie cały, tylko płytkę z wyświetlaczami i mikrokontrolerem ATTiny2313. Układ mierzy temperaturę w 6 punktach z wykorzystaniem czujników Dallas DS18B20 przy rozdzielaczu co na podłogówkę i grzejniki. Mierzę temperatury: - zasilania i powrotu z podłogówki...
http://obrazki.elektroda.pl/6119295500_1... Witam forumowiczów, jestem autorem modułu TTMSB, którego szerszy opis zamieściłem na swojej stronie internetowej 1. Cele Celem projektu była budowa modułu który za pośrednictwem otrzymanych z portu USB lub UART instrukcji będzie realizował następujące funkcje: - sterowanie dwoma silnikami DC, -...
Nie wiem na które pcb patrzysz , to ostatnie do pełnej wersji z pomiarem prądu i napięcia ,patrzę i widzę że jest OK . pin40 i pin39 są podpięte do dzielnika kondensator żeby nie pływał pomiar zbytnio. nie widzę tego o czym piszesz . Wieczorem sprawdzę jeszcze raz i podam zaktualizowane . Ok jest wieczór więc zamieściłem na 2 str. schemat i pcb w eagle...
Pierwsze stosuję procki które maja oporniki . Stosuję zasadę minimalnego połączenia , żeby była zachowana . Zasilanie musi pochodzić ze wspólnego źródła ale zawsze procesor musi mieć oddzielny stabilizator . Napięcie referencyjne robię tak jak zaleca to producent procka (chyba wie co produkuje) Zawsze stosuję 7805 bo wiem że jest OK i mam zawsze 5.02V(byle...
Dobry wieczór. Przepraszam za tak dużą zwłokę, ale ostatnio miałem zakuwanie na egzaminy szkoleniowe do pracy i nie miałem kompletnie czasu by myśleć o tym:( Musiałbyś pokazać przykład swojego programu. Najpewinej efekty o któych piszesz wynikają z tego, że nie korzystasz z peryferii mikrokontrolera - m.in. timerów, przerwać itd. A na siłę starasz się...
Witam Mam dwa układy DS1820 podłączone do atmegi48. Obsługa transmisji przez 1wire jest wykonywana cyklicznie w timerze. Problem jest taki, że przy timerze przeskalowanym na 8 co kilka pomiarów pojawiają się dziwne wartości. Gdy przeskaluję timer powyżej 8 to pomiary zawsze dają wynik -1. Używam bascoma. Z góry dziękuję
W chwili gdy obsługuje 1-Wire, Bascom ZAWSZE nawet na czas generowania resetu, co trawa ok 500us, później presence, co daje razem ok 800us, zawiesza przerwania. To samo w czasie transmisji danych, transmisja bajtu to ponad 500us zawieszone przerwania. W tym czasie nie wykona się przerwanie od timera, od i cała tajemnica. Ale zabobony. Każdy może otworzyć...
Ja również miałem problem z multiplesowaniem wyświetlaczy i jednoczesnym odczytem 1wire. Pomysł z wyłaczeniem przerwań od timera na czas transmisji 1wire okazał się prawidłowy. Ponieważ w trakcie pomiaru świeci się jeden wyświetlacz aby efekt był nie zauważalny możemy dokonywać pomiaru temeperatury rzadziej. Oto mój programik : $regfile = "m8def.dat"...
No i wszystko. Panowie, popełniłem błąd bo założyłem błędnie ten właśnie czas, nie wiem skąd mi się to w głowie pojawiło, przepraszam. Natomiast dzięki Waszym wyjaśnieniom i oscyloskopowi który służy mi nie od dziś, doszedłem do wszystkiego co aktualnie dla mnie istotne. Dziękuję za wyjaśnienia. Aktualnie z AtTiny85 wyciskam ile się da, i proszę mi...
[syntax=c]#define ONE_WIRE_SET_LOW ( GPIOA->BRR |= ( 1 << 3 )) #define ONE_WIRE_SET_HIGH ( GPIOA->BSRR |= ( 1 << 3 ))[/syntax] Powinieneś użyć normalnego przypisania "=", a nie logicznej sumy "|=". Nie ma to tutaj specjalnego znaczenia, ale warto o tym pamiętać. Sprawdź w manualu, czy timer którego używasz (jak wszystkie timery na...
Timer0 jest 8-mio bitowy a preskaler ustawiłeś na 1. Czyli 1Wire ma tylko 256 cykli. A potrzebuje kilkaset tysięcy żeby coś zdziałać z czujnikiem DS18B20. To ma działać w tle? Ładne mi tło: 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE Ja bym preskaler ustawił na 1024 i kod napisał tak*: Dim Pobierz_temp_counter As Byte...
Proszę. Pisałeś kiedyś, że przy okazji chciałbyś się czegoś nauczyć, więc masz tu przykład który napisałem przy kawie. Trzy różne czujniki- DS18B20, LM35 i Termistor NTC 10k - podłączone jednocześnie do jednego mikrokontrolera. Dla czujników NTC wyznacza się ich "Betę" czego nie robiłem dlatego wskazywana przez niego temperatura różni się nieco od tych...
Dziękuję kolego e marcus za wszelkie rady i instrukcje, zaraz poprawiam konfiguracje portu b. Według mnie przerywanie co 100ms jest używane przez program w pętli głównej programu, ponieważ co 100ms odwołuje się do 3 pod programów. Popoprawiałem wyszło coś takiego i działa jeszcze raz dziękuje wszystkim za pomoc: [syntax=basic4gl] '************* Konfiguracja...
Przy dołączonych peryferiach 1wire jest pewna przeszkoda w komunikacji. Należy na czas komunikacji z układem wyłączyć timer( czyli zatrzymać odmierzanie czasu, sam sprawdź na czas komunikacji zrób disable timer0, a po zakończeniu komunikacji enable timer0). Dlatego do odmierzania czasu powinieneś wykorzystać timer w trybie asynchronicznym, np.: Config...
#include <mega8.h> #include <stdio.h> #include <delay.h> #include <math.h> // 1 Wire Bus functions #asm .equ __w1_port=0x15 ;PORTC .equ __w1_bit=5 #endasm #include <1wire.h> unsigned int status=0, error=0; int temperatura=0, temperatura_zadana=0; unsigned char rom_codes[5,9]; unsigned char devices, ii; int ds1820_status=1,...
9V kolego, a stabilizator w układzie jest, tylko kwestia czy go nie spali przy 12 V czekam na odpowiedz na moje zasadnicze pytanie, mianowicie, uruchomienie drugiej linijki w lcd 2x16 przy zastosowaniu drugiego układu, co trzeba zmienic w programie (drugiego programu, dla drugiej linijki) prócz tego ze zmienic 1x16a na 2x16: 'Termometr 2-kanałowy DS18B20,...
Dzięki wielkie !! Pomogło , aczkolwiek nie rozumiem dlaczego bez tego też czasem działało zależnie od kolejności wpisów ? Teraz działa OK bez względu na kolejność wpisów, i reszty (czyli początku programu w którym pewnie jest mnóstwo innych błędów :-) ) [syntax=vbnet] $regfile = "m2560def.dat" ' specify the used micro $crystal = 16000000 ' used crystal...
Witam Piszę program (bascom) i nadziałem się na problem z którym nie mogę sobie poradzić. Timer 1 pracuje jako zegar i po spełnieniu warunku , ma załączyć przekaźnik który ma być załączony na czas_pracy i po odliczeniu czasu pracy ma wyłączyć się na czas przerwy i zablokować włączenia przekaźnika na ten czas. Tak w skrócie: kod : $regfile = "m8def.DAT"...
Atmegi mają wewnętrzny układ taktujący 1MHz, do tego trzeba zmienić ustawienia programowania w stk200 (przełączyć fuse na zewnętrzny kwarc). co do zworki - jakaś bzdura, 1wire niewymaga żadnych zworek, 1-wire to kwestja programu, timer służy do odmierzania czasu i niemusi byc połączony z portem. co do i2c- niewiem...
Chodzi o te zaznaczone ustawienia z obrazka. Są wstawiane jako domyślne jeśli się ich nie wpisze do kodu. Chodzi o to, że kiedy Bascom skacze do jakiegoś Sub to odkłada na stos te wcześniej omawiane dwa Bajty. W takim Sub już może tego nie widać, ale tez skacze np. do procedury odczytu czujników 1Wire. To już np. cztery bajty a w tym momencie nadchodzi...
heheh, już tak miałem wcześniej, ale przeniosłem ponownie tak ja mi napisałeś alien_audio i zastanawiałem się co mogłem popsuć, bo na logikę to po prostu MUSI działać :P Widać siedzenie do późna mi nie służy, bo... odliczanie sekundy trwało krócej, przez co 1wire nie zdążył konwertować, a już kolejne dane przychodziły do odczytu :P Tak to jest jak człowiek...
Witam! Napisałem a właściwie złożyłem sobie taki programik termometru na Wyświetlaczach 7 segmentowych i działa ok (na Timer1). Jednak dodatkowo chciałbym użyć 3 kanałów pwm więc za Multiplexowanie musi odpowiadać Timer0. Próbowałem różne wartości prescale i load i nie chce mi to działać na Timer0. Działający kod na Timer1: $regfile = "m32def.dat"...
Witam, projektuje urządzenie wykorzystujące pastylki DS1990 i w czasie pisania programu natknąłem się na problem z prawidłowym odczytem numeru klucza po przyłożeniu pastylki do czytnika. Nikiedy na wyswietlaczu otrzymuje calkiem przypadkowe dane. Błąd występuje w przypadku około 5% odczytów. Okrojony do minimum fragment programu: $regfile = "attiny2313.dat"...
Tak wygląda mój kod nadajnika Wyslij_rfm12 wywołanego przez flagę Flaga_wyslij
Dołożyłem obsługę przerwań wewnętrznego timera , i tutaj pojawił się problem. Czujniki zaczęły się "dławić" czasami (przez sekundę ) wskazywały mi temperaturę nierealną ( 400 st C) a czasami układ nie wykrywał czujnika Wszystkie te złe rzeczy dzieją się raz na kilkanaście sekund, jednak wystarczy to, żeby zafałszować inne zmienne (np temperaturę maksymalną)...
Po kilku dniach pracy urządzania stwierdziłem że jednak przydało by się żeby serwerek dodatkowo wysyłał dane do "https://thingspeak.com/" chociaż z termometru domowego. Próbowałem na rożne sposoby ale nie mam pojęcia jak to zrobić. Może ktoś z Was jest w stanie zmodyfikować kod ? Może kolega (at)bart-projects czyta ten temat? ;) (to ten sam kod co w...
Cześć, Układ zgrabny, ważne, że użytkownik zadowolony. Co do 1wire to myślę, (choć specjalista nie jestem), że można to zrobić bez wyłączania przerwan. Timer konfigurujemy w tryb normal, ale lepiej chyba w CTC, konfigurujemy, żeby uzyskać te 100Hz dla wyświetlaczy, czyli mamy już multipleksowanie zrobione :-), wysyłamy polecenie konwersji, liczymy 100...
czujnik 1wire esp8266 1wire 1wire przerwania
linux stary komputer chińska turbina wiatrowa proxima beninca
generator kwarcowy grundig wzmacniacz
Hormann Promatic 4 – 10 mignięć LED, błąd 8, brak reakcji na zwarcie 20-21, tryb fabryczny Hisense 32A5200F HX32.0000.E5300.FHT.01.01.K0618 Firmware Upgrade Steps