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...
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ć,...
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,...
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...
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...
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...
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...
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,...
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ć...
Ż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...
Ż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...
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...
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...
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...
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...
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ć....
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...
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...
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 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
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...
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...
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 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...
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...
Wstawiam kod po sformatowaniu. ctrl+a, ctrl+i [syntax=c]/* * main.c * * Created on: 26 sty 2016 * Author: WUJEK */ #include <avr/io.h> // dołączenie głównego systemowego pliku nagłówkowego #include <avr/interrupt.h>// dołączenie pl. nagłówkowego potrzebnego do obsł. przerwań #include <avr/pgmspace.h>// dołączenie pl. nagłówkowego potrzebnego...
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...
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...
Jak dam dword to kompilator wywala mi blad niechce sie skompilowac...dlatego dawalem word i moze przez to niedzialalo. Pozniej sprubuje tylko na zaplonie pobujac i sprawdzic. Ale dziwne bo nawdr gdyby tam raz na jakis czas spadlo do 4L to srednia nie wyszla by 4L. Musialo by byc przez 10 pomiarow okolo 4L. Wrzuce tez pelny kod bo teraz pisze z kom....
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...
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ą...
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ś...
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ą...
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ć...
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...
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. 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"...
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ć...
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...
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...
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,...
spi_transfer(RF12_PMC | RF12_DC); spi_transfer(RF12_TRWC | 0xaa); rfm_sreg = spi_transfer(RF12_SRC); 1. Wyłączyć wszystko (ewentualnie zostawić to co potrzeba, ale wyłączyć nadajnik). 2. Przesłać do kolejki nadajnika bajt danych (tutaj jest fragment preambuły, wyśle się po ponownym uruchomieniu), to powoduje że nadajnik przestaje...
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...
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...
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...
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,...
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...
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...
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 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ę...
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...
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...
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;...
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...
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...
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 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...
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...
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 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...
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...
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.
taktowanie procesora: 16MHz atmega32a main.c: [syntax=c] int main(void) {/* sprawdzamy ile czujników DS18xxx widocznych jest na magistrali */ czujniki_cnt = search_sensors(); /* wysyłamy rozkaz wykonania pomiaru temperatury * do wszystkich czujników na magistrali 1Wire * zakładając, że zasilane są w trybie NORMAL, * gdyby był to tryb Parasite, należałoby...
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...
Napisałem wersję "new core" dla tego projektu. Niestety zajmuje 82 procent flasha w Atmega8 Dlatego w załączniku jest skompilowane archiwum. W przyszłości planuję napisanie programu, który w łatwy sposób pozwalałby edytować dane w EEPROM, czyli zmieniać treść SMS i numery telefonów. [syntax=vb]'****************************...
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...
] 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...
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ł...
wlasnie chodzi o to, ze w przerwaniu ustawiam tylko flage. I nie wiem co mu pochlania tyle czasu. W sumie po wujsciu z przerwania w głownej petli jest jescze warunek if , wlaczenie timera i odczyt rejestru, ale to chyba nie pochlania 50 instrukcji
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
Oto i źródło, może Wy zauważycie coś dziwnego... [syntax=c] // PINY WEJŚCIOWE #define ZIELONA PIND5 #define CZERWONA PIND6 #define DEBUG_PORT PORTD #define DEBUG_DDR DDRD #define ZOLTA PIND3 #define KL_PORT PORTC #define KL_PIN PINC #define KL_DDR DDRC #define LEWO PINC0 #define DOL PINC1 #define PRAWO PINC2 #define GORA PINC3 #define LEWY PINC4 #define...
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,...
Jeśli źle umieściłem temat to bardzo proszę o przeniesienie. Kod który wklejam : http://obrazki.elektroda.pl/7428430100_1...
Witam Już wiem co miałem nie tak. Opóźnienia to jest to na co trzeba uważać w dallasie (jak tego nie zrobisz porządnie, to nici z Twojej pracy). Ja wykorzystywałem na początku delay’a który najmniej mógł zliczyć (teoretycznie) 5,7814us (bo #include <avr/io.h> #include <stdlib.h> ///////////////////////// LCD define /////////////////////////////////////...
http://obrazki.elektroda.pl/3089511800_1... Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który...
Witam Oglądam sobie dokumentację do PCF8563 i brakuje mi w nim generowania przerwań (na pinie INT) co sekundę jak robi to PCF8583. Wolałbym nie używać pinu CLKOUT skonfigurowanego do pracy przy 1 Hz. Kiedy używam PCF8583 ATMEGA w przerwaniu zewnętrznym generowanym przez PCF odczytuje sekundy, a jak trzeba to minuty i ... tak dalej. W PCF8563 widzę teoretycznie,...
Ż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...
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...
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ś...
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"...
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,...
Bascom - wersja 1.11.95 Kod, no jest tego sporo: - zegar PCF8563 - Zapis na SD - dwa czujniki DHT11 - odczyt z PCF8574AP ( klawiatura ) - RC5 - ma być DS18B20 - ma być DCF77, ale nie doszedłem do tego momentu ( tzn testowałem na innym procesorze i działało ) Działa - zegar PCF8563 - dwa czujniki DHT11 - odczyt z PCF8574AP w przerwaniu ( klawiatura )...
Witam Do pomiar prędkości obrotowej wentylatora z PC chciałem użyć sygnału z czujnika halla, całość podłączone jak na schemacie poniżej do wejścia atmegi 16 ICP1. Chciałem użyć również wbudowanej funkcji timera 1 do pomiaru okresu. I teraz co nie działa... Pomiar jest mało dokładny i strasznie skacze - przy pomiarze prędkości obrotowej max (7200) wynik...
Najtrudniej analizuje się własny kod, bo zawsze patrzy się przez pryzmat wiedzy o tym co on powinien robić i nie dostrzega się drobnych błędów :) Zgadzam się z tym w 100%. Przy Bascomie rzadko sięgałem do PDF'ów kontrolerów, przy C nie da się bez tego wszystkiego zrobić. Bez tych 500 "przekręceń" licznika nawet w Bascom by nie poszło, jak zwykle zbyt...
Witam. Napisałem kod na procesor jak w temacie, zaprogramowałem go (z małymi problemami, ale po zwiększeniu w programie /Dybkowski/ wartości częstotliwości kwarcu udało się), podłączam LCD i nic. W ogóle nie dochodzi do inicjacji. Podejrzewam, że może coś skopałem przy odczycie z wewnętrznej EEPROM. Proszę o sprawdzenie i/lub ewentualne sugestie. Dziękuję...
Witam piszę prosty program wyświetlający różne zmienne z programu na wyświetlaczu LCD. Wyświetlacz podłączyłem i wszstko gra, moge wyświetlać napisy ale nie mogę wyświetlić zmiennych. podam kod do mojego programu i krótko go opiszę: Program miał wyswietlac godzinę na wyświetlaczu, do odliczania 1 sekundy wykorzystałem timer 16 bitowy z preskalerem 64....
http://obrazki.elektroda.pl/3025550100_1... Mając do dyspozycji jedną matrycę 8x8 czerwonych diod LED o boku 60,2mm oraz mikrokontroler ATtiny861 pozostałe po innych projektach postanowiłem zbudować to, co każdy elektronik chociaż raz w życiu zbudować musi: zegar ;). Ze względu na charakter wyświetlacza miał to być zegar binarny, ale...
Witam! Chciałbym aby ktoś zerkną na ten kod, czy nie ma błędu. Jeśli nie problem leży po stronie technicznej, prosze o sprawdzenie. Po włączeniu zaswieca się pierwsza linia. Biblioteka zmodyfikowana pod moje połączenia. Delay ustawiony na oscyloskopie. Mój kod to: ----------------------------------------...
Witam! Skonstruowałem sobie urządzenie, które ma służyć do optymalnego ustawienia sterownika kotła. Mierzy temperatury na zewnątrz i wewnątrz, liczy ich średnie, minima i maksima, jest podłączone do sterownika kotła pod przekaźnik (przez transoptor) i zlicza ilość załączeń podajnika w różnych trybach pracy i sumaryczny czas. Od dłuższego czasu walczę...
Jest taka nota Atmela 136. Jest tam opisane jak zrobić wiele kanałów PWM z pomocą jednego timera 8bit. Zrobiłem to na ATMega8- sterowanie sygnałem takim jak dla serw 1-2ms. Plik .c [syntax=c] //* \section OA Original author //* Andy Gayne is the original author of this application note. //*/ //program z noty Atmela 136 //przerobiony na ATMega8, kwarc...
Mój ma takie oznaczenie i nie działa. Dalej szukam. Jak znajdę błąd to dam znać. Dalej nie mam rozwiązania. Wymieniłem wyświetlacz na inny, który już kiedyś używałem i działał. Może podejść do sprawy inaczej. Jeśli ktoś byłby tak miły i spojrzał w program to może wypatrzył by błąd. Podłączenie wyświetlacza: pin 1 - masa pin 2 - +5V pin 3 - kontrast...
Właśnie moja nauka zatrzymała się na wyświetlaczu LCD. Mruganie diodami już za mną. Dlatego proszę o pomoc:) Skonfigurowałem dwie biblioteki. Dodałem jako załącznik. Jeśli ktoś może to bardzo proszę o sprawdzenie. Pierwsza to biblioteka ze strony http://radzio.dxp.pl/hd44780/hd44780_avr... Wygląda tak: Pkik HD44780.h //--------------------------------------...
https://obrazki.elektroda.pl/4760563300_... W ramach trwającego konkursu Czujnik wilgotności i temperatury AM2302 (DHT22) Czujnik AM2302 może pracować z napięciami 3.3-5.5V posiada 4 wyprowadzenia (jedno niewykorzystywane). Trzy wyprowadzenia wykorzystane są jako zasilanie (1), transmisja danych (2), oraz masa (4), więcej znajdziecie...
Witam, mam problem z odbiorem kodów rc6 a mianowicie sprawdziłem specyfikacje mojego pilota na stronie lirc/remotes i jest to kodowanie właśnie rc6 szukałem po internecie i niewiele się mówi o tym i innych kodowaniach niż rc5. Znam czasy między bitami i z czego się składa ramka danych w rc6. Mój problem dotyczy obsługi tego kodowania mam bibliotekę...
Po całym dniu walki słabo opisałem mój problem bo już po prostu nie miałem siły :D Wyjaśniam... Zrobiłem sobie mikro serwerek LANowy na Atmedze32 i układzie ENC28J60. Z doświadczenia z tym układem i Atmegą wiem że znacznie stabilniej wszystko pracuje gdy mikroporocesor (Atmega) jest taktowana zegarem 25MHz z gotowego modułu ENC a nie własnym kwarcem....
Witam Porwałem się na robienie własnego sterownika co i stanąłem w martwym punkcie. Mianowicie sterownik składa się z 2 płytek na których są Atmegi 16 taktowane zewnętrznym kwarcem 11.059200 + kwarc zegarkowy jeden układ odpowiedzialny za odczyt temperatur regulację fazową wentylatora oraz sterowanie elektrozaworami a drugi obsługa wyświetlacza graficznego...
Witam Do istniejącego i działającego "urządzenie" chciałem dodać możliwość odbioru, parsowania i odesłania SMS'a zwrotnego z danymi. Cały kod: Linia1 - to wyświetla Uart_numer - Linia1 Linia2 - to wyświetla Komanda - Linia2 czyli działa OK Ale jak podepnę modem GSM ( SIM900D ) to Uart_numer jest puste, a Komanda pokazuje ( czasem ) jakieś teksty z pierwszej...
atmega flagi atmega przerwania timera atmega przerwanie timera
alarm ds400 samsung telewizor włącza wyłącza kodować kluczyk
przesterowanie wejścia tunera wsady biosu
Brak obrazu i dźwięku w telewizorze - diagnostyka Wyprowadzenia układu ICL7106 - szczegóły i funkcje