Robi się to prosto na wejściu ICP Atmegi, mierzysz czas pomiędzy kolejnymi zboczami, raz jest opadające, raz narastające itd.. potem to tylko interpretacja wyników, liczenie bitów i po odliczeniu 64 bitów z transmitowanych 66, bo dwa ostatnie dla uproszczenia procedury pomijasz. wyświetlasz na LCD lub wysyłasz po RS232 do komputera, a tam wyświetlasz...
Witam forumowiczów, zacząłem realizować projekt zegarka, kalendarza i termometrów z owego linku: http://obrazki.elektroda.pl/6128170300_1... Proszę o porady i sugestie jak można rozwiązać ten problem :P
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny . Nie było by w tym nic niezwykłego ( ustawiony...
Rozumiem że flagi które podaliście trzeba samemu zerować po wykryciu wartości true? Tak - musisz o to zadbać, choć są wyjątki np. odczyt danej z UDR zgasi samoczynnie flagę RXC, bo: When interrupt-driven data reception is used, the receive complete routine must read the received data from UDR in order to clear the RXC Flag, ... Pamiętaj, że flagi te...
Program zajmuje 50%. Może i jest źle napisany ale działa.. Ja bym to stwirdzenie troche skorygował; Program działa tak jak jest napisany!... bo - "Jest jeszcze jeden problem." Co jakiś czas temperatura podskakuje o 10 stopni a czasami nawet do 200 podskoczyło co spowodowało zbędne załączenie przekaźnika. Z czym jest problem? Popatrz na pracę timera0,...
To o czym piszesz to jest implementacja konkretnego algorytmu którego się trzymasz. Najwidoczniej nie najlepszego, skoro 16MHz nie wystarcza żeby odpowiedzieć na prosty impuls. Jak wrócę do projektu (może jeszcze jutro) to pokażę kluczowy fragment programu w C, rozwinięcie assemblerowe i oscylogramy. Dodano po 9 No i przy okazji jestem prawie pewny,...
To chyba jakiś primaaprilisowy spóźniony żart. Cały program nadaje się do śmieci: 1. Wyświetlanie realizujemy w przerwaniu timera, każde przerwanie na jedną cyfrę (cyfry lecą w pętli) 2. wzory cyfr zapisujemy w tablicy, a nie jako 10 funkcji... To mnie przekonuje do udziału tego kodu w konkursie na najgorszy program roku 3. Od razu w przerwaniu od odświeżania...
tadzik85 dziękuję za błyskawiczna odpowiedź. Próbowałem tego rozwiązania i niestety gdy w przerwaniu od SPI umieszczę flagę i bez względu gdzie realizuję odbiór czy w przerwaniu od timera czy w pętli głównej drugi bajt wraca do mastera czyli wydaje mi się, że ATmega nie nadąża z odczytem.
Tomqu z podanych przeze mnie linków ściągnij przykład 04 i podmień w nim main.c na: [syntax=c]#include"main.h" //**************************************... #define BUF_SIZE 8 // definiujemy bufor o rozmiarze 8 bajtów (musi byc potega dwójki dla tego sposobu!!!) // definiujemy maskę dla naszego bufora #define BUF_MASK...
Jedynie nie wiem jak obsłużyć odczytywanie danych. Do tego chyba ten bufor nie jest potrzebny, tylko jak to uwzględnić w przerwaniu? Sprawa z odczytem jest nieco bardziej skomplikowana, ale to też idzie rozwiązać. Niestety nie przedstawię na forum ani gotowego kodu, ani szczegółowego algorytmu. Mogę podpowiedzieć tyle. Przykładowo, jeśli chcesz odczytać...
Jeśli chodzi o tę poprawkę z poprzedniego postu, to jak na razie po 1 dniu nie ma błędów w zapisie. Tak, myślałem o użyciu FOR... NEXT i flagi od timera. Ciekawsze byłoby sprawdzenie, czy aktualny folder to ten do którego miał wejść, jeśli nie to ponowić Chdir, ale przeglądam help'a Bascoma i nic takiego nie widzę. Ale można by sprawdzić, czy jest w...
http://obrazki.elektroda.pl/9745806300_1... Witam. Sesja się zbliża, więc tradycyjnie zacząłem już prokrastynować :D . Ostatnio zacząłem pisać bibliotekę do obsługi klawiatury PS/2 w C dla AVR i postanowiłem na szybko w godzinkę lub dwie stworzyć jakiś praktyczny projekt w celu jej przetestowania. Początkowo nie planowałem tego publikować,...
programowo mogę np. sprawdzać Bit przepełnienia TOV1 i ustawiać flagę ale może są prostsze sposoby Dodano po 1 timer liczy do top a potem w dół do 0. To jest PWM poprawny fazowo
Witam Odświeżę wątek. Dodałem układ UDN2981A pomiędzy Atmege a wyświetlacze, wyrzuciłem tranzystory które sterowały anodami oraz ich rezystory z baz. Działa całkiem nieźle. Jest jedno ale... jasność. Steruje to takim kodem: [syntax=basic4gl] '************ Zegar 6 wyswietlaczy LED + PCF8563 $regfile = "m32def.dat" $crystal = 8000000 $hwstack = 64 ' rozmiar...
Jeśli chodzi o odczyt ID DS18B20, zrobiłem coś takiego: [syntax=basic4gl] Do Locate 1 , 13 Lcd T_solar1 Locate 2 , 13 Lcd T_solar2 If Flaga_wybor = 0 Then If Flaga_ds = 1 Then If Numer_ds = 1 Then Adres = 40 T_solar1 = Ss Gosub Odczyt_eeprom Elseif Numer_ds = 2 Then Adres = 48 T_solar2 = Ss Gosub Odczyt_eeprom End If Flaga_ds = 0 Flaga_wybor = 1 End...
Żeby nie było, że w przerwaniach ustawiam tylko flagi Hahaha :D Wiem na ile sobie mogę pozwolić przy danych założeniach :P Kiedy się już coś tam wie to się nie zgaduje "czy się uda" tylko się to wie :D Te ADC można czytać w Bascom z pominięciem Getadc() W plikach DEF są zaszyte również definicje pod nazwą WIO Pozwala to na odczyt dwubajtowych rejestrów...
Procedury przerwań zewnętrznych: Dodano po 1 z tego co wiem, w ISR pozostałe przerwania są wyłączane, czy mam rację ? nie istnieje więc chyba możliwość, że odpala się za dużo przerwań i łącznie za dużo rzeczy odkładanych jest na stos ? Swoją drogą wywołanie takie prostego ISR z jedną linijką kodu również wiąże się z odkładaniem wszystkich zmiennych,...
http://obrazki.elektroda.pl/7995180000_1... Witam! Jakiś czas temu rozpocząłem naukę pisania programów na mikrokontrolery AVR w języku C++. Przeczytałem wiele tutoriali, poradników, itp., aż w końcu doszedłem do pisania własnych, prostych programów. Po kilku takich „pseudoprogramach” zdecydowałem, że teraz czas napisać coś...
Wkleje plik includowany z obsługa LCD, który stosuje oraz czesc programu głownego: LCS.asm: ;=======================================... ; Obsluga LCD zgodnego z HD44780 dla 8-bitowej szyny danych v1.0 ; Nie obsluguje BUSY flag ani odczytu adresu z LCD ;!!! Znak lub komenda do wyslania do LCD przekazywane sa przez...
Żeby nie wykładać Ci wszystkiego na tacy powiem tak: zerknij do noty katalogowej swojego uP i przeczytaj opis Timera0 ustaw preskaler na wartość 1024 (jeśli korzystasz z kwarcu np 12MHz) TCCR0 |= (1<<CS02)|(1<<CS00); ustaw tryb CTC: TCCR0 |= (1<<WGM01); ustaw wartość przepełnienia tak, aby występowało co 10ms OCR0 = 117; // dla 12MHz...
Męczę się żeby wykonać jak najprostszą obsługę z eliminacją drgań zestyków 5 przycisków. Robię to w ten sposób: 1. Do każdego przycisku mam przydzielone 3 flagi i 1 zmienną(załóżmy że przycisk nazywa się "UP": - F_UP_POM - flaga pomocnicza do eliminacji drgań - F_UP - flaga właściwa przycisku (gdy F_UP=1 to przycisk wciśnięty) - F_UP_HOLD - gdy=1 to...
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ś...
korneliuszo Twoja metoda zadziałała, ważne było tylko żeby bufor był odpowiednio duży. Wydaje mi się jednak, że to rozwiązanie trochę zbyt brutalne przerywać przerwanie przerwaniem :) mirekk36 O to chodziło, dzęki! Te flagi to bardzo dobra sprawa. Czemu muszę skasować flagę to jasne. A mogę chyba ją skasować zaraz na początku IFa? Tak mi się wydaje...
Witam Używam Attiny2313 do pomiaru dwóch temperatur z DS18B20. Wynik ( Integer ) przesyłam bez żadnej obróbki przez UART przewodem 40 cm do Atmega328. Atmega rozbija odebrane dane i jest obróbka Kod Attiny2313 $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 4800 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5...
Moje rozwiązanie jest bardzo podobne do tego, o którym Ty mówisz z tą różnicą, że ja mam 2 bufory zamiast jednego. W przerwaniu timera masz tylko ładować do PWMa bajt z bufora wskazywany przez wskaźnik, nic więcej nie robisz w przerwaniu, a juz na pewno nie przeładowanie bufora lub jakieś inne czasowożerne procedury, tam tylko flagi. Ma to być jak najbardziej...
Witam. Otóż mam taki problem ;) Dwa czujniki DS18b20 podłączone są do osobnych pinów Atmegi168, PINB0, PINB1. Chciałem to zrobić w ten sposób aby w przerwaniu ustawiana była flaga (co sekundę) która realizowana była w pętli głównej while(1), w ten sposób, aby co sekundę na zmianę wykonywany został convert oraz odczyt. Wydaje mi się, że wszystko zrobiłem...
chodzi mi o to, że w przerwaniu od timera będzie jeszcze odczyt ADC I znowu można to zrobić w przerwaniu, również bez sprawdzania flagi... ;)[syntax=C]ISR(ADC_vect)[/syntax] http://www.nongnu.org/avr-libc/user-manu...
Hej :) Chcę podłączyć 3 czujniki odległości do kanałów ADC (porty PA1, PA2, PA3) i odczytywać z nich pomiary przez cały czas. Ponieważ po przetestowaniu czujników doszłam do wniosku że pewne czynniki wpływają na niestabilność pomiaru, chcę jako ostateczny wynik wziąć średnią arytmetyczną z 8 pomiarów przeprowadzonych w trakcie jednego cyklu pomarowego...
3. Co masz na myśli funkcje czujników niedostosowane do przerwań ? Bo są w nich delaye ? Jeśli tak to jak inaczej miałbym poczekać na zakończenie jakiejś konwersji ? Poczytaj o maszynie stanów. Np tak: zmienna licznik odlicza za pomocą np. timera programowego odcinki czasu przykładowo 50ms poniżej pseudokod procedura_nieblokujaca() // wywołanie jeżeli...
Przecież liczby hex są bardzo łatwe do odczytu bo to są cztery wartości binarne, razem 16. Nie wiem do czego wam ten kalkulator? A niektórzy nawet zegarki binarne robią. Do ich odczytu potrzeba 60 liczb binarnych czyli w okolicach 4 razy więcej, i jakoś sobie z tym radzą. Kwestia przyzwyczajenia, tak samo jak do zapisu dziesiętnego też trzeba się przyzwyczaić....
SIGNAL(SIG_INTERRUPT0) { short int a; lcd_xy(0,0); write_text("Temp:")... GIFR = 0x40; a = odczytaj_temp(); write_temp(a); zapis_twi(0x00,0x04); //reset flagi wyst przerwania w pcf GIFR|=_BV(INTF0); lcd_xy(1,0); zapis_twi(0x07,0x80); //ustawienie wart poczatkowej...
Jakiej wersji kompilatora używasz? Get RC5 domyślnie używa timera0 a Atmega8 to nie to samo co Atmega88 i timery są inne, inne rejestry sterujace. Zobacz do noty np. Timer/Counter Control Register TCCR0 w ATMega8 steruje preskalerem a w ATMega88 TCCR0B Timer/Counter Control Register B, dwa różne rejestry inne adresy, różne też są flagi zdarzeń timerów...
Witam Interesujące rozwiązanie. Nie wiem tylko, czy da się je wykorzystać w przypadku skorzystania z ESP8266 ( zapomniałem wspomnieć ,że z niego korzystam ). Wykorzystuje taki kod ( publikował go Kolega Pusiek ), nieco go rozbudowałem o "zabezpieczenie" właściwie sprawdzenie, czy jest internet, gdyż gdy go nie będzie, program się zatrzyma. [syntax=vbnet]...
TIFR.5 = 0 bit TIFR.0 (TOV0) ustawia się na zero(czyli tak jak chcę) a ICF1 czyli TIFR.5 pozostaje w stanie 1 Czyli osiągam zamierzony efekt skasowania flagi TOV0 ale dziwnym sposobem ? Generalnie kompilatory zerując jakiś bit w rejestrze robią to w ten sposób: # odczytują wartość rejestru, # wykonują funkcję AND tej wartości ze stałą, w której tylko...
Jest tego sporo, DCF77, 7 x DS18B20 i DHT11 ( akurat jeśli chodzi o niego to mam wątpliwości, czy ten kod działa, bo jest na obydwu płytkach podpięty i zdarza się zawieszenie ) Nadajnik Atmega328p Dodano po 16 Odbiornik Atmega644P - trochę zmieniłem obsługę przerwania, wydaje mi się, że w przerwaniu nie powinno się wykonywać dużych obliczeń. [syntax=basic4gl]...
Witam! Wielkie piwo dla kol. TMF i JANBERNAT za naprowadzenie na tak błahą sprawę a jakże ważną. Oczywiście! Tablica dla próbek, zablokowanie timera, wystawienie flagi zapełnienia tablicy i dopiero odczyt UARTEM z dowolna prędkością. Rzecz jasna wszystko działa. Oto efekt: http://obrazki.elektroda.pl/2230963600_1... Dziwie sie samemu...
Nasuwa mi się jeszcze jedno pytanie: Czy odczyt temperatury z DS18xxx, mogę zrealizować w przerwaniu, wykonywanym co 1sek, z użyciem Timera1? widzę, że już trochę programujesz i robisz różne rzeczy na elektrodzie - to powinieneś wiedzieć - że nigdy nie daje się żadnych długotrwałych operacji w przerwaniach - nigdy ale to nigdy! ;) stosuj flagi - tak...
Witam. Mam problem z prawidłowym odczytywaniem danych z eepromu atmega 8. Dzieje się to po kilkunastu startach procesora, zamiast np. 90 wskakuje mi 10 lub inne głupoty... do procka mam podłączony kwarc 8MHz z każdego +5V 100nF, reset podciągnięty do +5V przez 5,1k i kondensator 100nF do masy, fusy mam ustawione na CKOP = 0 , kwarc zewnętrzny czyli...
Aaa, już rozumiem. W poprzednim wątku źle zrozumiałem obsługę flag. Myślałem, że w przerwaniu ma być wywołanie funkcji i pod koniec funkcji ustawienie flagi na wyświetlacz. Przez to miałem problem z obsługą tego. Teraz już wiem... Wstawię flagę w przerwanie, tak jak dobrze radzisz. Co do funkcji get_temp - oczywiście odczyt temperatury będzie docelowo...
Witam Serdecznie PanowieTemat mam pewiennieaktualny problem a mianowicie zrobiłem ten sterownik http://mirley.firlej.org/prosty_sterowni... wszystko ładnie się zaprogramowało fuse bity ustawione po załączeniu działają wszystkie funkcje lecz niestety nie pokazuje mi temperatury niby trzeba trzymać przycisk s1 na pierwszy cujnik ds18b20 i go wpisać...
http://obrazki.elektroda.pl/2645142000_1... Sterownik diod LED został wykonany w celu automatycznego lub zdalnego sterowania oświetleniem LED w zależności od jasności w danym pomieszczeniu. Układ sterowania oparty jest o mikrokontroler ATmega16/ATmega32 firmy Atmel, który w zależności od oświetlenia w danym pomieszczeniu steruje jasnością...
Witam ponownie, Nie pokazałem całego kodu nie ze względu na to że ktoś mi go może ukraść jak to napisał kolega ale właśnie z racji tego że jest on napisany przez amatora. Jest to mój pierwszy projekt z mikro kontrolerem oraz językiem C. Wcześniej trochę bawiłem się z PHP oraz HTML i nić po za tym. Dlatego nie chciałem abyście po mnie pojechali... Wracając...
Jak nie działało tak nie działa ;( Dzisiaj byłem u mojego opiekuna projektu, dał mi parę wskazówek co można poprawić i czego spróbować, ale nie znalazłem jednoznacznego błędu w moim algorytmie. Dodałem obsługę i wyświetlanie wyników na LCD i podpinałem się dla pewności pod oscyloskop. Używając jednego kanału, obojętnie którego wszystko jest ok, idealnie...
Czekaj, czekaj. Jeden czujnik odpali przerwanie INT0 a w tym przerwaniu sie uruchomi timer. Drugi czujnik po INT1 ma go wyłączyć. Raczej o tym myślałem. Lepiej tak: czy ktoś by mi dokładnie wytłumaczył jak wywoływać timery, zbierać z nich czas, do czego służą poszczególne rejestry. Noty katalogowej tego procka po polsku nie znalazłem, a dobrego poradnika...
http://obrazki.elektroda.pl/5336859500_1... Projekt został zrealizowany na potrzeby sterowania urządzeniami zasilanymi z sieci 230V , świetnie nadaje się jako sterownik do wytrawiarki lub innych tego typu urządzeń, w których konieczne jest utrzymywanie stałej temperatury. Układ oparty jest o mikrokontroler ATmega8 firmy Atmel , który...
Jeśli ma to być tylko termometr, to obejdzie się nawet bez timerów. Nie ucz się wykonywać poważny kod w przerwaniach. Tam mają być tylko zasygnalizowane pewne działania, np. ustawienie falgi do odczytu czegoś tam, a dopiero kod w funkcji głównej po napotkaniu flagi to robi. Unika się wykonywania zajmującego cykle podprogramu w przerwaniach ze względu...
Witam, od jakiegoś czasu próbuję stworzyć sobie zegarek z termometrem + napięcie akumulatora do auta. Wszystkie programy osobno działają bez zarzutu. Problem zaczął się z chęcią wprowadzenia przełączalnych ekranów i wprowadzeniu przerwań. Doczytałem że przerwania skutecznie psują komunikację z DS'ami przez co temperatura się nie odczytuje. Ogólnie to...
Witam. Realizuje właśnie projekt układu który steruje panelem słonecznym i mam pewien problem, mianowicie wyświetlacz nie reaguje na mikrokontroler (cały czas wyświetla tylko czarne prostokąty w pierwszej linii). Korzystam z gotowych bibliotek hd44780.h: http://obrazki.elektroda.pl/9528292600_1... Próbowałem bibliotek z kilku różnych...
Jeśli chcesz gotowego rozwiązania to napiszę jak sam robię takie systemy: Deklaruję pewną strukturę globalną, koniecznie volatile, w której umieszczam flagi w zależności od tego ile ich potrzebuję, np.: [syntax=c]volatile struct sZmienna { unsigned char Pomiar :1; unsigned char Timer :1; unsigned char Odswiez_LCD :1; //itd. }Zmienna;[/syntax] Następnie...
Witam Programuję swojego Atmegę w AVR studio korzystając z AVR GCC. Mam program, znaleziony na elektrodzie (zamieszczony poniżej). Problem polega na tym za każdym razem kod RC5 z pilota jest odrzucany jako że transmisja jest rzekomo przerywana (zaznaczyłem to miejsce w programie). Gdy miejsce to zahaszuję, program wydaje się działać, tyle że kod RC5...
Nie do końca wiem o co Ci chodzi , hm mógłbyś jakiś przykład dać? Myślałem jeszcze o użyciu pamięci EEPRom tylko pewnie na długo by nie wystarczyła zapis/odczyt przy codziennym użytkowaniu Chodzi mu o to abyś nie blokował processora liczeniem czasu (te Waitms 750 czy 780 ms). AVR jest 'single task' processor i nie może wykonywać więcej niż 1 czynności...
Przesyłam fragment kodu dla "paluch_gda" jedną cewką zapłonową na dwa obroty wału (pełny cykl pracy) na jednej cewce generowane są 4 takie "odcinki czasu" (iskra przeskakuje po raz na każdej ze świec), więc na 1 obrót wału przypadają 2 "odcinki czasu". Dzielimy więc wartość Nr (liczba "odcinków czasu" w 1 minucie) przez dwa i otrzymujemy prędkość obrotową...
pętla chce czytać wszystkie w pętli for(). A spójrz w swój kod ? po ustawieniu flagi pierwszy raz, w pętli głównej i tak odczytujesz 4 wartości, gdzie w tablicy aktualna jest jedynie jedna (i jedyna bo tablica jest w sekcji noinit)! A nie działa to zbyt dobrze bo skopałeś nieco obsługę przerwania, dla Ciebie zagadka - dlaczego? :) jeszcze jedno mi...
Cześć, ostatnio nie miałem czasu, także przepraszam za brak odpowiedzi. Program jest taki sam jak w pierwszym poście, tylko podmieniłem wzory na czas: RC5_main.c [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/sleep.h> /* Załącz bibliotekę RC-5*/ #include "dd_rc5.h" /* LED testowy...
Witam wszystkich! Pewnie pomyślicie "znowu to samo", no ale zlitujcie się w Wigilię i przeczytajcie te kilka zdań :D Walczę z problemem od kilku dni. Nie potrafię skonfigurować Timera by konwertował dane z 1wire poza główną pętlą. Nie mogę sobie pozwolić na waitms, bo wtedy mam problemy z poruszaniem się w menu. Mam już działający Timer1 odliczający...
Mam prośbę do tych znających lepiej BASCOMA, o przeanalizowanie tego kodu. Program po pewnym czasie wysypuje się. Temperatura co jakiś czas waruje. Podprogramy działają, ale całość nie chce współpracować. Z góry przepraszam za jakość kodu. [syntax=vb]'--------------------KONFIGUR... $regfile = "m16def.dat"...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
Problem leży w sposobie działania biblioteki TWI_Master i miejsca, skąd jej pośrednio używasz. TIMER0_OVF_vect, jak i każde inne przerwanie, uruchamia się z czasowo wyłączonymi przerwaniami, dlatego ani sonar_request, ani sonar_gets_distance nie zadziała z tego miejsca. Polecenia zostają zakolejkowane, i może tylko TWI::START zostaje wykonany. Możesz:...
A kto powiedział, że musisz czekać? Wystawiasz sobie 2 flagi w przerwaniu timera co określony czas i potem w pętli głównej (która "leci" cały czas bez milisekundy zwłoki) sprawdzasz i jak trafisz na flagę to ją kasujesz i wykonujesz jej zadania. Jednocześnie jeśli w przerwaniu wiesz, że flaga jest skasowana z programu głównego, to wtedy wiesz że zadanie...
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
] Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dlatego napisałem..."Nie znaczy to jednak..." w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość taktowania 8MHz i prescaler 256. Przecież czas (1 sec.) odmierzasz timerem0, który jest 8-bitowy...
'---------------------------------------... '---------------------------------------... '--------WAV PLAYER-----16kHz 8bit mono------------------------------------... '---------------------------------------... '---------------------------------------...
Witam Mam problem z odbiorem sygnału rc5 a dokładnie buduję zegar na wyświetlaczu 7-seg w oparciu o atmege8 i układ pcf8583. Jak na razie wszystko mi działa i odczytuje czas i wyświetlam go lecz po dodaniu wierszy kodu programu odpowiedzialnych za odbiór rc5 program się wiesza i nic nie realizuje, a na wyświetlaczu są same zera... Nie mam już pomysłów...
Przygotowałem specjalnie do testu [syntax=vbnet] $regfile = "m1284pdef.dat" $crystal = 8000000 $hwstack = 128 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu programowego $framesize = 128 $baud = 9600 '************ Config Timer0 = Timer , Prescale = 1024 ' 1 sekunda = 50 On Timer0 Czas0 Timer0 = 98 Enable Timer0 Enable Interrupts '*********************...
Walczę i walczę z tym programem ale nie daje rady.... :cry: Wrzucam cały kod, jest on zrobiony na bazie jak wspomniałem wcześniej: Projekt powiadomienia o alarmie by Xury wersja 2.0 [syntax=basic4gl] '***************************************... 'Projekt powiadomienia o alarmie by Xury wersja 2.0 'Działanie na przerwaniach...
na każdym który napiszę jest tak samo, w nowym temacie powyżej podałem ustawienia fuse bitów, zaraz wkleję kawałek na którym teraz się bawię Dodano po 4 to kod na którym teraz się bawie '***************************************... '-------------------- konfiguracje ----------------------------------------... $regfile...
Witam. Nie dawno wybudowałem altanę na działce. http://obrazki.elektroda.pl/1427697700_1... http://obrazki.elektroda.pl/9627191600_1... Chciałbym w niej sterować gniazdkami, przyciskami do oświetlenia i oświetleniem. Każde gniazdko będzie miało podświetloną obwódkę wykonaną z pleksi, podświetlenie na diodach RGB sterowanych...
udało mi się złapać profesora i przedstawiłem mu problem wynikający z zasilania z baterii. Powiedział, że rzeczywiście w takim wypadku nie ma sensu i że mogę zrobić zasilanie z sieci.Sprawia to, że: - mogę zastosować spokojnie stabilizator LM7805 nie kombinując już z przetwornikiem Tak zrób. Tylko daj temu stabilizatorkowi radiator, np. nie muszę ograniczać...
Jestem w trakcie pisania programu na Atmegę8. Mam zdefiniowane trzy przerwania: [syntax=c] ISR(INT0_vect) { net = 0; //wywołanie co 10ms 50Hz } ISR(ADC_vect) { pomiar = ADCW; } ISR(TIMER1_COMPA_vect) { PORTC ^= 0x10; if (enable_flag == 1) { step++; } if (step == 5000) { step = 0; } } [/syntax] Obecnie pierwsze przerwanie INT0 jest nieaktywne. Początkowo...
Witam mam problem z programem do trawiarki mianowicie znalazłem na necie program do sterowania trawiarką chciałem do tego dopisać wybór menu żeby było jeszcze był drugi tryb sterowania trawiarką. Wgrałem program do uC i działało poprawnie potem chciałem wgrać ten sam program bez żadnych zmian na inna ATmege8 i okazuje się że teraz program działa trochę...
Dzięki wielkie- ale to nie do mnie pisałeś. O Atomic_Block dowiedziałem się w czwartek- sprawdziłem- od czwartku jest to pierwsza wiadomość na ten temat. A wracając do tematu Fir3man- wymyśliłem taki schemat programu: #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> volatile uint8_t dol;...
Poczytałem trochę bo właściwie nie wiedziałem nic, na temat timerów i napisałem ich subrutyny. Podczas liczenia prędkości zmienne czas_s/czas_ch będę mnożył przez 0.004 i dzielił przez podaną drogę. Co ty na to? Dalej jest nie dobrze....., bardzo nie dobrze(!) Zacznijmy od Timera2: Predkosc_chwilowa: Timer2 = 1536 Timer2 ma rejestr 8-bitowy, więc nie...
Dzięki wszystkim za opinie. Oddałem dziś projekt został oceniony na 5;] Dokonałem kilku zmian w programie więc wrzucam nową wersję: http://obrazki.elektroda.pl/8149391200_1... Jeśli już eliminujesz drgania styków programowo i w dodatku z użyciem timera, to mogłeś się pokusić o tak samo zrealizowane opóźnienia. Mnóstwo pamięci pożera...
Bardzo dobrze. Kilka uwag: 2,049ms i tu pada pytanie czy taki czas jest wystarczający w końcu nieco dłuższy od pełnych 2ms Idea jest taka że licznik ma się przekręcić co najwyżej raz w czasie impulsu o najdłuższym możliwym czasie trwania. 2.049 ms teoretycznie powinno wystarczyć nawet biorąc pod uwagę fakt, żę wewnętrzny oscylator jest fabrycznie skalibrowany...
Witam serdecznie, jestem początkującym jeśli chodzi o programowanie w c na avr. Celem mojego zadania jest zaprojektowanie termostatu z użyciem czujnika temperatury dwóch diod sygnalizujacych, przycisku do programowania termostatu oraz przekaźnika jako elementu wykonawczego. Poniższy kod napisałem na atmega8 jednak można byłoby zastosować uboższego avr...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
Witam, mam problem z transmisją za pomocą modułu UART. To co chcę osiągnąć to z poziomu Matlaba móc sterować wartością PWM podawaną na silnik. Algorytm działania jest następujący -> Z Matlaba wysyłam wartość (typu string) np. "1700". Mikrokontroler odbiera tą wartość, a po odebraniu jest odsyłana z powrotem do Matlaba. Problem jest taki, że poza...
Witam, tworzę menu dla mojego termometru z wykorzystaniem 3 przycisków. Sęk w tym, że nie chcę to za bardzo działać i nie wiem za bardzo co powoduję, że nie mogę kontynuować programu. Sprawa wygląda tak, że mamy teoretycznie jak na razie zdefiniowane 2 ekrany, które wyświetlają temperaturę pokojową oraz zewnętrzną. Wykorzystałem do tego zmienne uint8_t...
Witam. Mam następujący problem z SPI (i nie tylko) Najpierw opis układu: Atmega32A master SPI Atmega8 Slave. (przerwania) Wszystko taktowane wewnętrznie na 8MHz Do atmegi8 są przyłączone 4 wyświetlacze 12 diodowe WA przez tranzystory. Katody do portów (oczywiście z R) Wyświetlanie multipleksowane. Do tego 8 przycisków - jako, że brakło portów to "klawiatura"...
Tak właśnie mam tak zrobione. Ale wolałbym jednak móc podawać ID czujnika do odczytania do funkcji np tak: Declare Function Myfunction(Byval I As byte) As string Z = Dsid1(1) ' ID czujnika 1 T = Myfunction(z) Function Myfunction(byval I As Byte ) As String 1wreset 'Resecik 1wwrite &H55 'Będzie odpowiadało tylko urządzenie...
Jeśli źle umieściłem temat to bardzo proszę o przeniesienie. Kod który wklejam : http://obrazki.elektroda.pl/7428430100_1...
popełniłem swego czasu taką obsługę Getrc5 w przerwaniu z wykorzystaniem bitu Toggle, który przydaje się do sprawdzenia czy mamy wciąż wciśnięty klawisz - wtedy zmienna Repeat = 1 a gdy tylko raz to Repeat = 0. To się czasem przydaje i fajnie można wykorzystać, oto przykładzk - hmmm może troszkę rozbudowany bo z wstawkami asemblerowymi ale można je...
Witam, zlozylem sobie ten uklad, edytowalem program tak aby wpisac swoje numery tel. i nie moge uruchomic tego ukladu, narazie bazuje na pierwszej wersji programu od Xury'iego i jego schemacie, moze ktos mi powiedziec czy ten program powinien wystartowac? Rem Projekt powiadomienia o alarmie by Xury '$sim 'dla symulacji $regfile = "m8def.dat"...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
Ja się zawsze zastanawiam skąd się biorą u tylu ludzi , początkujących te schematy bez podłączonego AVCC i AGND ??? przecież - trąbi się o tym nie tylko w nocie PDF ale i na forum - no wszędzie. Wprawdzie ATmega8 ma zwarcie wewnątrz pomiędzy VCC i AVCC ale nie podłączanie jeszcze niefrasobliwie drugiej nogo GND to już - proszenie się na własne życzenie...
Dodaje kod do zapisu daty i czasu w PCF8563 [syntax=basic4gl] '********************* Funkcja ustawiająca zegar PCF8563 Sub Settime_pcf Ssek = Makebcd(s) 'sekundy Mm = Makebcd(m) 'minuty Hh = Makebcd(h) 'godziny Dday = Makebcd(day) 'dni Wwk = Makebcd(wk) 'dni tygodnia Mmonth = Makebcd(month) 'miesiace Yyear = Makebcd(year) 'lata I2cstart 'warunek startu...
Witam wszystkich, Potrzebowałem uruchomić układ z większą ilością termometrów DS18x20, które będą rozlokowane w różnych miejscach domu i poza nim. Część z nich będzie wpływała na uruchomienie ogrzewania, inna część będzie tylko informacyjna. Jeszcze inna będzie miała za zadanie zabezpieczenie elektroniki przed przegrzaniem. Taki w ogólności jest zamysł...
Witam, stworzyłem na płytce stykowej układ, gdzie podłączyłem przyciski, LCD hd47780, rtc ds1307 i buzzer. Korzystam z bibliotek do wyświetlacza od "radzia", TWI od p. Mirka oraz ze znalezionej na tym forum biblioteki do RTC. Napisałem szybki program, który wyświetla godzinę w formie hh:mm:ss na ostatnich polach pierwszej linii. Dodatkowo dodałem przerwanie,...
Żeby pisać na mikrokontrolery w C++ trzeba znać ten język bardzo dobrze. Niestety mikrokontroler to nie PC i nie "wybacza" nieprzemyślanych konstrukcji, które kończą się alokacją ogromnych ilości pamięci. Tak konkretniej to chodzi mi o nieprzemyślane używanie klas. C na mikrokontrolery jest znacznie łatwiejszy. A mógłby ktoś napisać w C++ i w C program...
Tak jak piszesz. Przerwanie od Timera przelicz sobie aby się wykonywało odpowiednio szybko (mi zazwyczaj wystarcza ok 10 razy na sekundę) a w przerwaniu sprawdzaj stan przycisków. Jeśli jakiś jest wciśnięty - ustaw flagę a w programie głównym ją obsługuj. W Twoim przypadku, musisz napisać obsługę przerwania: Do tego czy da się zrobić tak żeby temperatura...
Witam, na wstępie dodam że jestem bardzo początkujący w programowaniu. Staram się stworzyć program który by włączał i wyłączał funkcję RGB, poprzez pilot RC5. Staram się to zrobić po kolei i najpierw próbuję gasić i zapalać pilotem diodę. Problemem jest to, że program reaguje na każdy przycisk a nie na konkretny - zaprogramowany. Chce sterować klawiszem...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
Jako, że od niedawna sam uczę się dopiero C, to proszę bardzo poniżej, najpierw kod do odbiornika RC5. Sprawdzony, krótki i odporny na zakłócenia oraz kody z innych pilotów - działa wyśmienicie i w ciekawy sposób wykorzystuje bit TOGGLE: // zmienne do obsługi kodów IR w standardzie RC5 volatile uint8_t address; // adres RC5 volatile uint8_t command;...
Witam serdecznie. Nie miałem pomysłu na lepszy temat. Kupiłem dzisiaj na giełdzie pilot uniwersalny do rtv. http://obrazki.elektroda.pl/9281765900_1... Na opakowaniu jest napisane że działa z min. Sony i Phillips czyli kodowanie RC5 jest, tak mi się przynajmniej wydaje. Faktycznie na moim tv Sony działa. Chciałem zrobić odbiornik na Atmega8,...
A kto powiedział że musisz go wyłączać? Istnieje lepszy sposób: robisz sobie flagę którą resetujesz w pzrerwaniu od timera. Potem wystarczy dodać coś takiego: Set Flaga : While Flaga = 1 : Wend Takie coś wstawiasz tam gdzie wcześniej musialeś wyłączać przerwania. Działa to tak że uc czeka aż wykona się przerwanie i dzięki temu wiemy że miało...
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...
Oj coś koledzy krążycie wokół tematu a nie widzę nigdzie pełnej odpowiedzi. Niektóre są za to błędne albo upraszczające. F_CLK_ADC, to tak jak ktoś pisał, tylko częstotliwość taktowania ADC. A że jest to przetwornik typu SAR (z sukcesywną aproksymacją) to konwersja 1 próbki trwa n cykli zegara F_CLK_ADC. W przypadku tego ADC jest to: - 25 cykli dla...
Wedle życzenia wstawiam wszystko jak leci Program główny [syntax=c]//Sterownik wytrawiarki PCB, LCD2x16, ds18b20 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include "HD44780.h" //plik sterowania LCD #include "ds18b20.h" //plik odczytu z DS //makro przycisku #define KEY (1<<PC7) //makra...
To "disable interrupt" i "enable interrupt" to masło maślane. Jak wchodzi w przerwanie to i tak blokuje inne. Zrób tak jak proponuje xury. A wogóle to zrób tak- ustaw sobie timer np. na 10 czy 100ms. W Timerze ustawiaj tylko flagi. A w pętli głównej zwiększaj wartość każdej flagi. A później tak- jeśli flaga osiągnęła jakąś wartość- to ją kasujesz i...
Stos OK. Mówię Ci. Skasuj flagę przed "Enable INT1". Generalnie kolejność mam w kodzie taką: Config Int0 = Falling 'opadajace zbocze wywoluje przerwanie Config Int1 = Falling 'opadajace zbocze wywoluje przerwanie Config Timer0 = Timer , Prescale = 8 'konfiguracja Timer0 jako timera z preskalerem przez 8 'Przerwanie od przepelnienia Timer0 jest generowane...
atmega flagi atmega przerwania timera schemat timera atmega
obliczy wentylator gniazdo karty pcmcia modbus ciepła
HP LaserJet M110w toner 142A – ceny oryginału i zamienników, koszt strony, chipy v5 2024 Brak sygnału na ASUS VG32AQA1A z RX580 przez DisplayPort