Dlaczego nie? Wątek, który podałeś jako przykład to stek bzdur. Przy pomocy delay_ms można realizować opóźnienia bardzo długie, z pewnością przekraczające 3000ms: http://mikrokontrolery.blogspot.com/2011...
Po trzecie primo: w funkcji _delay_ms() nie stosuje się zmiennej jako argumentu (tu wyjaśnienie: http://mikrokontrolery.blogspot.com/2011...
Przy przełączaniu przetwornika miedzy kanałami dobrze jest odczekać chwilke czasu po zmianie kanału. Wynika to z zaklocen wystepujacych podczas przelaczania multipleksera: jesli przy nowym pomiarze biezacy kanal zostal zmieniony, to przez pewien czas na wejsciu przetwornika wystepuja stany nieustalone. Mozna zrezygnowac z tego opoznienia, jesli pomiary...
Mozliwe. Ale skoro mam ustawiony PORTD (piny danych wysylanych do wyswietlacza) ustawione na OUT, to jak czytac stany wymuszone na nich przez LCD (status)? Uzywam CodevisionAVR. A co do petli... stosuje je bo w katalogu sa podane minimalne odstepy czasowe miedzy wyzwalaniem odpowiednich stanow na pinach. Wynosza one srednio min. 80ns wiec musialem dac...
Po pierwsze jesli ustawiasz bity WGM21 i WGM20 to licznik dziala w trybie fast PWM. Po drugie, ale pewnie mniej wazne, sei() daje sie po skonfigurowaniu wszystkich licznikow. Po trzecie timer2 odlicza tylko 1ms a ty potrzebujesz 1s co daje ci 100 przerwan ray ponad sto taktow opoznienia, ale to i tak nie powinno wyjsc okolo 2 -3 s.
Warto zaglądnąć tu: http://mikrokontrolery.blogspot.com/2011...
http://mikrokontrolery.blogspot.com/2011...
Może zrób tak: If Pind.2 = 0 Then 'i jest wciśnięty przycisk PIND.2 Incr Opoznienie_odczytu 'no bo przycisk ma drgania dłużej niż 237us- niech zwiększy 'to sprawdzanie powtórne do 17ms If Opoznienie_odczytu >= 70 Then 'dajmy mu na wygaszenie drgań 17ms If Temp0 = 0 Then ' i jest zezwolenie na zmianę stanu Gosub Ustawianie Temp0 = 1 ' zablokuj zezwolenie...
Witam, ...Na samym początku programu mam miganie 100x50ms - stad wiem, czy program wisi czy nie. ... jestes w stanie to zauwazyc to dla ludzkiego oka swiecenie ciagle no i masz opoznienie rzedu 5s na starcie. Wlasnie od tego masz konfiguracje procesora fusebits, ustawiasz odpowiednie poziomy i opoznienia przy starcie, czemu nie dasz kondensatora raczej...
Hmm, czy takie coś by się sprawdziło? :D $crystal 1000000 dim 5min as byte Config Timer1 = Timer, Prescale = 1024 On Timer1 Opoznienie On Interrupts Enable Timer1 Load Timer1 = 65535 Opoznienie Load Timer1 = 65535 incr 5min If 5min = 5 Then *********** 5min = 0 End If Return
Sugeruje dać pomiędzy instrukcjami: [syntax=vb] Print "ATH" ; Chr(13) ; 'rozłączenie dzwonienia Print "AT" ; Chr(13) ; [/syntax] opóznienie chociażby 20ms
opoznienie musi byc min 750ms.. bo inaczej otrzymasz zle wartosci
Nie używasz magicznego słowa na 'v' w deklaracji zbędnej zmiennej flaga, która zresztą powinna być typu _Bool. Druga wersja kodu, ta działająca, jest nieco zgrabniejsza.
W sprawie opóźnień polecam artykuł: void _delay_ms(double _ms) Funkcja powoduje opóźnienie o _ms milisekund. Maksymalne generowane opóźnienie wynosi 262.14ms / F_CPU(w MHz). Jeśli podana wartość przekracza dopuszczalne maksimum, funkcja działa ze zmniejszoną rozdzielczością (0.1ms) generując opóźnienia do 6.5535s niezależnie od częstotliwości pracy...
SET_E; LCD = ((LCD & 0xF0) | (x & 0xF0)); CLR_E; SET_E; LCD = ((LCD & 0xF0) | (x & 0x0F) << 4); CLR_E; Chyba przekombinowałeś Spróbuj tak: SET_E; LCD=(LCD & 0xF0) | (x >>4); CLR_E; SET_E; LCD=(LCD & 0xF0) | (x & 0x0F); CLR_E; Nie...
Z mojego doświadczenia z impulsatorami mechanicznymi wystarczą 4 ms opóźnienia.
nie zrozumiałeś... tamto delay_ms nie bylo w petli:P a o maksymalnym opoznieniu czytalem:D mimo wszystko dzieki:P
Cześć. 1. Najpierw podłącz prawidłowo mikrokontroler: http://mikrokontrolery.blogspot.com/2011... 2. Później prawidłowo zdefiniuj F_CPU: http://mikrokontrolery.blogspot.com/2011... 3. Potem pokaż komunikaty z kompilacji. 4. Następnie wskaż, gdzie masz pętlę główną programu. 5. I przeczytaj...
Wprowadziłem te wszystkie zmiany, wyeliminowałem pętle WHILE, nadal procesor nie odczytuje wejść podczas wykonywania programu, czy możliwe jest że jest za wolny i wczyta te zmiany ze znacznym opóźnieniem?
Holy, pracuje na 16MHz. Wszystko dziala, kiedy z funkcji LCD_Send() wywale dwa wywolania funkcji LCD_Busy() i zmienie "nop'y" na delay(1) [opoznienie o jedna milisekunde].
Witaj. Może przy okazji programowania zmieniłeś fusebity i zablokowałeś mikrokontroler, albo podczas programowania nie kasujesz pamięci FLASH. Doinstaluj AVR Studio 4.18 lub 4.19 i w nim pisz swoje programy - oprócz takich zalet jak automatyczne tworzenie makefile (które często jest przyczyną problemów) dostajesz dodatkowo symulator AVR, a to bardzo...
Ile tego opoznienia wpisać ??? Tak co ile skakać, 1, 5??
komendy mozna zastapic tokenami, ktore sa indeksami do tablicy zawierajacej adres funkcji realizujacej dana komende. Czyli pobierasz token (np. 8-bitowy, jesli komend jest mniej niz 256), odczytujesz adres funkcji z tablicy pod tym indeksem i ja wywolujesz. Dzieki temu nic nie musisz sprawdzac, a kazda komenda jest wykonywana z takim samym opoznieniem....
sama pętla for dodaje jeszcze 3 cykle zegarowe, popatrz na liczbę wykonań pętli dla 8MHz zegara pierwsza to 70*3/8000ms + 70*1ms = 26,25µs + 70 ms druga 70000*3/8000ms + 70ms = 26.25ms + 70ms różnica jest ogromna...
Nie chodzi mi o optymalny kod itp., chcę tylko by ATMEGA miała poprawne dane w pamięci! Ale Twoje rozwiązanie transmisji jest najgorsze z możliwych...dlatego masz z nim problemy. ISR(USART_RXC_vect) { buf_odbioru[poz_znaku_odbioru]=U... if(buf_odbioru[poz_znaku_odbioru... && buf_odbioru[poz_znaku_odbioru-1]...
joy_pl: jedyna taka tabele jaka mi sie kojarzy, to moze byc dotyczaca UART, gdzie widniala czestotliwosc rezonatora, predkosc transmisji i blad procentowy. Oprocz zwiekszenia opoznienia ja bym jeszcze dodal drugie opoznienie pomiedzy pomiarami a nie tylko na koncu petli.
Problemem jest to, że właśnie w takim programie jest się ciężko połapać, bo dane nie są czytelne. Jedno co mi się rzuca na pierwszy rzut oka - pętla powinna być symetryczna, a jej 2 pierwsze linijki nie są rozdzielone opóźnieniem...
Mialem bledy w opoznieniach. Troche sie nimi pobawilem i dziala. Dzieki.
Witam. W programie "AVR delay loop generator" wygenerowalem funkcje opoznienia dla procka ATmega8 przy zalozeniach: kwarc 8MHz, opoznienie 0,002s = 2ms i program wygenerowal mi kod (podaje przeksztalcony juz do funkcji w AVR studio) ; ============================= ; delay loop generator ; 16000 cycles: ; ----------------------------- ; delaying...
Już dokładnie nie pamiętam, ale chyba uzywałem bibliotek ze strony: [url=http://www.tinkerer.eu/AVRLib/nRF24... Przesyłanie między dwoma atemgami chodziło bardzo bobrze, sygnały zawsze docierały bez żadnych opóźnień.
Można sprzętowo zwiększyć wartość kondensatora przy fotorezystorze, albo programowo: 1. Dodać stałą oraz jedną zmienną globalną na początku softu: #define OPOZNIENIE 15 double jafil; 2. Zamienić linie: adcval = ADC; // odczyt wyniku z ADC na te dwie linie: jafil = (OPOZNIENIE * jafil + ADC) / (OPOZNIENIE+1); // filtr wartosci z ADC adcval...
Rezystory są, a program nie zawiesza się w TWI. Przy programie z postu#6 po komunikacji z RTC i przepisaniu wartości na port z ledami, program sprawdza jeszcze czy ten port jest różny od zera po czym wykonuje opóźnienie 5s, zeruje port i idzie spać. Gdyby się zaciął w TWI nie wykonałby już gaszenia ledów po opóźnieniu.
Nie wiem co z tym zatruwaniem, mam zegary Nixie działające po 15 lat, nic się nie dzieje, lampy też nie były nowe a z multimetrów. Wyłączaj całkowicie lampy, włączeniem czujnikiem mikrofalowym czy IR z opóźnieniem wyłaczenia
Udało mi się odpalić program z książki Pana Wiązani, ale tam timet odmierza 1s Jak to przeliczyć? Jest jakiś na to wzór? Rzeczywiście musiało się 'udac odpalić' bo ten program nie jest pozbawiony błędów (!) \ A jak zrobić żeby odmierzał np 10 sekund? Zmiana preskalera wydłużyła max do 2sekund czas. Aby timer1 odmierzył inne/dowolne interwały czasu,...
Tylko tak na prawde opoznienie jest mniejsze niz te 500 ktore dajesz jako wartosc funkcji delay. Poczytaj plik delay.h to bedziesz wiedzial czemu;)
Nie wiem w jakim środowisku piszesz ale w AVR Studio musisz też podać częstotliwość zegara z jaką układ będzie pracować. Inaczej źle Ci powylicza opóźnienia _delay_ms i _delay_us
a _delay_ms i _delay_us Ci nie wystarcza ? Do opóźnień nie trzeba wykorzystywać koniecznie przerwań timera. Można wykorzystać flagi timera (o ile się da, ale wszystko zależy). Poza tym, zmienna deb w Twoim programie zapewne nie jest volatile, ale wrzuciłeś nam NIC, także pomoc też nijaka
Patrzylem na swoj program pilota uniwersalnego w którym stosuje power down i tam oprocz ustawienia wybudzania ma jeszcze ustawione aktywne przerwanie zewnetrzne i oczywiscie napisaną obsluge przerwania. Dodano po 2 moze zamiast zerowac pojedynczy bit w MCUCR wpisz cała wartosc do tego rejestru, gdyz nie widze gdzie ustawiasz ISC11, a jezeli zakladasz...
Zmien owire_delay na funkcje inline - inaczej generowane krotkie opoznienia rzedu 1us sa super niedokladne (wez pod uwage, ze musisz wykonac mnowstwo instrukcji wywolujacych funkcje). Po rozpoczeciu konwersji musisz miec opoznienie (to co jest zakomentowane), inaczej uklad nie zdazy podac wynikow. Podaje wtedy stala wartosc (do poolingu), stad moze...
Powód jest bardzo prosty: zmniejszenie zmiennej w pamięci nie jest operacją atomową. Co prawda za każdym razem następuje odczytanie zmiennej, zmniejszenie jej a następnie zapis, to jeśli przerwanie wystąpi pomiędzy odczytem a zapisem, to utracisz zmianę dokonaną w przerwaniu. W przypadku gdy przerwanie i funkcja main konkurują o jeden zasób, musisz...
jeszcze musisz sie WIELE nauczyc o programowaniu. np musisz sie nauczyc, ze zamiast korzystac z jakichs lewych rzeczy typu sbi i cbi mozna po prostu napisac: PORTx=0xFF; zamiast wykorzystywac do tego 8 polecen na poszczegolne bity. pomimo tego co napisales - ty MASZ multiplexowanie po ... w sumie nie wiadomo czym. taki program pisze sie zupelnie inaczej......
Jeżeli losowe i bascom to trzeba zrobić pętle od zera do zadanej a w środku wstawić waitms 1. Np tak: dim opoznienie as byte 'moze byc inne dim petla_pomoc as byte .... opozninie=rnd(60) for petla_pomoc=0 to opozninie waitus 1 next petla_pomoc ....
Marcin1326 : Tak na marginesie pomyśl o zapewnieniu atomowego dostępu do zmiennej "time" - jeśli pomiędzy zapisem pierwszego a drugiego bajtu pojawi się przerwanie, to mogą się dziać różne dziwne rzeczy (tutaj co najwyżej opóźnienie inne niż oczekiwane). Tak jak wpisanie do "time" można raz rozwiązać atomowo (zapisanie SREG, cli(), operacja i odtworzenie...
bo nie masz wygaszania diodek: if (pomiar < 250) { PORTD |= (0<<PD5);//zapalamy pd5 PORTD &= ~(1<<PD6);//gasimy pd6 } else { PORTD |= (0<<PD6);//zapalamy pd6 PORTD &= ~(1<<PD5);//gasimy pd5 } delay_ms(10); PS. czemu nie używasz biblioteki util/delay.h...
Co do opóźnień - myśle że wprzypadku LCD nie powinno to mieć większego znaczenia. przy takim podejsciu nigdy go nie uruchomiesz. po to sa gotowe funkcje z naglowka delay.h (ktory zreszta dolaczasz, a nie uzywasz), zeby je wykorzystac i nie zastanawiac sie nad tym, czy opoznienie bedzie dokladne czy nie. skoro poprawiles kod, to moze wrzuc poprawiony?...
Pokaż jak ustawiasz fuse bity. Popróbuj także z różnymi opóźnieniami po resecie.
atom1477, dzięki za kolejne uwagi, informacji o $initmicro na pewno się przyda - nie omieszkam też jej sprawdzić. Funkcja InitLCD po ustawieniu 0 na końcówce RW działa bez zarzutu i to w dodatku bez zastosowania opóźnienia. ;)
Wykorzystuję Bascom wiec niestety nie sprawdzę tych funkcji. Jaki problem przepisać na Basic? Nie jest to większym problemem, ale wolałbym nie wykorzystywać dodatkowego przerwania. A ja chce wyeliminować dodatkowe przerwanie i poza zerem sieci nie chce dodatkowych przerwań To wybrałeś zły procek. Preskaler w AVR jest mało elastyczny i aby wykorzystać...
pomijajac juz to ze petle sa kiepsko napisane (po co ci zmienna int, skoro wystarczy char?), to predkosc tego kodu zalezna jest od optymalizacji. jedyny sposob - poza syzyfowym liczeniem czasu instrukcji assemblerowych - to symulator. tak czy siak nie ma to jednak specjalnego sensu, bo czas twoich instrukcji bedzie stanowil ulamek tego opoznienia 5ms,...
Potrzebuje zrobic przetwornik pwm / U w zakresie 0 do 2V zeby poprzez wmacniacz operacyjny wysterowac tranzystor polowy do regulacji pradu petli pradowej 4-20mA. Czy da rade za pomoca prostego pasywnego filtru RC? Czy bedzie plywac ? Czas reakcji jaki potrzebuje moze miec nawet 1s opoznienia wazne zeby bylo stabilnie
chudybyk - oczywiście masz rację. Nie wiem jak mogłem tego nie zauważyć! Poprawiłem te dwie funkcje. Niestety dalej nic się nie dzieje. funkcje wyglądają teraz tak: [syntax=c]void lcd_command(uint8_t data) { LCD_CPORT &= ~(1<<LCD_RS); asm ("nop"); lcd_send(data); _delay_us(120); } void lcd_data(uint8_t data) { LCD_CPORT |= (1<<LCD_RS);...
Programowany procesor zasilam z zewnętrznego zasilacza +5V (7805 z 470uF na wejściu i na wyjściu). PRogramator też jest do tego napięcia podłaczony. Czy programator USBASP dostępny na alledrogo za 38zł to coś w stylu programatora o jakim pisze kolega? Niestety w WinAVR nie widziałem możliwości ustawiania opóźnień...
Wyświetlacz jest sprawny. Dzisiaj włożyłem go w układ innego kolegi (woltomierz chyba) i wyświetlacz działał. Avcc nie miałem podłączonego do plusa ale chwile temu to zrobiłem i cisza. Czarne kwadraciki do góry ekranu się pojawiają od samego początku. Podłączenie jest prawidłowe R/W - GND i DB0 - DB3 też masa, a piny ustalane w programie DB4 - DB7 są...
No wiec udalo mi sie odblokowac atmege przy uzyciu gen. TTL. Powiem wiecej; udalo mi sie zmienic fusebity tak,zeby dzialal z zew. oscylatorem 16MHz. W tym celu zmienilem: A987 na 1111:1111 oraz bit opoznienia na "brak opoznienia"(oryginalnie bylo 64mS). Dziala. Maly klopot: Bascom nie widzi juz ukladu. Wiecie moze o co chodzi?
hej. do dziś myślałem ze typ zmiennej int przechowuje wartości od -32768 do 32767. a tu nagle... napisałem prosty programik na atmega8. nie robi nic tylko powiększa wartość zmiennej typu int o 1. w miedzy czsie dalem male opoznienie i wyswietlenie liczby na lcd, coby dalo sie wszystko zaobserwowac. odpala sie proc. w pętli głównej zmienna sie inkrementuje,...
Musisz powalczyc kodem. To taka dziedzina gdzie zdalnie pomóc sie nie da (timingi, opóźnienia otp). trzeba ekspoerymentować.
Możesz jeśli to uwzględnisz w programie:) Musisz zmodyfikować opóźnienia.
Biblioteka do DS18B20
Hej! Potrzebuje napisac np. nastepujacy program dla robota: prawe kolo jedzie do przodu, po jakims czasie(na razie dowolnym) zatrzymuje się. Problem polega na tym, że nie działa opóźnienie. Moje testy wskazujna to, że procek nie wychodzi z pętli opóźniającej (wykonuje się wszystko do tej pętli). Należy zauważyć, że wszystko z osobna działa (opóźnienie...
Jest latwiejszy sposob, zaczerpniety z ksiazki Marcina Wiazani. Zamiast Timer1 = 36736 powinno byc Timer1 = Timer1 + 36736 To Ci uwzgledni gubione takty. W momencie przepelnienia Timer1 = 0, ale czas nadal biegnie, wiec licznik rowniez zlicza takty zegara. Zanim dojdzie do linijki, w ktorej ustawiasz ponownie wartosc timera, minie kilka-kilkanascie...
Aha, rozumiem... Przed funkcja LCD_Write() wylaczyc ADC, a po niej wlaczyc spowrotem... Sproboje tak zrobic... Co prawda wlasnie rozwiazalem problem z tym opoznieniem [chodzilo wlasnie o przerwania], ale mam inny problem, opisany w okolicznym poscie... I to mogloby byc to... Juz doszedlem: przerwania zabieraly zbyt duzo czasu, dlatego wszystko tak zwalnialo....
Kolejne pytanka moje to: czy mozliwe jest ustawienie 4Mhz na wewnetrznym rezonatorze?? Myslalem ze mozna tylko 1Mhz, jesli tak to jak to zrobic? Jak zmierzyc tym AVR studio 4 czas opoznienia? Czy rezystor podciagajacy musi byc koniecznie 3,3Kohm? ja dalem 5kilo (tzn rownolegle 2 10k ale to akurat malo wazne)
No to napisz sobie program na pomiar z dwoch zrodel i sam sie przekonaj, Oczywiscie jak dasz długi czas konwersji to bład bedzie minimalny, ale np u mnie przy min czasie konwersji mierzone napiecie 2.6v pokazywalo 1.4 po dodaniu opoznienia ok 30uS zaczelo wskazywac 2.6V. No cóż tez jestem tym zaskoczony bo kazde opoznienie dla mnie to wzrost poboru...
Nie napisałeś jaki to procesor. Przykładowo dla Atmega8/Atmega32 wystarczy gdzieś napisać UCSRB.TXEN = 0 Dla Mega328P UCSR0B.TXEN0 = 0 Mowa o Atmega16. Instrukcja UCSRB.TXEN = 0 rzeczywiście działa ale tylko do czasu, kiedy nie połączę się z drugą Atmegą. Tak wygląda początek programu dla Atmega16 (odbiornik): Dodano po 2 Znalazłem jeszcze taką informację:...
Zacznij od tego: funkcja wait i pokrewne PRZESTAŁY ISTNIEĆ. Do opóźnień i odmierzania czasu użyj timera i ogólnie poczytaj o timerach.
Z tym delay to mała literówka niezauważyłem :D poprawiłem i wyglada to teraz tak: ... while(1) { PORTD = 0x00; PORTC = 0x00; int licznik = 0; int czas = 10;//czas do kolejnego sparawdzenie stanu PINB UWAGA! zmien jeszcze delay int opoznienie = 18;// opoznienie w sekundach int dzielna = 1000; int wynik; int oczekiwanie; if(PINB = 0x01)...
jedyne, co to możesz zrobić to "szybkie miganie" diodami portX.X = 1 waitus opoznienie portX.X = 0 X oczywiście zamień na odpowiednie wartości switchami zmieniaj długość opóźnienia if pinX.X = 0 then opuznienie = opoznienie - X end if // zwiększa jasność if pinX.X = 0 then opuznienie = opoznienie + X end if //zmniejsza jasność //ten kod działa, jak...
Juz dawno z tych funkcji nie korzystalem ale z tego co pamietam to maksymalny parametr dla delayms wynosi: 255/Fosc czyli mozesz tam maksymalnie wprowadzic jednorazowo opoznienie 256 ms. Zeby odmierzyc 1s musisz zrobis oponienie np delayms(100) i umiescic w petli for *10. Mam nadzieje ze w niczym Cie nie okłamałem. Pozdrawiam
kol. MirekCz chodzi o to abyś zobrazował sobie pomiar przetwornika za pomocą diod Led , dokładniej nie całe słowo tylko 4 najstarsze bity na dowolnym porcie , osobiście polecam jednak LCD bo szybciej i prościej sprawdzisz faktyczny stan , czy sprawdzałeś układ z dodaniem opóźnienia ?
Pomyłka podczas pisania posta, oczywiscie DS podłączony do portu C tak jak na to wskazują #define. Żeby nie było , że się tylko mądrować potrafię , to przetestowałem Twoje ow_delay_us(); i wyszło mi , że dla 480us przy 8MHz powinno być: ow_delay_us(200); ow_delay_us(200); ow_delay_us(200); ow_delay_us(200); ow_delay_us(151);...
Popraw opóźnienia i wyłącz optymalizację.
Nie wiem, czy to urok avr-gcc, czy samych mikrokontrolerów, ale generalnie źle one znoszą pętle bezpośrednio zagnieżdżone w głównej pętli programu (też kiedyś miałem tego typu przygody). Zrób sobie oddzielną funkcję, np. coś w tym stylu: #define F_CPU 4000000L #include <avr/io.h> #include <util/delay.h> void opoznienie(unsigned short...
Ja uzywam BASOM AVR ver.1.11.9.0 i u mnie w helpie wyczytac mozna: WAITMS mS - The number of milliseconds to wait. (1-65535) Wynika z tego jasno ze nie 255 jest wartoscia max :D A poza tym to przyklad z ksiazki i chyba przed wprowadzeniem do druku upewnili sie ze listingi nie zawieraja bledow... ja robilem osatnio odczyt temp. i uzywałem wlasnie opoznienia...
Witam przerobiłem serwomechanizm Tower Pro MG995 zgodnie z tym filmem. A mianowicie: - Zdjąłem ząbek z zębatki, oraz blokade potencjometru, - Odciąłem kabelki od potencjometru (nie wiem dlaczego) i dolutowałem 2 rezystory 2k2, - Elektronikę zostawiłem. Przed przerobieniem sterowałem nim wg. zamieszczonego obrazka http://obrazki.elektroda.pl/5803743100_1...
ojoj panowie elektronicy:P Mam podobny problem z AT90S8535 i programatorem STK200/300. Czyta pamięć, resetuje ale nie chce programować. Może to sprawa konfiguracji Bascoma? po pierwsze - ustawiles opoznienie w konfiguracji? (bascom/programator/delay - tak z 300 ustaw, do 1500 moze dojedziesz) po drugie - wpisz na sztywno $regfile="m8535.dat" zaraz na...
W programowaniu raczej jestem słabym amatorem, lepiej sie czuje w projektowaniu. Zamiast detekcji sieci, można wykorzystać brak 100Hz jako informację o zaniku zasilania, to najszybsza metoda, bez opóźnień RC.
Wiesz narazie uruchamiam tylko to co wrzuciłem na forum , wydawało mi się że bez tego opóźnienia powinno być w porządku ... Nie mam więcej pomysłów w czym tkwi problem... Oczywiście nie zostawię tego opóźnienia...
czesc znow :D nie mialam wczesniej czasu, ale wreszcie sie udalo i podpielam zewn kwarc. Teraz mam inny problem ;] Skorzystalam z tego programu powyzej, ale wyswietlacz w ogole nie reaguje. Wydaje mi sie, ze mam zle ustawione opoznienie. Wyczytalam z forum, ze mozna wyliczyc to z djnz, ale nie wiem jak to napisac w C. Moze mi ktos napisac jak to obliczyc...
Mikroprocesor to atmega8? Znalazłem rozwiązanie na opóźnienia - pamięć FRAM tylko że ta cena - 25zł za 64k
Nie wiedziałem, że to takie proste, dzięki działa bez problemu :) Chciałbym jeszcze czegoś się dowiedzieć, może wykorzystam ten temat do tego. Program ma zapalać diody, tylko że na przemian: diody 1-4 i diody 5-8 z przerwą co 1 sekundę, jednak z wykorzystaniem Timera0 (z opóźnieniem wykorzystującym plik delay.h zrobiłem to bez problemu). Nie wiem, w...
Witam, jestem początkujący jeżeli chodzi o programowanie mikrokontrolerów, więc poniższy kod nie jest przepiękny. Proszę o poprawę... Główny problem: układzik jest to dalmierz ultradźwiękowy uzyskujący spory zasięg. Jednak by mógł też mierzyć odległość przedmiotów blisko umieszczonych muszę przełączać próg komparatora atmegi. Robię to za pomocą portu...
ja zauwazylem wyrazne opoznienia w reakcji, nawet sekundowe i większe (miałem krańcówkę która zwierała do masy nóżkę atmega16) po dodaniu oporniczka - reakcja praktycznie niezauważalna (tzn opóźnienie reakcji) O jakich częstotliwościach mowa z tym transoptorkiem? Jaki rząd wielkości?
Marcin - dziękuję
Witam, napisałem program ,który ma za zadanie sprawdzać temperatury i wykonywać poszczególne zadania. Można powiedzieć, że wszystko jest okey, ale czasami program sam przechodzi z Menu do Piec Maks_temp, i przyciski czasami działają z opóźnieniem. Kolejnym problemem jest zwieszanie się procesora, po ustawieniu maksymalnej temperatury Bojlera. Proszę...
Teraz robie opoznienia na timer0 i zobacze moze ruszy. Dodano po 1 cos oporny ten DS bez zmian same jedynki.
Problem dotyczy wysyłania danych przez USART z atmegi8 do PC. Mianowicie poprawnie wysylane jest tylko kilkanascie pierwszych bajtow. W symulacji w tym momencie wyskakuje błąd "Stack Overflow at 0x0068" i "Excessive stack overflow, stop sim". Co mam zrobić? Podprogram realizujący wysyłanie bajtu przez USART: rs232: ldi licznik, 0x09 cbi PORTD, 1...
Pomoze ktos w skompilowaniu tego programu ?? przepisalem ten program z Nowego Elektronik i chcialbym zaprogramowac nim procesor atmega8 ale nie wiem jak to zrobic. [syntax=basic4gl] 'Nowy Elektronik 701-k 'Licznik Impulsów ver. 1.0 'BASCOM-AVR IDE Verion : 1.11.8.1 'Compiler: Version 1.11.8.1 $regfile ="m8def.dat" $crystal = 12000000 Dim Impulsy As...
dziekuje za odpowiedź w moim przypadku prowdopobonie chodzi o wbudowany zegar 1MHz w jaki sposó liczyć czas opóźnień w tym przypadku pozdrawiam
albo wykorzystaj timer uC zamiast przerw
Witam Mam za zadanie wykonać sterowanie fazowe żarówki. Wykorzystuje układ Atmega8 oraz Bascom 1.1.9.5. Poniżej przedstawiam kod: Enable Interrupts Enable Int0 Enable Timer1 Config Int0 = Falling Config Timer1 = Timer , Prescale = 1 On Int0 Przerwanie On Timer1 Opoznienie Load Timer1 6000 Do Loop : End Przerwanie: Start Timer1 Return Opoznienie:...
po namysłach i szukaniach wywnioskowałem że powinno być tak : .................. On Timer0 Timer0_int Enable Interrupts Timer0 = 131 Licznik = 0 Wartosc = 0 Timer1 = 0 Do If Timer1 = 1 Then Timer1 = 0 Enable Timer0 Waitus 800 End If Loop Timer0_int: Counter0 = Counter0 + 131 'przerwanie co 1ms Incr Licznik If Licznik = 50 Then '50ms Toggle Portb.1...
Witam.Da się to zrobić.Kwestia tylko czy tekst ma być wpisany w program czy ma być możliwość jego wprowadzania z zewnątrz?Tekst ma być jak piszesz wyświetlany na pojedynczym LED czyli litera po literze z opóźnieniem?. pozdrawiam
Som 'kwadraty' czyli zasilanie ok. Nic się nie dzieje a potem wszystko znika.... czyli błędy w transmisji: -złe opóźnienia -błędne połączenia Też próbowałem tych programów... napisałem se własne, chcesz podeślę.
Fandango wszystko zaczelo dzialac !!! Serdeczne dzieki za pomoc, miales racje blad byl w opoznieniach. zumek, zastanawialem sie nad ta funkcja, nie wiem co tam jest zle, funkcja pochodzi ze strony dallas semiconductor gdzie opisana jest kominukacja 1-wire, z tamtad tez sa zastosowane czasy opoznien przy komunikacji http://www.maxim-ic.com/appnotes.cfm/app...
Zdaje mi się, że gdzieś łudząco podobny schemat już widziałem. Mniejsza z tym. Dobrze by było gdybyś opisał jakie są objawy tego "niedziałania". Schemat wygląda w sumie poprawnie, ale zanim uznasz procesor za uszkodzony zweryfikuj dokładnie częstotliwość taktowania i... może ewentualnie jakieś opóźnienia wstawić przed wysłaniem danych do LCD.
A jaką wartość opóźnienia widziałeś w dokumentacji technicznej układu DS18B20?
Witam! Chciałem nieco poeksperymentować z moją atmegą i dorzuciłem kwarc. Ustawiłem fuse bity (hFuse: C9, lFuse: FF, Lock bit: 3F) i niestety troszeczkę się coś posypało. Obsługa USARTa, która wcześniej działała teraz jakoś gorzej sobie radzi bez względu na ustawioną prędkość. Testowałem nawet kilka 'gotowych' kodów i zawsze lecą mi jakieś krzaczki....
Witam, dziękuję za odpowiedź i chęć do pomocy ale temat kontynuowałem już na innym forum i rozwiązałem to w trochę inny sposób. Faktycznie brak gotowca zmusił mnie do tego żeby trochę posiedzieć i popróbować samemu. I tak: - z kodu usunąłem część odpowiedzialną za autozamykanie - z racji braku krańcówek wykasowałem obsługę wykrywania obniżonego napięcia...
Nie pasują mi te twoje opóźnienia, PCB poprawne;>
Chyba już wiem o co Ci chodzi i jak to zrobić :) i jak dobrze pójdzie to tym sposobem od razu rozwiąże problem wprowadzenia małych opóźnień w przeskakiwaniu w menu.
przycisk opoznienie opoznienie wlaczenia opoznienie kolumn
trafic benzyna głowica tosca monitor matryca uszkodzona
hewalex sterownik hewalex sterownik
Zamienniki tranzystora 2SK2996: 2SK3130, 2SK2997 i inne Instrukcja obsługi kotła Viessmann Vitola 200 - gdzie znaleźć?