Rzeczywiście. Jeszcze trzeba zainicjować kierunek portu, którym sterujesz diodą (procesor domyślnie nie wie, że ma to być wyjście). dla portu, którym chcesz klepać rejestr nazywa się DDRA... i uśmiech ;-)
Proponuje Żebyś zainteresował sie co zwraca funkcja (nie kontrolka) "Timer" oraz podnoszeniem priorytetów programów w systemie (tylko nie za wysoko) :) pozdr.
HDD regenerator nic nie naprawia (tylko czasem chwilowo ukrywa) a dowód masz w SMART... Z procedury wstaw obrazki (zdjęcia) opóźnień, oraz SMART po procedurze.
W 25 linii masz odwołanie do etykienty cont, a jakoś nie mogę jej znaleźć w programie. Natomiast zasadnicze pytanie brzmi: czy na symulatorze program działa prawidłowo?
podstawa przy wejsciu w przerwanie i wyjściu to zapamiętanie rejestru SREG int_0: push R16 in R16, SREG push R16 .... .... kod przerwania .... pop R16 out SREG, R16 pop R16 reti jak widzisz przy okazji zapamiętałem też rejestr R16. A powinieneś zapamiętać każdy inny, którego używasz w tym przerwaniu i przy wyjściu pobrać jego wartość ze stosu ty...
Witam... Generalnie rzecz biorąc procedury opóźnienia czasowego nie nadają się do modulowania diody IR... Częstotliwość nie jest zbyt stabilna to raz... Dwa nie uzyskasz 36kHz musisz skorzystać z dobrodziejstw timera... Np. tak... #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> int...
Wyświetlacz po podłączeniu zasilania powinien zapalić kwadraciki w górnej linijce, po inicjalizacji te kwadraciki gasną. Mam prawie identyczny kod przy czym niepoprawnie działały mi funkcje _delay_ms(100); nie wiem dlaczego dlatego zastosowałem swoje, kwarc mam wewn, 8MHz: // Piszemy procedury opóźnienia czasowego //======================================...
opoznienie bedzie wynosic w przyblizeniu 256*100*2 czyli 51200 cykli instrukcji, takie to proste :) Wynika to z tego, ze 100 razy wywolujemy petle, ktora wykonuje 256 razy instrukcje djnz a ta instrukcja trwa 2 cykle. Teraz w zaleznosci od zegara twojego procesora i od ilosci cykli jakie potrzebuje twoj procesor na wykonanie tych instrukcji bedzie zalezec...
1. Użyj do tego oddzielnego wątku ( TThread ) aby nie obciążać głównej aplikacji. TThread jest lepszym rozwiązaniem niż zastosowanie zdarzenia OnTimer komponentu TTimer . 2. Sprawdź czy D4 posiada funkcję Sleep(czas w ms). Pozdrawiam...
Błądzisz. 0. Dlaczego wybrałeś muzealny mikrokontroler, dla którego informacji trzeba szukać w skanowanych artykułach z gazet wydawanych w latach 80-tych i 90-tych zeszłego wieku? 1. Dlaczego nie chcesz korzystać z timera? To jest najlepszy i najpewniejszy sposób odmierzania czasu. 2. Czy program w którym potrzebujesz opóźnienie 5ms nie robi nic innego...
Czy mógłby mi ktoś wyjaśnić tę procedurę opóźnienia czasowego OPOZNIENIE: LDI R17, 255 DLOOP1: LDI R18, 255 DLOOP2: DEC R18 BRNE DLOOP2 DEC R17 BRNE DLOOP1 RET Jakie opóźnienie wnosi ta procedura ? Czy są jakieś inne sposoby odmierzenia czasu np. 1 sekundy?Proszę o przykładową procedurę.
Posiadam µP AT89S8252 , jak by wyglądała procedura opóźnienia ( 100 ms ) z wykorzystaniem wewnętrznego licznika tego µP przy 12 MHz ?
To dziwne bo ja niemiałem najmniejszych problemów... #include <avr/io.h> /***************************************... Definicje stałych ****************************************... #define F_CPU 1000000 /* 1MHz zegar procesora */ #define CYCLES_PER_US ((F_CPU+500000)/1000000) /* cpu cycles per microsecond */ /***************************************...
skoro wszystkie porty mają 0 to rozpoczęto wykonywanie programu bo po restarcie wszystkie piny mają 1, sprawdz dokładnie kwarc dla jakiego została policzona ta procedura opóźnienia.
Zajrzyj do fusebitów i sprawdź na jakiej częstotliwości chodzi ATmega. Musisz dostosować procedury opóźnień do szybkości zegara. Procedury możesz mieć pisane pod 1MHz a µC chodzi np. na 8MHz. Lepiej jak opóźnienia będą za długie niż za krótkie bo wtedy LCD odmówi współpracy. Co do BASCOMA to nie znam go, ale zdaje się że można ustawić częstotliwość...
Nie bardzo jest co komentować, bo najważniejszej procedury (ISR) nie pokazałeś. Jedno jest pewne: Taka konstrukcja i wywołanie procedury 800_ms zakończy się opóźnieniem programu głównego o parę mikrosekund i tyle. Zmienna Licz_8ms będzie się inkrementować tzw. "sobie a muzom". Co więcej, nawet jakbyś poprawnie skonstruował tą procedurę to dalej zamiana...
po pierwsze po dyrektywie .cseg podaj .org 0 a program niestety leci ci w maliny bo troszeczkę namieszałeś. gdy już zaczyna się pętla główna programu main: to sprawdzasz poleceniem SBIS PINC, 0 czy przycisk jest naciśnięty i jesli tak czyli PINC0 zwarty jest do masy to robisz skok do etykiet zwieksz i do tąd w takich rozważaniach jest ok a delej to...
do celów testowych wyłącz sobie narazie tego Powerdowna, a jeśli chodzi o MegaHertze - to nie ma znaczenia czy 8Mhz czy 4MHz w tym przypadku dla RC5. Ważne jest tylko to żeby zadeklarować w programie taką częstotliwość taktowania jaką masz ustawioną w fusebitach. Bascom na podstawie tego sam sobie oblicza wartości dla procedur opóźnień czasowych do...
Witam W asemblerze dawno już nic nie robiłem, ale: Zaquadnik: Zrobi się "zonk" jak procedury opóźnień korzystają z akumulatora. W takim razie pusch acc i pop acc. Ja umieściłbym to w jakimś rejestrze, lub jako zwykłą zmienną. Później tylko inkrementować: INC roback3005: początkujący w asm czy leń? Wydaję mi się, że dopiero zaczynasz w ogóle z programowaniem...
d3zerter>> wstawiłem po odczycie stanów portów procedurę nop (czekaj) czy to weliminuje drgania? Z tego co pamiętam "nop" trwa jeden takt procesora (około 1us), styki drgają przez parę milisekund, trzeba wstawić jakąś procedurę która by opóźniła trochę bardziej.
To nie jest proces, to jest tylko informacja ile czasu jądro poświęca na przerwania sprzętowe i opóźnione wywołania procedur (DPC). Musi być i się tego nie pozbędziesz, aktualne zużycie czasu procesora jest jak najbardziej w normie.
Witam, jestem zupełnie początkujący, mam za sobą pierwszy układ i program zrobiony samodzielnie (nie kopiowany) , pisany w asemblerze. (zegarek binarny) Czy jest możliwość zmierzenia lub pobrania w prosty sposób długości cyklu zegara w trakcie pracy układu żeby skalibrować procedury opóźniające? Chodzi o to, żeby np. po zmianie kwarcu nie trzeba było...
wstaw proszę kod w formacie [code], a nie jako obrazek. Tak na szybko: OUT PORTB,R16 (0xFF) - cały port B jako wejście? A nie powinno być DDRB ? A procedura opóźnień chyba nie jednak dobra, skoro z niej nie wychodzi. Spróbuj napisać ją z ograniczeniem ilości skoków np ldi r21,250 c2: ldi r20,250 c1: dec r20 brne c1 dec r21 brne c2 RET Da Ci to 250x250...
Faktycznie wygląda to na problem z timmingami. Jak masz ochotę się pobawić to trzeba by spróbować zmienić wartości opóźnień w procedurach void write_onewire(u08 bit) i/lub u08 read_onewire(void) . Pisząc opóźnienia mam na myśli wartości dla funkcji delay - zmienić o kilka w górę lub w dół. W write jest dwa razy delay(30) - zmienić trza oba na raz np...
LED EQU P1.7 - przypisanie do zmiennej LED do P1.7 LJMP START - skocz do początku programu (etykiety) ORG 100H - rozpocznij kompilacje od adresu 100 START: - początek programu (etykieta) LOOP: - początek pętli (etykieta) CPL LED - P1.7 zmiana stanu na przeciwny MOV A,#10 -przesuń do rejestru A liczbę 10 (potrzebne do procedury opóźnienia) LCALL DELAY_100MS...
Jeden problem rozwiązany Jak zrobić zmienny waitms... Zerknąć do Help-a i tam przeczytać , że argumentem funkcji Waitms jest Byte , czyli maksymalna wartość to 255. Jeśli dokładność odmierzanego czasu może być PI * OKO , to skorzystać z dobrodziejstwa , jakim jest Subroutine(Arg) lub Gosub To Label .Jeśli chcemy osiągnąć w miarę dużą dokładność , to...
Witam! 1. przede wszystkim trzeba sobie odpowiedzieć na pytanie: jaki ma być zakres pomiarowy? 2. skontrowałem takie urządzenie dla zakresu pomiarowego od 30 do 200 mm z rozdzielczością 0,1 mm. 3. przetrenowałem oba sposoby pomiaru, a więc mierząc od pierwszego impulsu i od ostatniego. 4. start pomiaru od momentu wysłania ostatniego impulsu powodował,...
witam, jeżeli procek ma robić tylko to i nic innego to ja bym to zrobił tak: w pętli głównej programu, wysyłasz sekwencję pierwszego kroku na port, potem skok do procedury opóźnienia, w której czas jest uzależniony od wartości zmiennej 8 bitowej. Zmienna ta natomiast jest uaktualniana w przerwaniu od ADC a jej wartość to nic innego jak wynik pomiaru...
Równolegle z przyciskiem podłącz kondensator 100nF. Jak nie pomoże to większy. W procedurze obsługi przerwania możesz dać opóźnienie kilka - kilkanaście ms, też pomaga, ale jeśli nie może to być zrobione w ten sposób to tylko kondensator + wymiana przycisku na jakiś lepszy. Wszystkie te sposoby można łączyć ;)
Skoro procedura przerwania powoduje opóźnienia to rozumiem że też "upośledzi" działanie polecenia getkbd...? Próbowałem do pilota podpiąć klawiaturę, wszystko powinno być ok, ale nie jest
marco47 - przepraszam, nie zauważyłem. marek19951 - proste if-then nie załatwi problemu. Jeżeli masz zapał, a widzę , że masz, zacznij od procedury obsługi klawiatury , która nie powoduje opóźnień poprzez martwe pętle ( czyli m.in wait, debounce, bitwait itp). Ja to zrobiłem na przerwaniu programowym z timer1, które odliczało mi okresy 10 ms w połączeniu...
Chodzi mi o obsługę tego wyświetlacza pod C. Dowiedziałem się że to będzie działało ale na procedurach napisanych na opóźnieniach czasowych a nie na tych które sprawdzają nóżkę R/W!! Jeśli ktoś ma takie procedury i to jeszcze najlepiej pod CodeVision to bardzo proszę o podesłanie !! Z góry serdecznie dziękuje!!
Nie, remapowanie nie usunie opóźnień odczytu tylko zweryfikuje błędy odczytu. Niby nie masz niestabilnych sektorów ale dla pewności zrób: 1. Skanowanie - zorientowanie się w sytuacji. Można też sprawdzić SMART. 2. Zerowanie - zapis całego dysku zerami (sensem w tym wypadku jest zapisanie dysku prawidłowymi wartościami, nie musi być to zerowanie ale...
Sorki , to ten z DIPami... Procedura włączenia/wyłączenia wcześniejszego mrygania lampy - rozdział 6.2 (na samym końcu instrukcji przed tabelami).
Wywołanie procedury Pauza z generuje opóźnienia. Zależy co wpiszesz do akumulatora. Ogólnie wzór na opóźnienie można przedstawić tak: ACC*250us. A wywoływanie procedur przez lcall działało bez ręcznej inicjalizacji stosu, ale mogę spróbować.
Wyczyść pamięć CMOS. Zapoznaj się z procedurą: POST. Sprawdź dysk twardy czy dyski twarde.
Może przerwania sa generowane częściej niż trwa procedura obsługi.
Moje pytanie jest takie, a czy zadbaleś o odpowiednie opóźnienia w procedurze inicjalizacji?? Bo jesli sterownik nie zostanie dobrze zainicjowany, to może się tak dziać.
Standardowo zasilacz do przeglądu/naprawy na początek. Chassis GTUxx, serwisówka w bazie. Oczywiście bez PSU, ale z podanymi napięciami i procedurami. http://www.elektroda.pl/rtvforum/viewtop...
Cześć. Tak podajnik ślimakowy jest w miarę precyzyjny. Nie chodzi mi o zasadę działania dozownika i jego rozbudowę chodzi mi o sedno tematu. Mam mianowicie problem z przerwami czasowymi między załączeniami poszczególnych składników. Nie ma różnicy czy jest to spust czy też podajnik ślimakowy. W przypadku spustu zasuwa otwiera się i zamyka niekiedy parę...
Czy można zaprogramować pamięć 2764 przez komputer bez żadnych dodatkowych układów? Układu 2764 niestety się nie uda, ale pamięć 28C64 (ten sam pinout) można programować w niezmodyfikowanym CA80 bez problemu, jednak niestety jest ograniczenie, jedynie wpisując ręcznie bajt po bajcie zadziała (to sprawdzone i było opisane w tym temcie nieco wcześniej)....
Do wymiany tasiemka i sprawdzenie złącz zasilania. Oraz do wykonania procedura. Podana wyżej.
Dobry wieczór, Gra działa, ale wyświetla tylko cyfry parzyste z wyjątkiem pierwszej. Generator liczb pseudolosowych polega na wycięciu młodszej cyfry setnych sekundy zegara systemowego... Kiedyś działało, a na CA80 kuleje... Zakładam, że problem wynika z różnicy w implementacji obsługi klawiatury starego (SA) i nowego (CA) systemu oraz wykorzystania...
Zrobiłeś typowy błąd: obsługa przerwania jest za długa. Jak uart ma nie gubić znaków, skoro u ciebie obsługa przerwania trwa ponad 12ms? W tym czasie główna pętla stoi! Jedna z fundamentalnych zasad: w przerwaniu robimy tylko niezbędne minimum operacji. Im mniej instrukcji tym lepiej. Totalnym bezsensem jest umieszczenie całej obsługi wyświetlacza w...
Koledzy może ktoś mi wytłumczy dlaczego miga tylko 1 dioda //definiujemy stany portu sterującego diodą LED #define LED_ON sbi(DDRD,PD1);sbi(PORTD,PD1&... #define LED_OFF sbi(DDRD,PD1);cbi(PORTD,PD1&... #define LED_ON1 sbi(DDRD,PD3);sbi(PORTD,PD3&... #define LED_OFF1 sbi(DDRD,PD3);cbi(PORTD,PD3&...
Czyżby sam się rozregulowała?? ... Trudno to określić. Wszystko jest możliwe. Parametry ostrości, jak i wszystkie inne, są przechowywane w pamięci EEPROM. A z ich "nieulotnością" jest różnie. Z drugiej strony należy pamiętać o tym, że każda ingerencja mechaniczna w zespół obiektywu powinna być zakończona ( oczywiście nie zawsze się to robi :D) przeprowadzeniem...
Dysk ma wbudowaną małą pamięć na której jest zapisany firmware czyli programik sterujący dyskiem, jego parametry i inne tego typu rzeczy. Po podłączeniu prądu dysk przeprowadza samodiagnozę i z tego względu po odlączeniu głowic nie będzie działać. Bios zczytuje parametry z tej pamięci dopiero po autodiagnozie. Dlatego w niektórych biosach jest funkcja...
Daj jeszcze SMART ale wygląda to całkiem nieźle. Co do chęci naprawy to chodzi o system plików i Windows sam proponuje taką opcję gdy wykryje odłączenie dysku bez bezpiecznego usuwania sprzętu. Ponieważ robiliśmy kilka procedur zrób to o co prosi.
;* ;***************************************... ;*PROCEDURY OBSŁUGI MAGISTRALI 1-Wire DLA MIKROKONTROLERA AVR ;***************************************... ;* ;*Nazwa pliku :AVR_1Wire.asm ;* ;*Przeznaczenie :dowolny AVR, za wyjątkiem AT90S1200 ;*Kwarc :4MHz ;* ;*******************************OPIS****...
A jakim zegarem taktujesz procesor. Ja kiedyś miałem problem przy taktowaniu 1MHz i po zwiększeniu do 8MHz wszystko ruszyło. Może problem jest w ustawieniach kompilatora i źle wylicza opóźnienia w procedurach obsługi lcd.
#include <avr/io.h> /***************************************... Definicje stałych ****************************************... #define F_CPU 1000000 /* 1MHz zegar procesora */ #define CYCLES_PER_US ((F_CPU+500000)/1000000) /* cpu cycles per microsecond */ /***************************************...
LCD startuje już normalnie. Pomogło kilkukrotne wywoływanie procedury inicjalizacyjnej. Próbowałem zmieniać opóźnienia, ale bez powodzenia. Mniej elegancko, ale na szczęście skutecznie :) Dzięki wszystkim za pomoc.
Czyli co polecasz? Wymiana tej membranki i rozkrecenie i plukanie całego układu? Czy są jakieś specjalne procedury na to?
A może inaczej... właśnie zrobiłem własne procki na podstawie ATMEL'owskiego przykładu na UART'cie i po użyciu tych stałych czasowych udało mi się nawiązać odpowiedź po resecie. Poniżej funkcja próby odbioru temperatury(tylko jeden slave), który zawsze daje 0x0101? Co to oznacza? Nie zmienia się ze zmianą temparatury... int16_t OW_Read_temperature(void)...
poczytaj sobie to: http://www.ustr.net/infrared/index.shtml jeśli chcesz zrobić tego typu transmisję o takiej prędkości to w Bascomie może być to bardzo trudne do osiągnięcia a wręcz niemożliwe .... jeśli jednak nie chodzi ci o taką częstotliwość tylko dużo dużo mniejsze to być da radę pobawić się z tym w Bascomie (jednak bez asemblera albo C może być...
Jak wykombinować aby na PC5 taż migała dioda tyleże szybciej? Jak zdefiniować wejścia. #define LED_ON sbi(DDRB,PC5);sbi(PORTB,PC5&... #define LED_OFF sbi(DDRB,PC5);cbi(PORTB,PC5&... #include <avr/io.h> /***************************************... Definicje stałych ****************************************...
Może pomóc na sektor nieczytelny, zignoruje sektory z opóźnionymi odczytami, nie usunie danych. Dopuszczalne ale nie jest to pełna procedura diagnostyczna - da pewność tylko w przypadku fizycznych uszkodzeń dysku (realokacja jest dowodem, że sektor jest uszkodzony fizycznie) i nic poza tym.
Najprostsza pętla wpisz tylko w wyszukiwarkę generowanie opóźnień i znajdziesz setkę gotowych procedur.
Temat ciekawy. Nie mam "gotowca" ale potrzebujesz zmienne: "Licznik" - ilość odczytów napięcia "Nap" - odczytane napięcie "licznik_zmian" "Wartosc" - 0 - gdy "Nap"<0,4V albo 1- gdy Nap>0,65V "wartosc_pop" - wartość z poprzedniego odczytu Licznik =0 Do ' pętla główna incr licznik call Odczyt_nap ' skok do procedury odczytu nap call sprawdz ' sprawdzenie...
Dlatego że lepiej moim zdaniem używać flagi busy niż domyślnych opóźnień które się przydają na początku inicjalizacji bo inaczej nie można. Jakiego używasz kwarcu? Przeanalizuj procedurę inicjalizacji pod kątem opóźnień. Wyświetlacz może nie wyrabiać. Zobacz na moją listę kolejnych kroków inicjalizacji. Podałem czasy. Jak masz szybki kwarc to będziesz...
Jedynym przypadkiem, gdy opóźnienie bez timera ma ew. jakiś sens, jest procedura inicjująca działanie systemu. Można z grubsza przyjąć, że instrukcja nie będąca skokiem wykonuje się na Cortex 1 cykl zegara (jest to prawdą w przypadku instrukcji nie odwołujących się do pamięci, z dokładnością do czasu oczekiwania na pobranie instrukcji). W miarę dobre...
ok napisałem drugi program który ma mrygać dioda, niestety program tylko zapala diode i nic wiecej sie nie dzieje :(:(:( moze ktoś mi wyjaśni dlaczego??? cos pewnie pętla jest żle napisana bo jak odwrotnie wprowadze wartości początkowe to dioda się zapala dopiero po sekundzie ale na tym sie konczy :(:(:( #include <avr/io.h> /***************************************...
Wstawiałem opóźnienia, jak i te procedury które wskazałeś usuwałem, jednak nie przynosi to rezultatów. Przerobie jeszcze kod ze strony Voti, zobaczymy jak tam to będzie działać. Pozdrawiam
Jak ma wyglądać funkcja która będzie włączać pewien proces migania diody led poprzez zetkniecie dwóch określonych pinów (np.PB5 i PB6) Chcę dodać że posiadam procesor Atmega 8L i program WinAVR. Funkcja migania diody LED wygląda tak: #include <avr/io.h> /***************************************... Definicje stałych ****************************************...
Ogólnie nie cierpię AVR'ów ! no ale... W przerwaniu jest błąd. INTERRUPT1: RJMP STOP Używasz polecenia RJMP (skok w pierwszej linii przerwania do etykiety a nie do procedury STOP ) a na końcu RET (czyli powrót z procedury ->w Twoim przypadku program leci "w kosmos"). Lepiej wpisz tam RCALL, albo wpisz cały kod w przerwaniu. Ale po co opóźnienia...
arm.com: Cortex-M4 Technical Reference Manual ARMv7-M Architecture Reference Manual Co do timera: prawdopodobnie chodzi o opóźnienie kasowania zgłoszenia przerwania. Jeśli skasujesz pod koniec procedury, to po jej zakończeniu znacznik będzie jeszcze ustawiony i spowoduje powtórne zgłoszenie przerwania. Do sterowania NVIC proponowałbym jednak użyć pseudofunkcji...
Do każdej procedury opóźniającej musisz dodać około 5us na wejście do tej procedury, wyjście i instrukcję mov. Czyli zamiast 30us będziesz miał gdzieś około 35us. Próbowałeś zwiększyć opóźnienie 30us na 60 - 70us? To zaraz po SETB P0.0. To może być przyczyną. Tak poza tym to wygląda ok... No jeszcze musisz dać po całej procedurze resetu opóźnienie 600us...
Jeżeli chodzi ci o to żeby nie było wyprzedzeń jednego skrzydła przed drugim podczas otwierania (SA) i opóźnienia w fazie zamykania (SC) to musisz wykonać procedurę programowania w trybie ręcznym. (p. 4.6.2 instrukcji)
Z tego co wiem to bascomowe procedury LCD odliczają opóźnienie potrzebne wyświetlaczowi przy pomocy tego timera. Spróbuj zmienić timer albo poszukać w helpie bascoma.
Sprawa dotycząca modbus, powinna być wykonywana co każde przejście pętli, bez żadnych opóźnień ponieważ w module mamy obsługę 8 wejść i fatek musi o tym wiedzieć bardzo szybko, aby wykonał odpowiednią procedurą obsługującą dany przycisk. Powinieneś więc w pierwszej kolejności przenieść obsługę modbus do przerwania, tylko w ten sposób będziesz miał...
Mam napisany program, który obsługuje pomiar temperatury oraz napięcia. Problem polega na tym, że umieszczając w pętli głównej procedurę odczytu temperatury z opóźnieniem (w przypadku DS18B20 jest to minimum 750ms) pomiar napięcia w podprogramie jest również wyświetlany z takim opóźnieniem. Da się tego uniknąć? Jak zrobić, aby pomiar napięcia i inne...
Witam, Mam taki problem, od tygodnia walczę mało skutecznie z odczytem temperatury z układu LM75 poprzez softwerowe I2C. Zaczynam się poddawać - nie wiem czemu to nie działa. Mój program wygląda tak: Definicje: [syntax=c] #define SDA_OUT PORTC.DIRSET=0x01; #define SCL_OUT PORTC.DIRSET=0x02; #define SET_SDA PORTC.OUTSET=0x01; #define SET_SCL PORTC.OUTSET=0x02;...
Co do pierwszego pytania, proponuję przekonać się samemu. Nie ma lepszej nauki niż własne eksperymenty. Druga kwestia. Opóźnienie autouzbrojenia dotyczy sytuacji, w której strefa jest sterowana timerem. Np. - O godzinie 20:00 system się automatycznie uzbraja, ale Janusz siedzi jeszcze w pracy na nadgodzinach. Bez sensu, żeby wstał i wyłączał / przerywał...
Dziwić się temu może tylko ten, co nie zagłębia się w sprzęt. Skoro przerwanie jest ustawione, to i się wykonuje... Dodatkowe uwagi: - Przyciski z kondensatorami nie łączy się bezpośrednio, kondensator w szeregu powinien mieć 100Ω, bo inaczej za jakiś czas będzie nie dwa wywołania przerwań, tylko 100 z powody wypalenia się styków prądem uderzeniowym...
pierwsze 3 funkcje to procedury opóźniające: 1. o 1 mikrosekundę 2. o zadaną liczbę mikrosekund 3. o zadaną liczbę milisekund opóźnienia stosuje się w celu synchronizacji, uzyskania odpowiednich zależności czasowych, w transmisji i tego typu rzeczach. Czwarta procedura to prosty test pamięci RAM. Czy coś jeszcze jest niezrozumiałe?
#define SET_1wire DDRB &= ~_BV(WE) #define CLEAR_1wire DDRB |= _BV(WE) To jest źle. Nie zmieniasz stanu magistrali tylko przełączasz port z wejścia na wyjście. Polecam lekturę : http://www.maxim-ic.com/appnotes.cfm/an_... tam są prawidłowe czasy opóźnień i procedury w C. Wystarczy tylko trochę przerobić pod avr.
opóźnienia ns nie mają sensu ? :) wywołanie procedury, lub wstawienie if'a moze zając więcej czasu ;)
Również nie jestem Bascomowcem ale być może moje uwagi okażą się cenne. Po instrukcji Print "{008}5r", dane jest 10 ms opóźnienia. W tym czasie slave mógł już przesłać wszystkie swoje dane - a master jeszcze nie rozpoczął nasłuchu. Inną sprawą jest to, że 100 obiegów pętli w procedurze Odczyt_zn może trwać krócej niż transmisja jednego znaku przez UART...
Witam Zrobiłam sobie układzik na ATmega8L który po zwarciu PD0 do masy zapala diodę LED na kilka sekund a potem gaśnie. Programuje w WinAVR. Program: #include <avr/io.h> /***************************************... Definicje stałych ****************************************... #define F_CPU 1000000 /* 1MHz zegar procesora...
Witam. Chciałbym trochę odświeżyć temat... Układ świetny, wszystko działa. Mam tylko problem ze stabilnym odczytem ciśnienia, bo wpływa na nie oświetlenie! Jak zaciemnię fotorezystor i PWM zmniejszy oświetlenie wyświetlacza to wskazanie ciśnienia zwiększa się około 4-7 hPa w zależności od stopnia zaciemnienia! Przyznaję się, że trochę zwiększyłem opóźnienia...
Witam. Z niewiadomych(niestety) przyczyn wyświetlacz ruszył i od tej pory działa cały czas,inicjuje się bez problemu.Zauważyłem przy okazji że jeśli wyświetlam zmienną której wartość zmieniana jest w przerwaniu to lcd migocze,musiałem dać instrukcję opóźnienia w procedurze wyświetlania,natomiast gdy wartość tej zmiennej przepiszę w procedurze wyświetlania...
Wniosek do Energii złożony 20 kwietnia, 15 maja mail z informacją, że zgłoszenie zostało zweryfikowane jako kompletne. 19 maja telefon z działu technicznego z terminem wymiany. 22 maja przyjechał monter aby wymienić licznik na model ze zdalnym odczytem. Czekam, więc z niecierpliwością, że u mnie będzie podobnie. Irytujący jest brak jakiejkolwiek informacji...
Może problem z procedurą POST. Resetowałeś bios? Bateria CMOS jakie ma napięcie? Sprawdzałeś na innym zasilaczu?
przez pierwsze 10 min. świeci się na stałe PC , Cable miga, power stałe, send i recive nie świecą. nie resetowałem- opisz mi całą procedurę z resetowaniem.
Na moje to będzie tak: CZEKAJ1: MOV R0,#255 CZEKAJ2: MOV R1#255 CZEKAJ3: MOV R2,#255 CZEKANIE: DJNZ R2,CZEKAJ3 DJNZ R1,CZEKAJ2 DJNZ R0,CZEKAJ1 RET Procedura na opóźnienie (delay), zamiast 255 można wpisać cokolwiek innego byleby nie przekroczyć zakresu rejestru.
Czyli rozumiem, że tą dodatkową diode w przyciskach podłączoną do int uC wpiąłem dobrze. Nie rozumiem tylko tej odpowiedzi: "*to raczej EEPROM jest nieulotny,SRAM jest podtrzymywana" Ja rozumiem ją tak że obie pamięci są nieulotne a tak chyba nie jest. Chodzi mi o taką, która nie straci swojej zawartości po wyłączeniu zasilania bo chce do niej zapisywać...
No, czyli samo NOP żadnych bitów nie ustawia. Nie wiem skąd taki pomysł. Z wywołania procedury "SET_LCD_E"?
Witam. Mam program, który działa w pętli DO..LOOP typu: DO ... IF warunek THEN procedura ... LOOP przerwanie: ... return sub procedura ... end sub Procedura wywołana w pętli głównej ma opóźnienia na WAITMS. Chciałbym przy pomocy przerwania (przycisk) zrezygnować w dowolnym momencie z wykonywania 'procedury' i wyjść z jej obsługi do pierwszej instrukcji...
Układ wygląda OK, skoro proc się programuje i program z diodą dziłał to ja bym wziął miernik i sprawdził czy wszystkie połączenia od LCD do uC są dobre, po drugie może w procedurze inicjalizacji LCD zwiększ nieco opóźnienia (zdażają się LCD z sterownikami "kompatybilnymi nie do końca" i trzeba zwiększyć opóźnienia). Skoro widzisz pasek na LCD to znaczy,...
Wszystko zależy do jakich celów chcesz taka linie stosować. Profesjonalne (i drogie) linie opóźniające maja tryb płynnego włączania z procedurą zwalniania czy przyspieszania dźwięku. Jakie wielkości opóźnienia wchodzą w grę...?
Witam, od pewnego czasu pracuje nad zwykłym sonarem na 40kHZ. Przetwornik jest podłączony bezpośrednio do portb.3 , a odbiornik, przez wzmacniacz tranzystorowy na pinb.0. Na początku procesor(attiny2313) wysyła jedną 'fale' 40khz: ping: sbi portb,3 rcall _25us cbi portb,3 rcall _25us sbi portb,3 rcall _25us Tak wygląda procedura opóźnienia: _25us:...
Opóźnienie jest spowodowane procedurą uruchomiania kotła, urządzenie musi mieć czas kilku sekund na przewietrzenie komory i pomiar różnicy ciśnień systemu spalinowego
Ja opisałem jak to robię w procedurach w asm. W przypadku C to raczej opóźnienia nie będą potrzebne bo i tak są znaczne (obserwowałem na analizatorze stanów jak pojawiają się sygnały gdy procedury były w C i potem jak zastosowałem procedury w asm). Jedyne z tego co bym zastosował to jeżeli karta nie przejdzie przez procedurę mmc_init (zwłaszcza po włączeniu...
Będzie działać :) Tylko wyłączaj przerwanie INT na samym początku procedury jego obsługi. Tylko nie dawaj opóźnienia w funkcji obsługi przerwania. Czy to kompletny schemat? Mam nadzieję że nie :) Ale jeżeli kompletny, to zobacz w spisie treści z linku który podałem temat: Minimalne podłączanie pinów
Nie przyglądałem się Twojemu kodowi, te gotowe procedury obsługi 1-wire składają się pewnie z opóźnień generowanych na pętlach. Obsługa przerwania może skutecznie zaburzyć odbiór/wysyłanie czegokolwiek po magistrali.
Jeżeli chodzi o klawiaturę, to ja stosuję po prostu odpowiedną procedurę odczytu: wielokrotne odczyty co kilka milisekund. W ten sposób eliminuję krótkie szpilki (zakłócenia). To oczywiście spowalnia reakcję na nacisnięcie klawisza, ale przy klawiaturze opóźnienie rzędu 100ms nie ma znaczenia. Do I2C sugerowałbym filtry EMIFIL produkcji Murata. Używam...
Witam, Na pewno masz błąd w procedurze odczytującej, w jednym z rozkazów zgubiłeś znaczek #. Masz w kodzie, w procedurze "odczyt danych": MOV R2,2d LCALL delay_reg ;10us a powinno być MOV R2,#2d LCALL delay_reg ;10us Po co w procedurze "inicjalizacja_1wire" masz tak duże opóźnienie (procedura delay_long), wystarczyłoby 480us. Przydałoby się również...
Tak, jak będzie gdzie indziej to może nawet działać. Napisz jeszcze co znaczy "zmodyfikowałem procedurę obsługi" I dlaczego z powodu otwartego drenu zmieniasz polaryzację? Mi to wygląda, że z powodu wolniejszego narastania zegara jego dodatnie zbocze występuje później niż następna dana. Daj testowo opóźnienie po ustawieniu CLK w pętli - jeśli jest tak...
Po prostu nie jest tak jak piszesz. Tak naprawde instrukcje trwaja co najmniej 2 takty - pobranie i dekodowanie i w kolejnym wykonanie. Tyle, ze w trakcie drugiego taktu pierwszej instrukcji pobierana i dekodowana jest kolejna, w efekcie efektywnie masz 1 instrukcje/takt. Ten mechanizm widac najlepiej w momencie kiedy kolejka jest pusta - instrukcje...
Witam, dzięki za info. Poradziłem sobie z tematem w trochę inny sposób............ W TSI builder są opcje tzw Wyzwalacze. Ustawia się tam co ma wyzwalać : wejście czy wyjście ? w moim przypadku wybrałem wyjście, które oprogramowałem jako przełącznik MONO bo takim bez problemu można sterować z poziomu Integra Control. Dodatkowo w TSi builder trzeba przy...
rozpoczął procedurę opóźnienia spryskiwacz opóźnienia tranzystora
xprog instrukcja silniczek obrotomierza sekcja próbnik
MEWE MW-FTB500S TP-516.PB801 Firmware Request – Safe Upgrade Options and Board Matching Dyskryminator FM – brak reakcji na rdzeń, duże zniekształcenia dźwięku, naprawa i diagnostyka