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...
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
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...
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...
Dzień dobry, Trenuję programowanie i natrafiłem na mały lecz bardzo irytujący problem. Po krótce ma działać tak: ustawiony jest Timer0 na generowanie przerwania co 1ms (kwarc 8Mhz, preskaler 64, TCNT0=131), z tym jest wszystko okej. W przerwaniu dodany jest kod który zlicza 20 tyknięć timera i ustawia flagę: FLAGA_CZAS , która ma odblokować kod znajdujący...
Witam na wstepie zaznacza, że problem moze dla innych banalny, mnie przyspozył sporo problemów..., siedze juz od południa nad tym i bez rezultatu, program ma dekodowac informacje czasu (DCF77), całosc pracuje w atmedze8, jest to tylko rdzeń odbioru DCF-a, oscylator wewnetrzny 8MHz, pierwsza sprawa, czy dobze licze i przy ustawieniach jak w listingu...
Witam jest to pierwszy post na forum więc proszę o wyrozumiałość. Chce zrealizować docelowo pomiar czasu pomiędzy dwoma sygnałami podawanych z generatorów o różnej częstotliwości , zaprzęgłem do tego zadania dwa przerwania zewnętrzne INT0 i INT1 ustawione by reagowały na zboczę narastające. Jeżeli pojawi się zbocze narastające z generatora na nóżce...
Witam, Poniżej zamieściłem prosty kod, który nie mogę samemu przetrawić:) Proszę o pomoc . . . void configure_timers() { /* Wpisuje do rejestru GTCCR wartość 1 w bity TSM i PSRSYNC, dzięki czemu mikroprocesor przechodzi w tryb synchronizacji a ja mogę bez obaw konfigurować oba liczniki/timery na raz */ GTCCR = 1 << TSM | 1 << PSRSYNC; //Ustawiam...
Witam. Na wstępie chcę napisać że jestem początkującym, i na razie się uczę. Chcę napisać przykładowy program, co będzie wykonywał jakąś funkcję co 1 sekundę. Chcę do tego też użyć obsługi przerwań (w książkach było o przepełnieniu zegara). Mogę od was poprosić przykład jak zrobić taki timer (z komentarzami objaśniającymi)? Mój zegar ma taktowanie 16mhz,...
Witam, domyśliłem się, że gotowców nie robicie (w sumie to i dobrze:) ), tak więc zabrałem się sam za programowanie. Chcę napisać prosty program zapalający diodę, podłączoną do bitu 0 portu B, po przyciśnięciu przycisku podłączonego do bitu 0 portu D. Teoretycznie napisałem, ale nie chce to działać. Znalazłem link na forum gdzie problem był opisany,...
Korzystając z tego kursu [url=http://maxembedded.com/2011/06/avr-... nie moge uzyskać migania diody przy modyfikacji kodu: [syntax=c]int main( void ){ DDRB = LED1; PORTB = LED1; TCCR2B |= (1<<CS21)|(1<<CS22); TCNT2 = 0; TIMSK2 |=(1<<TOIE2); sei(); while(1){ } } ISR(TIMER2_OVF_vect) { if (TCNT2 >= 10) PORTB &=...
Witam. Chciałbym zmierzyć czas pomiędzy dwoma impulsami (stanami wysokimi) występującymi na pinie ICP1. Używam do tego celu timera1 oraz kodu znalezionego w internecie, zmodyfikowanego na własne potrzeby: [syntax=c]#include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <util/delay.h> #include "HD44780.h" volatile...
Witam ponownie tym pięknym śnieżnym niedzielnym popołudniem :) Przymierzam się do odczytu za pomocą Atmegi32 pamięci Am29F040: Datasheet: http://www.datasheetcatalog.org/datashee... Połączyłem już odpowiednie piny pamięci z nóżkami kontrolera, mam jednak pewien problem w ustaleniu protokołu komunikacji. Nie wiem czy pamięć jest pusta...
Witam Czy jakaś dobra dusza może mi wskazać błąd w programie? Zamiar był taki żeby dioda zmieniała stan co 1s. Wiem, że to można inaczej zrobić przez przerwania, ale aktualnie zależy mi na takim rozwiązaniu [syntax=cpp]#include <avr/io.h> #include <util/delay.h> #include <avr/sfr_defs.h> #include <avr/interrupt.h> #define timer_start...
Witam Niestety mam 2 problemy: 1. Rezonator 4Mhz, AtMega32. Chodzi o obsługe przerwania Timera1. Chcialbym aby przerwanie bylo generowane co 1s. Niestety dla ustawień: TCCR1A=0x00; TCCR1B=0x04; // Prescaler 256 TCNT1H=0xC2; // Wartosc poczatkowa TCNT1L=0xF6; nie działa poprawnie, odlicza zbyt szybko. 2. CodeVision . Chciałbym wyświetlić tekst + liczbę...
Witam. Potrzebuję W tym liczniku obrotów: [syntax=c]#include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <util/delay.h> #include "HD44780.h" //tutaj ustaw własne zasady pomiaru #define POMIAR_ILOSC_IMPULSOW_NA_OBROT 4 //ilość inpulsów na jeden obrót #define POMIAR_ILOSC_OBROTOW 10 //ile obrotów ma trwać...
Witam...Dlaczego przerwania z Timera0 generowane nie sa zgodnie z dokumentacja? chciałbym zrealizować generator sterujący pinami portu PC0-7...w taki sposób aby wartości z tabeli --- unsigned char GenTab DDRC = 0xFF; // port C jako wyjscie 11111111 CLI(); //disable all interrupts TIMSK = 0x01; //timer interrupt sources TCCR0 = 0x00; //stop OCR0...
Witam Szukam odpowiedzi i nie mogę znaleźć na pytanie jak w temacie. Bawię się od tygodnia z AVR dokładniej z Atmega8 i zrobiłem sobie do samochodu taki mini komputer pokładowy, który narazie podaje temp w 3 punktach na DS1820 i wyświetla to na wyświetlaczu LCD 2 * 16 (który używam do kontroli wyników) bo drugim wyświetlaczem jest HDLX1414, to 4 segmentowa...
Witam. Założenie jest takie, aby dioda podłączona do wyjścia timera0 zapalała się i gasła na 1s. Wpisuje więc do rejestru TCCR0 1 i mam preskaler 1 co daje pojedyńczy kwant czasu = 125ns (1/8000000 = 125n) czyli żeby odmierzyć 1s potrzebuje zliczyć to 8000000 razy :P, ale że TCNT0 ma pojemność 256 bitów zastosujemy dodatkowy licznik. czyli zliczymy...
Mam następujący problem. Musze napisać program do zliczania obrotów na minutę na stanowisku laboratoryjnym. Ale ugrzęzłem w miejscu gdzie trzeba ustawić timer i napisać funkcje liczącą te impulsy. Sygnał mierzony pochodzi z czujników optycznych i jest to sygnał logiczny. Program ma zliczać impulsy i wyświetlać prędkość obrotową na wyświetlaczu 4x20....
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 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...
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...
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...
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...
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ś...
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ć,...
Ż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...
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...
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,...
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...
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. 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...
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]...
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]...
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...
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ą...
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 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...
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...
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...
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...
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ć...
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 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ą...
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 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...
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ć....
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....
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...
atmega flagi atmega przerwania timera schemat timera atmega
mosfet bateria laptop stroić antena president florida najlepsze parametry telewizora
schemat inwertera hybrydowego schemat falownika hybrydowego
Zgemma – jak przywrócić pasek SNR/AGC tunera A i B w OpenATV/OpenPLi Spawarka inwertorowa – zwarcie po podłączeniu 230V, wybija bezpiecznik, świeci kontrolka