Niby dlaczego za małe(krótkie) Procedury delay liczą 256*256 cykli co daje trochę ponad 65ms dla zegara 1 MHz. Procedury, które podałem łatwo dostosować do dowolnego zegara. Wystarczy pozmieniać wartości ładowane do odpowiednich rejestrow. W komentarzach podane są cykle zegarowe zajmowane przez określoną instrukcję. Dla 1MHz cykl wykonuje się w czasie...
żona pyta ile mi zostało żeby ZUS uznał 1. że mogę złożyć wniosek o emeryturę (nazwę T1) 2. kiedy odpowie, że wniosek został uwzględniony(T2 = T1 + termin zus {ok. 1 m-c} T3 data wypłata 1 emerytury (T3 = T2 + kosmos {tego czasu nie będę odliczał} zaznaczam jestem + 64 przepraszam jeśli martwi cię mój wiek. z pozdrowieniami wojtek Dodano po 2 Możliwości...
Z opisu funkcji wynika, że pętla używa 8-bitowego licznika. Gdzie w tej funkcji jest odniesienie do licznika.? W tej linii: dec %0 Po prostu jeden z rejestrów jest używany do odliczania opóźnienia i dlatego został "przezwany" licznikiem. Nie ma to nic wspólnego z fizycznymi licznikami/timerami. O wstawkach assemblerowych możesz przeczytać w manualu...
Czytać ze zrozumieniem ! CZEKAJ: MOV R0,#255 MOV R1,#255 ODLICZAJ: ODLICZAJ1: DJNZ R0, ODLICZAJ1 ; ODLICZAJ2: - to przeszkadza Atomowi DJNZ R1,ODLICZAJ1 - zalozmy, ze kosmetyka ; DJNZ R0,ODLICZAJ1 - to przeszkadza Tobie RET ... Jeszcze zmiany w: START2: SETB P2.0 ; wylacza MOV R2,#39 odliczaj_czekaj1: ; LCALL ODLICZAJ_CZEKAJ...
Poczytaj o licznikach 8051, ładujesz wymierzoną liczbe do licznika, licznik odlicza tyle cykli maszynowych, i po odmierzeniu tej liczby (20ms) zmieniasz w przerwaniu stan portu, i tak w kółko, trzeba znać częstotliwość taktowania. Taki skrót żebyś wiedział czego szukać.
Dlaczego nie Timer ? Obsługa przerwania TIMER0_OVR w niczym nie przeszkadza w działaniu PWM, a mamy w ten sposób jakąś podstawę czasu, który można sobie odliczać w tym przerwaniu. Dokładność co do 3 miejsc po przecinku nie jest taka istotna przy dekodowaniu RC5... Co do kodu - to nie ma prawa tak działać, obsługa przerwania powinna być jak najkrótsza,...
if(++sek == 60) podobno można zrobić and-em szyciej. Czekam na rozwiązanie Rozpatrywanie takiego czegoś jest co najmniej niepoważne. Taka konstrukcja w C może być skompilowana na pewnie kilkanaście różnych sposobów w zależności od deklaracji zmiennych, poziomu optymalizacji, użytego kompilatora, ilości wypitej kawy, pogody itd. I każdy będzie działał...
Policzyć ile cyklów zegarowych przypadnie na 1 sekundę i zrobić pętlę, która wykona właśnie tyle cykli. Można też zaprząc do tego timery, wtedy odliczanie można zrobić bardziej precyzyjnie.
Jeszcze mam pytanie czy da się przerobić tak aby wrzucić to na procek attiny13? Owszem, ale raczej w C lub asemblerze... ;) Tutaj np. jest RGB LED na Tiny13: http://www.elektroda.pl/rtvforum/topic20...
bo dopiero zaczynam z assemblerem i posluchaj dobrej rady: Na tym poprzestan. Zacznij pisać w C albo nawet lepiej w C++. Asembler nie służy w 21 wieku do pisania programów tylko czasem, od wielkiego dzwonu (raz na kilka lat ) trzeba napisać 20 linijek. Nie marnuj czasu na coś całkowicie zbędnego.
Widzę mały błąd - ustawiłeś 20 sekund, a po kliknięciu odliczania od razu przeskoczyło na 19 - nie powinno czekać tej jednej sekundy ?
Koledze cukras chodziło zapewne o język programowania a nie o docelową platformę sprzętową. Język to asembler uC 8051. Kolego elektronikopo , jeżeli oczekujesz że ktoś napisze za ciebie ten program to się srogo zawiedziesz, tu nikt nie odwala za kogoś 'gotowca' , także do pracy, ten program to nic trudnego; szybciej będzie jak sam go napiszesz niż jak...
a nie lepiej napisac ten prgram w asemblerze tego mikrokontrolera? mysle ze za odliczanie do tylu bedzie odpowiadala instrukcja djnz
To trzeba policzyć: (+) oznacza liczbę cykli procesora dla danego rozkazu mov r0,#0 mov r1,#60 setb dioda loop1: loop2: nop ;+1 nop ;+1 nop ;+1 nop ;+1 djnz r0,loop2 ;+2 djnz r1,loop1 ;+2 clr dioda Wewnętrzna pętla wykonuje się 256 razy i trwa 6 cykli. W sumie więc trwa dla kwarcu 11,0592MHz: 11059200 / 256 razy / 6 cykli / 12 taktów/cykl = 600Hz Aby...
Witam Musisz sobie napisać kawałek, który będzie sobie tylko odliczał, będzie to podprogram np. czekaj, oraz podprogram który czyści wyświetlacze. Konstrukcja programu będzie wyglądała tak. dupa1: ... ... ... ... lcall czekaj lcall czysc dupa2: ... ... ... ... ... lcall czekaj lcall czysc itd. dupa4: ... ... ... ... lcall czekaj lcall czysc...
W AVR Studio dokumentacja do Atmegi8 nie nazywa się tak jak w prxuypadki atmega128 tylko m8def.inf więc jak dołączysz ten plik to też powinno jakoś działać. Znajduje się on w tym samuym katalogu co dokumentacja do 128. Pozdrawiam. O tych plikach mówi się nie dokumentacja, tylko plik nagłówkowy i nie "m8def.inf", tylko "m8def.inc"... (Domyślnie w katalogu...
Najprościej to zrobić w przerwaniu zegarowym, sprawdzasz stan klawiszy i po powiedzmy 10 ms sprawdzasz ponownie, jeżeli taki sam to zaczy, że drgań nie ma... Albo tak samo, tyle że czas odliczać pętlą, ale tu trzeba mieć wystarczająco dużo czasu na takie marnotrastwo cykli maszynowych.... PS. Podobna dyskusja się już toczy...
Jak już pisałem wcześniej wykorzystaj przerwanie. Użyj wejścia INT0 lub INT1. Ustaw je sobie na narastające zbocze i napisz procedurę obsługi przerwania odliczającą zadany czas. W pętli możesz sobie czytać ADC, a jak przyjdzie przerwanie to program automatycznie skoczy do obsługi przerwania. Daje to mniejsze opóźnienie pomiędzy wykryciem zmiany a zaczęciem...
Masz tu prosty przykład w .asm START: MOV P1,#127 ;Podstaw 01111111 do portu p1 #127 Lcall TIME_N100 ;Wywołaj podprogram czas_n1 MOV P1,#191 ;Podstaw 10111111 do portu p1 #197 Lcall TIME_N100 ;Wywołaj podprogram czas_n1 Sjmp START ;Skocz do etykiety ;*************************************** ;podprogram opóznienie czasowe TIME_N100: PUSHACC ;przechowaj...
ZbeeGin ma racje, sprawdziłem szprzętowo i wszystko działa.... z małym wyjątkiem: Kiedy zaczyna się odliczanie w dół, nie zaczyna od wybranej cyfry tylko o jeden większej... np. wybiore 5 a zaczyna 6,5,4,3,...,0 Jak to poprawić ?
Wiem ze bylo milion razy, wciskalem przycisk szukaj, ale dla laika to i tak za trudne wiec prosze o wyrozumialosc ;) Potrzebuje po otrzymaniu stanu niskiego na wejsciu wlaczyc timer na 5 do 10 sekund i potrzebuje prostego opisu co gdzie ustawic, tzn. np setb TR0 ;wlacza przerwania, ale nie wiem jak dalej poustawiac i jak wyliczyc czas (bede potrzebowal...
Dzien dobry mam taki problem, chciałbym podlaczyc zewn pamiec eprom np 24c08 do procesora rodziny 8051 np. 2051 lub c52 (dowolnego). I niewiem jak to obsluzyc. Bo mam do napisania program ktory ma odliczac czas 30 dni ale w momencie odlaczenia zasilania i ponownego wlaczenia musi liczyc DALEJ od momentu za nim wylaczono prad. Przyjmijmy ze co godzine...
Piotr P. : dzięki za poprawkę. Tym bardziej widać, że trzeba użyć timer z przerwaniami co 0.5 ms - to się da bez problemu zrobić. Dalej odliczamy przerwania timera do 20 (w dół byłoby łatwiej) i wystawiamy 1 gdy zliczymy do 20, a 0 gdy zliczymy do 1 albo 3, w zależności od stanu wejścia DELAY2 opóźnia z grubsza o (((3 * 255) + 2 + 3) * 27 + 3) * 2 +...
Dzięki, ale tak naprawdę, pierwotnie to jest pętla na 3 rejestrach, tylko liczy jakoś dziwnie... Dodałem NOP. EDIT: zagadki ciąg dalszy. Przypomnę, że każdy piksel to 3 bajty, więc po ustaleniu takich parametrów: R16=255 R17=8 R18=0 uzyskuję linijkę 768 pixeli, to się zgadza. Idziemy dalej, zwiększenie R18 powinno dać mi już prawie dwie linijki tak...
Witam! Potrzebuje pomocy i za kazda bede wdzieczny. Probuje napisac program w asemblerze na miernik refleksu o rozdzielczosci 0,01s i mam problemy ze wszystkim. Zalozylem sobie, ze po podlaczeniu do zasilania uruchomi sie licznik, ktory bedzie liczyl do momentu startu - czyli nacisniecia na przycisk "START". W tym momencie 'wyjmie' ostatnia cyfre jaka...
Witam i zapraszam do dyskusji. Do asembler:Impulator jest nowy- zamówiony wraz z całym osprzętem (tylko w częściach). Program wgrany w prosesor. Po złożeniu tego okazało się, że program sobie nie radzi - popełnia błędy, o których pisałem. Ja zmieniłem zastosowanie tego Kit-u, a co za tym idzie cały program napisałem na nowo. Stworzyłem program, który...
Zadanko mozesz tak trzasnac dwa guziki zmiany na INT0 i INT1, sterowane z przerwan. Ustawiasz timer ktorys na nim masz odliczac polowe okresu generowanego i negujesz bit i tak w kolko. Timerek oczywiscie na przerwaniu. Licznik max to 65536 moze zliczyc czyli np 65ms na 12MHz kwarc. Co daje okres 120ms czyli ok 10Hz jak nie zejdziesz nizej to nawet licznika...
Dobra z komputera jest podawana liczba kroków i co ile kroków ma się silnik zatrzymywać na pomiar.Dane są przekazywane I2C.Czyjnik pozycyjny jakim jest fotodioda (zdecydowałam się na użycie tylko jednej) ,będzie mijała linie okreslajace odpowiednie polozenie.W momencie miniecia lini,ma byc wysłana informacja d0 komputera ,że minięta zostala linia.Jednoczesnie...
Witam, poszukaj może na stronie "www.mikroe.com" w dziale PIC, kompilatorów tam jest C, basic i pascal, sa to dema z ograniczeniem kodu chyba do 1k ale w manualu i po rozpakowaniu/zainstalowaniu w przykładach jest wyjaśniona obsługa TIMER'ow i odliczanie określonych odcinków czasu. Jak pisałeś używasz asemblera ale składnia jest naprawdę prosta (sugeruje...
Rozpatrz opis działania polecenia SLEEP: "Rozkaz ten wprowadza procesor w jeden z trybów obniżonego poboru energii, określony przez nastawę specjalnego rejestru. Układ może wyjść ze stanu uśpienia tylko w skutek wystąpnienia przerwania lub zdarzenia zerowania. Jeśli do wybudzenia procesora wykorzystane mają być przerwania, należy pamiętać by wcześniej...
Krytyka jest najlepszą formą zmuszenia do myślenia. Rzeczywiście niektóre błędy są tak proste że aż wstyd. Ogólnie w pętli głównej program ma sprawdzać ilość impulsów i wyjście komparatora informując mnie o tym diodami. Wejścia INT0 oraz INT1 będą wywoływać procedury dopiero po spełnieniu dwóch warunków z pętli głównej. Dokładność liczenia impulsów...
https://obrazki.elektroda.pl/6848039300_... Ogranicznik czasu pracy to dość banalne urządzenie włączane pomiędzy mechanicznym włącznikiem ciśnieniowym a pompą, mające ochronić ją przed przegrzaniem (skutkiem suchobiegu). Zasada działania: 1. Po włączeniu zasilania przekaźnik jest włączony i zaczyna się odliczanie 100 sekund (w normalnej...
http://obrazki.elektroda.net/64_12841145... Projekt powstał w celu zapoznania się z tym małym uC. Działanie układu: Po przyciśnięciu przycisku układ budzi się ze stanu "Power-down". WDT odlicza czas potrzebny do zmiany świecącego LEDa a Timer odpowiada za generowanie dźwięku. Po 10 sekundach migania układ przechodzi w stan "Power-down" Program...
To ze masz rezonator 10 MHz oznacza ze mikrokontroler wykonuje 10 * 10^6 cykli, a to oznacza ze jeden cykl trwa 0,1 us. Na początek załoz ze kazdy rozkaz trwa 1 cykl (to tylko załozenie), a wiec 0,1 us. Teraz musisz tylko wykonac podprogram który wykona T/0,1 rozkazów, gdzie T jest to czas który powinien trwac twój delay (mozna to wykonac przez pętle)....
Ustawiasz CTC na bardzo szybki, czas pomiędzy przerwaniami to będzie rozdzielczość regulacji. Reszta to wartości w pamięci(zmienne) odliczające programową syntezę częstotliwości. Aha..oki, dzięki, spróbujemy narazie coś wycisnąć z Bascoma ale czarno to widzę nawet w asemblerze, bo zależy mi na bardzo dokładnej częstotliwości, a przecież już przerwanie...
Witam wszystkich progrmistów w asemblerze... mam wielki problem, dostałem zadanie ( w zasadzie to dwa, treśc drugiego w innym poście) do zrobienia z czegoś z czego jestem zielony i potrzebuje pomocy w rozwiązaniu i zrozumieniu problemu... Za wszelką pomoc bardzo dziękuje Zaprojektować i uruchomic system generujący przerwanie czasowe, spełniający następujące...
Jak napisałem na początku buduje manipulator (mechaniczne ramie). Program napisany tak iż przy nacisnienciu przycisku zwieszksza się o 1stopień wartośc konta o jaką ma przesunąc się ramie. Watrośc ta bezbośrednio wysyłana jest na LCD. I na po nacisnięciu 149 razy przycisku (lub dłuższym przytrzymaniu) do komurki ram po adres np 35h zapisywana jest liczba...
Zmieniłem kod.Niby jest bez błędów ale jest brak reakcji na zmianę wartości w OCR0,tzn.czas odliczany jest taki sam bez względu na zmianę w OCR0. #include <avr/io.h> #include<avr/interrupt.h> .global pwm TIMER0_COMP_vect : ldi r17,0 out _SFR_IO_ADDR(TCCR0),r17 out _SFR_IO_ADDR( TCNT0),r17 reti pwm: push r17 ldi r17,0b00001101...
W pierwszym poście napisałeś że potrzebujesz zmierzyć czas całego impulsu i tak jak to wygląda na pierwszym rysunku to chyba miernik częstotliwości by tu wystarczył. Miernik od Manekinnen mierzy od 1Hz do połowy prędkości Twojego kwarca...może na początek Ci wystarczy a ma otwarty kod który możesz zaimplementować do swojego rozwiązania. Mała częstotliwość...
Jeśli w asemblerze, to musisz napisać procedurkę do przerwania zegarowego odliczającą odpowiednie czasu w licznikach, w programie głównym zainicjować zegar i odpracować logikę (w sumie kilka instrukcji). Najprościej zrobić to w BASCOMIE - taki program to kilka instrukcji na krzyż, więc nie ma mowy o jakiejś strukturalizacji programu. Nie robię w BASCOmie,...
89C2051 nie ma wewnętrznego oscylatora, więc bez kwarcu lub generatora nie ruszy. Reset - wystarczy sam kondensator. Rzecz jest na tyle mała i prosta, że warto to napisać w asemblerze. Z drugiej strony, jeśli jesteś nowicjuszem, to masz sporo do nauczenia się - potrzebny Ci będzie timer do odliczania czasu, więc musisz się z nim zaprzyjaźnić. Bascom...
Ja robie to tak: Podstawowe procedury 1W ;Zadeklarowac zewnetrznie szyny DQ1 DQ1EQUP3.4 ERROR_PEQUF0; brak odpowiedzi czujnika po RESET CZAS_KONVEQU16; x * 20ms ; Stale uzyte w procedurze RESET RES_TIMEEQU255; czes sygnalu RESET PRES_TIMEEQU15; czas oczekiwania na PRESENCE PRES_TIME_ENDEQU60; czas sygnalu PRESENCE RES_TIME_ENDEQU240; czas zakonczenia...
witam. Ten post powinien znależć się raczej w dziale mikrokontrolery - a nie tutaj tam szybciej uzyskasz odpowiedz na to pytanie. Jezeli chodzi o licznik to wyglada to tak: timer zgłasza przerwanie w moencie przepełnienia (przejście z FFFFh na 0000h ) najlepiej zeby pracował jako 16bit w trybie zliczania imp. wewn zegara. nie wiem czy dobrze obliczyłem...
Mam problem. Musze napisać program w asemblerze na dwóch licznikach który ma włączać diode na 100 ms i wyłączać na 900 ms. Napisałem i nie działa (bynajmniej u mnie) Czemu ?? ORG 00h LJMP START ORG 0Bh LJMP 50h ORG 1Bh LJMP 70h START: ILOSC EQU 65536-46080 ; czas odliczania 50ms MOV TH0,#ILOSC/256 MOV TL0,#ILOSC-(ILOSC/256)*256 MOV TMOD,#00010001B SETB...
FastAVR jest mocno związany z asemblerem i daje bardzo efektywny kod wynikowy - Bascom się chowa przy nim. Ale tak jak w asemblerze trzeba pamiętać o deklaracji i inicjacji każdej zmiennej. Pierwsze 3 linie definiują typ proca, głębokośc stosu, prędkość zegara - ważne dla symulatora. Definiuję przerwanie od Timera0 i ustalam tryb pracy Timera0 Definiję...
fantom: "mapowanie urzadzen na przestrzen adresowa" to powinno troche inaczej wyglądać, a już napewno w przypadku uC '51, gdzie byłby potrzebny rejestr do zatrzaskiwania adresu, zresztą sam o tym piszesz. "P0 podciagniety wewnetrznie" - uC '51 nie posiada wewnętrznych rezystorów podciągających na porcie P0. Tu są procedury do ossługi LCD w asm '51:...
skoro stosujesz rs485 ,to po co Ci programowe UART'y ? skoro na szynie rs485 może pracować wiele urządzeń ,w zależności od typu full /hall duplex ,to już kwestja programowa rozróżniania urządzeń po adresacji Poza problemami natury elektrycznej, może być jeszcze problem "spotkania protokołów", czy jak kto woli synchronizacji. W przypadku danych napływajacych...
http://obrazki.elektroda.net/87_12093826... Projekt może przydać się osobom wykonującym płytki PCB przy użyciu laminatów światłoczułych. Licznik ma za zadanie włączyć naświetlanie UV gdy rozpoczyna się odliczanie i wyłączyć je, gdy odliczanie się zakończy. Czas wyświetlany jest na czterech wyświetlaczach siedmio segmentowych. Poza tym wykorzystywana...
Twierdzisz, że złożone konstrukcje JAVA, zapisane w asemblerze, czy PASCALU będą efektywniejsze od tych samych konstrukcji emulowanych sprzętowo :?: Nie ma czegoś takiego jak "złożone konstrukcje JAVA". Java jest kompilowana do byte-kodu, który przypomina język asemblera po kompilacja. Idea jest taka że ten byte-kod jest przetwarzany na maszynie wirtualnej,...
Beda, beda :) W programie musisz ulozyc ich kolejnosc, przy kazdym cyklu. Potem tak, przy przerwaniu timera glownego wlaczasz wszystkie, i wlaczasz timerek 2 ktory odmierza czas swiecenia najciemniejszej diody. Wlacza sie przerwanie i bach wylaczasz te diode i wlaczasz znowu tyimer ktory odlicza czas swieceina drugiej njaciemniejszej minus czas swiecenia...
timer odlicza timer1 odlicza zegar odlicza
pomiar odległość radio sterownik honda civic niskotonowe obudowy
interfejs multidiag interfejs lexia
Problemy z pilotem scyzorykiem w Mercedesie W210 290 TD Migająca dioda w telewizorze JVC QLED Android TV