Jakie operacje są wykonywane przez mikrokontroler po wykryciu przerwania np. od T0 czy odkładany jest na stos tylko PC czy coś jeszcze, i co dzieje się po komendzie RETI. Chodzi mi o pisanie w assemblerze. W Basscom mi to działa ale wtedy gdy przy poleceniu ON TIMER0 dopiszę NOSAVE wtedy w symulatorze widzę że SP zwiększa się o 2 natomiast bez NOSAVE...
Szukam jakis przykladow assm, dla przerwan . Chodzi mi oto aby jeden timer byl wolny dla komunikacji szeregowej a drugi timer do przerwania tak aby mozna bylo kozystac z klawiatury lub innych procedur ktore wymagaja stalej czasowej.... dajcie jakies przyklady....
Otóż mam problem z przerwaniami w AT89C2051 Kiedy podczas obslugi przerwania nadejdzie inne przerwanie o nizszym proiorytecie to nie jest ono ignorowane lecz wykonywane jest zaraz po zakonczeniu poprzedniego. Przerwania są w moim układzie są wyzwalane zboczem Bardzo prosze o wskazowki jak zrobic zeby to przerwanie było jednak ignorowane. Co moze byc...
Zamieszczam caly program i prosiłbym oprzerobienie pod moje wytyczne. Przerasta mnie to . 'sterownik do pieca at89c2051 ' wyświetlacz 2*16, poprawione zachowanie po zaniku napięcia $large $crystal = 12000000 Config Lcd = 16 * 2 Cursor Off Cls Config Sda = P3.1 Config Scl = P3.0 Config Timer0 = Timer , Mode = 1 , Gate = Internal Config Timer1 = Timer...
Witam. Jestem nowy na forum i nie mam zbyt duzego doświadczenia w programowaniu mikrokontrorów wiec z gory przepraszam za błedy. Otóż mam do napisania projekt w którym mam DS18B20i za nic w swiecie nie moge dokonać odczytu z czujnika. Analizowałem datasheeta dosc dlugo i nie widze błedu.Przegladałem również tematy na forum, próbowałem różnych rzeczy...
Witam. Ja narzie doszedłem do czegoś takiego. Po wielu próbach mam na stole model(silnik elektryczny i na nim tarcza kodowa do tego transoptor szczelinowy) i do tego płytka testowa i prosty stroboskop. Aktualnie wszystko działa na 90s2313. Tarcza kodowa ma wycięcia co 45 stopni(8 sztuk) i dodatkowo jedno 10 stopni po GMP. Programik jest napisany w bascomie....
Musisz zadeklarowac zegar procesora i predkosc transmisji: $crystal = 4000000 $baud = 250000 W tym przykladzie jest to 4MHz i 250kbitow/s (akurat wycialem z kawalka swojego programu i jest to wartosc nietypowa dla predkosci RS a konkretnie predkosc przesylania danych w protokole DMX) Poniewaz zegar taktujacy UART jest pobierany z zegara glownego to...
Nie rozumiesz, flaga wyzszego przerwania jest caly czas zapalona. Nizsze przerwanie nie ma szans na wywolanie - wiec RETI nie ma szans wrocic do przerwania o nizszym priorytecie bo ono sie w ogole nie odpali. (no chyba zeby zapalic flage wyzszego przerwania w trakcie dzialania nizszego - wtedy jeden raz wroci). Czyzbym znow sie mylil czy w koncu sie...
Problem polega na tym, że dopiero co zacząłem zabawę z bascomem a wcześniej programowałem w zwykłym asemblerze i na inną 51. Teraz chcę napisać program do komunikacji między urządzeniem zbudowanym na 89c2051 a sterownikiem. Komunikacja po rsie 232. Siedzę i męcze się z początkiem programu i jakoś mi nie idzie :( Na początek chciałbym napisać aplikację...
Jak to jest z tym zawieszeniem ? Kiedyś zrobiłem układ sterownika z zegarem czasu rzeczywistego (zegar programowy) i po zastosowaniu zbyt długich procedur w przerwaniach procek po kilku minutach zawieszał się. Zaraz po zawieszeniu procesor podejmował pracę tzn. wykonywał DO<>LOOP ale wszystkie zmienne były wyzerowane, wszystkie piny (o ile pamiętam)...
O wreszcie znalazłem. Kiedyś próbowałem odpalić przerwanie serial od rs i wtedy zadziałało. Coś takiego: $regfile = "89c2051.dat" $crystal = 14745600 '$crystal = 11059200 $noramclear $noinit '---------------------------------------... Th1 = &HE0 '1200 dla kwarcu 14MHZ 'Th1 = &HFC '9600 dla kwarcu...
Wyrzuc pojemność, daj dwie bramki szeregowo (żeby ujemny sygnał na fototranzyztorze dawał ujemny na uP) i zliczaj nie na T0 tylko na INT, w obsłudze przerwania zliczaj programowo. Eliminację kilku po sobie następujących lini zrób progarmowo w taki sposób że pierwsze zbocze opadające jest zliczane a nastepnie blokuje przerwania na INT przez czas np....
Nawet nie wiem czy utworzyłem post w dobrym miejscu... Może któryś z forumowiczów przypadkiem ma gotowe wyjaśnienie dla pytania : Na czym polegają przerwania i co to w ogóle jest ? Dokładnie chodzi mi tu o mikrokontroler AT89C2051. Dopiero co zacząłem się interesować elektroniką i już muszę się nauczyć programować mikrokontrolery lecz niestety BARDZO...
Nie mam zielonego pojęcia jak napisać ten program i jak go wrzucić do mikrokontrolera.(...) Nie znam sie na mikrokontrolerach a przy elektronice lubię czasem pogrzebać wiec proszę o wyrozumiałość. Wobec powyższego proponuję Tobie najpierw napisanie programu mrugania diodą - programowo, PWM i na przerwaniach. Jak to się uda zabierz się za RC5. Proponuję...
Start: mov p1,30h ; wartość 48 podana szesnastkowo ;petlaop:10ms PETLA1:MOVR2,#10 OPOZ1:MOVR1,#250 DJNZR1,$ DJNZR2,OPOZ1 mov p1,1e ; wartość 30 podana szesnastkowo ;petlaop:10ms PETLA2:MOVR2,#10 OPOZ2:MOVR1,#250 DJNZR1,$ DJNZR2,OPOZ2 ajmp Start Tak naskracales. ze narobiles bledow... Klijent pewnie chce cos zrozumiec, wiec proponuje lopatologicznie....
Zumek ty to portafisz .... :) ludziom otuchy dodać :) Ale racja wieź zwykły AT89C2051.h i dodaj co niezbędne tzn. roszerzoną grupę przerwań, rejestry specjalne SFR oraz kilka innych śmiesznych rzeczy które konkretnie będziesz chciał wykorzystać z DS89, robi się to głównie poleceniami #define COŚ 0x1F Wydaje mi się, że SDCC ma już tą bibliotekę dla DS89C450...
Witam, robię sterownik wyświetlacza 4xled7seg, z obsługą odbioru z pilota podczerwieni i mam dziwny problem z tym układem TSOP1736, otóż na przerwaniach timera1 (16bit) jest procedura dla multipleksowaniem wyświetlacza led a przerwanie dla RC5 zrobiłem na ext0 a całość jest taktowana kwarcem 12MHz z procesorem at89c2051 i gdy przerwanie Timera działa...
No to trzeba zaprząc do pracy któryś timer. Robisz tak, że znając częstotliwość taktowania procka i mając docelową długość impulsu możesz wyliczyć (w dokumentacji powinien być wzór) ilość "tyknięć" timera. Należy pamiętać, że zlicza on w górę od zadanej wartości do 0xFFFF i przy jej osiągnięciu generuje przerwanie. W procedurze obsługi przerwania przeładowujesz...
Witam! Mam do zrobienia pewien uklad (nie istotne jaki) i skusilem sie w tym celu na atmel'ka - teoretycznie bardzo uproscil zadanie :) Ale jest pewien problem - napisalem w Bascom'ie taki prosty program (do testow) ale rezultaty sa malo zadowalajace :? Enable Interrupts Enable Int0 On Int0 Przerwanie Set Tcon.0 P1 = 0 P3 = 0 Glowny: Do P1.2 = 0...
Sprawa jest dość prosta. Trzeba zrobić układ wykrywający moment przejścia przez zero napięcia zasilania. Układ ten powinien wyzwalać przerwanie. W procedurze obsługi przerwania wyzwalamy odliczanie timera. Maksymalny czas pracy timera musi być trochę mniejszy niż połowa okresu. Należy go też uzależnić od jakiejś zmiennej której wartość będziemy zmieniać...
To wywal przecinek z ... Priority Set , Serial Poza tym , w/w przykład jest do bani , bo nie sprawdza i nie zeruje flagi , która była powodem przerwania. Piotrek
po dłuższej przerwie (żeby chorować to trzeba mieć zdrowie) wracam do tematu schemat troszkę się zmienił 1. zmieniły się porty bo tak mi było łatwiej spakować do pudełka 2. diody kontrolne zostały przeniesione z wolnych portów na obciążenie fototranzystora w celu stworzenia czujnika do ustawienia bariery, pomoc przy montażu diody i tranzystora. dodatkowo...
Oczywiście, że lepiej procesor poradzi sobie (bez dodatkowych przetworników) z sygnałem częstotliwościowym. '51 ma w sobie dwa timery 16-bitowe które mogą pracować jako liczniki lub czasomierze. Do zliczania impulsów użyj jednego timera pracującego jako licznik, a drugiego użyj jako czasomierza do generowania przerwań w których odczytywana będzie wartość...
Witam, przebiegi sinika krokowego mam, chodzi mi o idee programu, ktos mi poradził, ze na poczatku musze sprawdzic w jakiej pozycji jest głowny przełacznik ( albo tryb1 albo tryb2), potem sprawdzac czy wcisniete sa pozostałe mikroprzełaczniki i w zaleznosci, ktory został wcisniety skakac do odpowiedniej procedury sterowania silnikiem. Inny sposok,ktory...
W sprawie postu Przebiegi sinika krokowego mam, chodzi mi o idee programu, ktos mi poradził, ze na poczatku musze sprawdzic w jakiej pozycji jest głowny przełacznik ( albo tryb1 albo tryb2), potem sprawdzac czy wcisniete sa pozostałe mikroprzełaczniki i w zaleznosci, ktory został wcisniety skakac do odpowiedniej procedury sterowania silnikiem. Inny...
pcf jest o tyle dobry że ma wyjście przerwania i procek niejest zbytnio obciążony sprawdzaniem pcf-a tylko w odpowiednim momencie po zgłoszeniu przerwania wskakuje do podprogramu i wykonuje odpowiednie operacje
Do wyprowadzen INT0 i INT1 uC podlaczylem odbiorniki TSOP 1736 (diody ired wysylaja 36kHz). Do wyprowadzen portu P1.2-7 i P3.7 jest podlaczony wyswietlacz segmentowy. $mod51 L EQU 20h WE BIT 9 WY BIT 10 org 00h ajmp Start org 03h ajmp ObslugaINT0 org 13h ajmp ObslugaINT1 org 30h Start: mov L,#0 acall ObslugaLED setb ex0 setb ex1 setb ea (...) ObslugaLED:...
Witam Mam prosbe czy moglby ktos napisac ktotki program z wykozystaniem timera? Np timer liczy 256(*12) cykli zegara i zglasza przerwanie w ktorym jest rozkaz ACALL PROG. Troche nie wychodzi mi z tymi ustawieniami w rejestrze TMOD oraz z obsluga przerwań.A tak majac jakis programik cos zmienie ,przeanalizuje i w koncu sie naucze Pozdrawiam
olekewaagata dobrze pisze, po restarcie wszystkie porty są w stanie wysokim. fantasta czy to co przysłałeś to Twój program? Przepraszam, ale muszę go skrytykować. Po co używać instrukcji powrotu z przerwań skoro przerwania nie są używane? Po co ładować do rejestru liczbę 7F, skoro zaraz po tym do tegoż samego rejestru jest wpisywane 0? Z pętli na początku...
AT89C2051 ma tylko pięć przerwań: dwa czasowe, dwa zewnętrzne i jedno od portu szeregowego. Niestety nie wiem jak wykorzystać to od RSa. Rozumiem, że putchar umieszcza bajt w buforze portu, ale kiedy zostanie on wyslany. W jaki sposob, to sprawdzic? Jesli zaraz znowu uzyje putchar, to czy istnieje ryzyko, ze nadpisze poprzedni bajt? Jest znacznik TI,...
Za punkty - nie, przynajmniej nie ja. Ale cos pomóc mogę. Zrealizowałem już parę projektów uC + vb6 i jakoś one działają. Może zacznijmy od samego uC. Jeżeli był by to asm (bascom + zaawansowany bascomowiec) to zrobiłby to na dwuch tablicach które wyrażały by bufor odbioru i nadawania np rs_tx_bufor(12) as byte i rs_rx_bufor(12) as byte Można by to...
Prz zboczu narastającym odpal timer, i ustaw przerwanie na wyzwalanie zboczem opadającym. W obsłudze przerwania zatrzymujesz timere i odczytujesz wartośc oraz wyzerowujesz go przygotowując do następnego odczytu. Znając częstotliwośc zegara oraz wartośc prescalera i odczytaną wartość z timera znasz okres od zbocza narastającego do opadającego. Niby...
Witam Bez obejrzenia programu trudno będzie coś doradzić - wnioskuję, że masz gdzieś błąd. Ale możesz sobie zadeklarować obsługę przerwania i w obsłudze przerwania kasować licznik. Do wejścia podłączysz oczywiście jakiś uswitch. -- pozdrawiam
Masz chyba do pokonania dwa problemy: 1. Z powodu braku przerwań od komparatora, na bieżąco musisz sprawdzać stan bitu P3.6. Mam nadzieję, że procesor zdąży obsłużyć cały program, za nim zmieni się stan wyjściowy komparatora na przeciwny. Wtedy będzie sobie mógł to wejście sprawdzać. Chyba że zastosujesz przerwania od licznika do wielokrotnego sprawdzania...
Cześć jak zwykle metod jest wiele - sprzętowa i programowa. Programowa jest gorsza bo nic innego nie daje się wtedy zrobić mov R0, #255 skocz_tu: djnz R0, skocz_tu lub dłuższa czyli 255*255 mov R0, #255 skocz_tu: mov R1, #255 skocz_tam: djnz R1, skocz_tam djnz R0, skocz_tu Co do sprzętowej realizacji to niestety dłużej czyli ustawienie timer...
Wracając do tematu a gdyby przerwanie nastąpiło w czasie transmisji 1wire? Dlaczego uważa kolega, że programowy zegar nie jest dokładny ? Wykonywanie instrukcji zerowania w przerwaniu owszem można to uwzględnić, ale nigdy nie będzie on tak dokładny jak rtc poza tym, po co sobie komplikować życie. Ale kolega „miSZCZu5” może zrobić sobie taki...
Odblokowujesz przerwanie od portu szeregowego: [syntax=c]ES =1;[/syntax] Czy przypadkiem nie masz również odblokowanych globalnie przerwań (EA=1), jeżeli tak to możesz mieć sytuację że program cały czas znajduje się w obsłudze przerwania. Nic nie piszesz o przerwaniach ale możliwe że kompilator z automatu dodaje "pusta" obsługę wszystkich przerwań....
Urządzenie jakie chciałbym dziś zaprezentować jest naprawdę trywialne, jednak być może ktoś na tym skorzysta. Przejdźmy jednak do rzeczy. Schemat układu znajduje się poniżej. Niestety sporządziłem tylko odręczny szkic. T1 i T2 pracują tu w układzie oscylatora. Wymyśliłem ten układ kiedyś, na poczekaniu. Prawdopodobnie jest to oscylator Butlera. T3...
Jeżeli to urządzenie odbiorcze jest jakieś małointeligentne, to jedynym wyjściem jest robienie programowej transmisji, a z tym wiąże się obsługa timerów, przerwań - tu dość łatwo o mopyłkę, którą bedzie trudno wykryć. Jestem ciekaw ile miejsca zajmnie taka programowa transmisja szerego- wa (pewnie coś koło 0,4KB, czyli 20% pamięci procesora). Jak jest...
Witam! Chiałbym napisać program na procka który wykorzystywałby też obsługę kilku wyświetlaczy LED z wykożystaniem układu zewnętrznego 74164 lub inny mi chodzi o sam program. Szukałem i nie znlazłem zadmych podpowiedzi. Wydaje mi się że trzeba wykorzystać przerwania, ale niemam zielonego pojęcia jak to zrobić, a w pomocy do bascoma nieznalazłem odpowiedniej...
Witam , jest mały problem z tym prockiem otóż chodzi o wejścia komparatora analogowego. Napisałem dość skomplikowany program do obsługi odbiornika nasłuchowego - w tym LCD, PLL, EEPROM i KEYS. całość w komplecie działa dobrze (są pullupy na wejściach komparatora), ale bez tych pullupów program chwilę działa (wysyła dane do LCD i PLL) ale potem już działa...
Ad 1. Nie że chce jednocześnie INT0 i Timer0 wykożystać do liczenia tych samych impulsów. Tylko jak wpisuje: config Timer=counter gate=internal mode=1 enable interrupts enable timer0 a impulsy podaje na P3.4 to timer nie liczy nic. Dla pewności załączałem też dodatkowo przerwanie INT0 (rozumiem że to bez sensu). Chyba że ustawienie na zliczanie zbocza...
No, cóż.......pomyślmy. Trzeba by wykorzystać timer, który liczyłby czas trwania zarówno zera jak i jedynki PWM. A więc najpierw trzeba ustalić ile cykli maszynowych ma wynosić cały okres przebiegu, następnie ile ma trwać jedynka, a ile zero. Te wartości zapisujemy w RAM. Załóżmy że wykorzystujemy timer 8 bitowy: 1. I teraz - wpisujemy do timera wartość...
Może i jest proste, ale ja nie wiem od czego zacząć. Jestem kompletnie zielony. Mam jakieś 2 kawałki kodu, wiecie jak to poskładać? I ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,... Address_set = 0 Set P3.7 If P3.7 = 1 Then Address_set.0 = 1 EndIf Set P3.5 If P3.5 = 1 Then Tab. 1. Adresy poszczególnych urządzeń sterowanych kodem RC5. Adres Urządzenie...
Cały bajer polega na tym, żeby tuż przed obsługą 1-wire zaczekać na obsłużenie przerwania, po czym mamy wystarczająco sporo czasu aby dokonać odczytu lub zapisu jednego bitu. Przed operacją na kolejnym bicie znowu czekamy na kolejne przerwanie, i tak w kółko aż odczytamy (lub zapiszemy) cały bajt. W baskomie faktycznie to może być mały problem, chyba...
wtedy nie powinno miec znaczenia(no chyba że jest jakiś trik że jak się zapisuje do portu to zmienia się coś jeszcze i to coś jeszcze przerywa prace komparatora) ale w taki przypadek bym raczej nie wierzył. Czyli wal śmiało te jednyki na port a tylko zadbaj żeby nie wysłać zera bo to może przerwać porównanie(znaczy stan niski coś może zakłócić). Co...
Witam, mam programtor + plytke uruchomieniowa pod atmela 2051 , programator specjalnie pod bascoma, wszystko ladnie hula gdy pisze jakies tam programiki zmienialjace set/reset dla portow, (diodki - kazda na wyjsciu pinow postow zapalaja sie/gasna) ale problemem jest dla mnie zestawianie komuniakcji po RS, plytka jest wyposazona w uklad na MAXie, kwarc...
Nic więcej jak tylko zrobic. Jest to całkowicie mozliwe bo sam taką rzecz zrobiłem, czyli jeden uart sprzetowy a drugi programowy. Nawet nie jest to taki skąplikowany problem. Drugi, programowy uart chodzi na jednym z przerwań int0 lub int1 w taki sposób że sygnał start jest odbierany przez to przerwanie a dalej juz tylko analiza i odbieranie bitów...
potrzebuje jakiegos kompilatora takiego jak codevisionavr chodzi mi o to zeby mogl sobie na poczatku wybrac z menu np. przerwanie ,LCD,i tak dalej tak jak to jest w codevision,jest taki kompilator do tego procka??
A czemu nie tak: do 'główna pętla ... if p1.3=0 then gosub cos_tam ... loop Witam ponownie :) Dlaczego nie? Ponieważ pod wpływem drgań styków podprogram będzie wywoływany kilkadziesiąt (kilkaset) razy na sekundę :P (zależy to od prędkości pracy procesora, rozbudowania programu głównego, itp.). Można takie polecenie użyć nie bezpośrednio w pętli głównej,...
Nie znoszę Basica i na ten temat nic nie powiem, ale w C popełniasz podstawowy błąd - chcesz pracować na przerwaniach, a w kodzie ich nie ma. Uaktywniasz timer i jego przerwanie, ale nie masz ustawionych przerwań od portu szeregowego i globalnych. Na koniec mam wrażenie, że program się natychmiast wykrzaczy - w pętli while raz za razem wywołujesz putchar,...
dzieki bardzo, tego akurat nie wiedzialem :-)) jeszcze tylko nie wiem, czemu mi sie ten uklad tak dziwnie zachowuje, jak wystawiam 1 na P3 :-/ aha i jeszcze jedno: mam zamiar wykorzystac sobie przerwanie INT0 i ciekawi mnie, czy jest mozliwosc zrobienia czegos takiego, ze jak w trakcie wykonywania obslugi przerwania int0 przychodzi kolejne int0, to...
to zależy jak długi jest ten impuls i jak dokładnie chcesz to zrobić najlepiej jest użyć do tego timera i przerwania (bardzo dokładnie ale zabiera dużp peryferiów) jka impuls jest dość długi i niemusi być idealnie zmieżony to można zrobić procedurkę w asm. wszystko zależy od parametrów impulsu i oczekiwananej dokładności. a tak wogóle to zobacz na elektrodzie...
jeśli chodzi o obsługe timera to przed etykietą START wpisz: MOV IE, #10000010B;AKTYWACJA PRZERWAN OD T0 + GLOBALNE ZEZWOLENIE MOV TMOD, #0001B;TIMER MODE=1 (16 BITOW) MOV TH0, #0H ; TIMERA odlicza 65535 cykli zegara MOV TL0, #0H ; SETB TR0 To spowoduje uruchomienie timera T0. Jest to dobre miejsce do sprawdzenia klawiatury... Ale trzeba jeszcze...
da się, da. choć na AT89C2051 to nie najlepiej działa (i zresztą wszystkich 51 bez PWM), ale ja (kiedyś) napisałem procedurki które pozwalają na płynną regulację silnika SPS: W C: unsigned char licz,predkosc; #define silnikP10 #define wlacz 1 #define wylacz 0 void pwm (void) interrupt 1 { if (licz<predkosc) silnik=wlacz; else silnik=wylacz; if (++licz>64)...
Więc to znowu ja, dręczy mnie jeszcze jedno pytanie. w jaki sposów w ASM moge zobaczyć czy komurka pamieci(standardowo 8bitów) znajduje sie w pewnym przedziale, chodzi mi o odpowiednik : np: X ------> szukana liczba(dana komurka) X>75 albo: X<100 zajmuje sie ASM od niedawna i nie przypominam sobie żeby bylo coś takiego, jest polecenie CJNE,...
Jak napisać program w bascomie do pomiaru czasu trwania impulsu wejsciowego ?Prosze o konkretny przyklad listingu takiego programu ponieważ jestem początkującym programistą w bascomie i nie znam wielu możliwości.Domyślam sie ze należałoby wykorzystać któryś z timerów i poprzez start timera za pomocą przerwania i jego zatrzymanie a następnie odczyt jego...
Teraz już jest prawie wszystko jasne :) Układ resetu jest konieczny, tu masz rysunek podłączenia - 4 post Bigfoot'a (podobny problem) . Wymusza impuls resetu po załączeniu zasilania zanim układ się ustabilizuje. Musisz jeszcze przy wejściu INT dać kondensator ok. 10u równolegle z włącznikiem a rezystor wymienić na większy ok 4,7k bo bez tego występują...
To proste, musisz uzyc instrukcji decr i zmniejszac zmienna _min_1 oraz _min_2 decr _min_1 if _min_1=0 then decr _min_2 _min_1=9 end if if _min_2 = 0 and _min_1 = 0 then rem Tu wpisz instrukcje ktore beda wykonane rem po odliczeniu ustawionego czasu end if co jeszcze musisz zrobic.... caly ten blok musi byc wykonywany co minute, ja bym uzyl timera(juz...
Bez nerwów to Nowy Rok! Schemat jest dobry. Mam taki programator i działa. Jest trochę kapryśny pod Bascomem. W moim komputerze muszą skonfliktować port LPT z innym w zakresie przerwań - wtedy działa na 100%. Jeśli tego nie zrobię to braków jest ok. 30%. Nieśmiało proponuję AVR-y. Z nimi jest dużo prościej. Do siego.
no widzę, że jednak chęci są rzeczywiście na maxa ;) ... ok jak już to wybierz "rozwiązanie 1", które przedstawiłeś. Jest o tyle korzystniejsze, że nie wymaga dodatkowych elementów a przy prądzie diody 20mA spokojnie zapewni zasięg co najmniej kilku metrów bez problemu ;) Drugie też można stosować ale diodę trzeba włączyć w obwód kolektora (pomiędzy...
Dzieki za odpowiedz, w miedzy czasie zrobilem sobie schemat i mam pytanie, jesli wprowadze procesor w stan IDLE to przerwanie INT0 go ruszy ??? Na schemacie moga byc bledy bo z elektronika mam dopiero stycznosc od roku :) Pozdrawiam
Witam Jak na mój gust można układ zrobić na przerwaniach wykorzystując tylko sam mikrokontroler. Większość samochodowych zegarków i tak traci nasawy po odłączeniu akumulatora. Fakt, że raz na pół roku się go ustawi (albo i rzadziej) nie powinno stanowić większego problemu. A w kieszeniu zostanie dodatkowo koło 20zł (PCF+CR2032+podstawka do baterii)....
opoznienie najlepiej zrobic albo bazujac na bitach ustawianych w przerwaniu od licznika lub w funckji opoznienia wlaczac licznik i czekac az sie przepelni. co do 2051 to jak sie nie miesci to przydalo by sie wziasc 4051 albo powtarzajacy sie kod powrzucac do funkji i wywolywac zamiast wystepujacego pare razy kodu.
Witam! Potrzebuję pomocy ,bo niemogę sobie poradzić: Napisałem program na 2051 w bascomie obsługujący synteze,40 ch w starym CB.wyprowadzone dwa piny p3.0 = Ch down i p3.1 Ch up. Działa to pięknie. Kanał jest zapisywany w eepromie 24c02.ale ma być gałka obrotowa,jak przedtem było na starym przłaczniku 12 kanałowym. zdobyłem encoder obrotowy od sprzetu...
Możesz liczyć impulsy na podstawie przerwań zewnętrznych wyzwalanych zboczem, a nie na liczniku sprzętowym. W tym przypadku powinno być to lepsze rozwiązanie, bo będziesz mógł zastosować prosty algorytm, który zaproponowałem i uzyskasz kolejne cyfry wyniku bezpośrednio w oddzielnych rejestrach. Zliczanie binarne w kilku rejestrach, a potem podział...
KeinXor , ale pamiętaj, że strzelanie z armaty do muchy nie ma sensu. Oczywiście, ogólnie do robotów propeller jest dobrym procesorem, bo rozwiązuje wiele problemów, ale w tym przypadku zupełnie się nie nadaje. senso , takie dodatkowe generatory najczęściej robi się na timerach. Jeśli masz przynajmniej jeden timer wolny, to realizacja nie powinna być...
Mam nadzieję że to nie pójdzie do kosza: $crystal = 4000000 '4MHz $regfile = "attiny2313.dat" Config 1wire = Portd.5 Config Timer0 = Timer , Prescale = 64 On Timer0 Przerwanie0 Enable Interrupts Enable Timer0 Start Timer0 Porta = 0 Portb = 0 Portd = 0 Config Porta = 0 Config Portb = 0 Config Portd = 0 '**************************** 'Zmienne...
WYjasnienie jest bardzo proste. druga pętla for pracująca na zmiennej 'y' nie powoduje wykonanie zadnej instrukcji w ciele fora, a jedynie modyfikuje ten 'y'. Kompilator optymalizując kod na siłe wywali tego drugiego fora, bo de facto nie robi on nic. Ale jednak jesli uzyje sie przed forem zmiennej 'y', kompilator domysla sie ze ta zmienna do czegoś...
tu mozna zablokować wygaszanie ;---- UWAGA modyfikacja----- ;setb bPowerSave ;ustawienie tego bitu powoduje przejście ;w tryb oszczędzania energii(wygaszenie wyswietlaczy) ;średnik na początku spowoduje pominięcie tego polecenia ;tym samym nie będzie włączany tryb "Power Save" tu można zmienić tryb wyświetlania po włączeniu zasilania...
...Spróbowałem własnymi siłami zmienić ten kod, ale nie dałem rady(błędy kompilacji)... Aby to zrobić bezbłędnie, należy znać oba proce na "tip-top" :D Ja zrobiłbym to tak: 'Termometr Domowy' $regfile = "attiny2313.dat" $crystal = 8000000 'Config Timer0 = Timer , Gate = Internal , Mode = 2 'okres Timera0 250*12*Tosc=250us Config Timer0 =...
Jak byś się przeszedł do sklepu po ATtiny2313 albo ATmega8 to program bym Ci w bascomie napisał. Nie mam takiego dinozaura stąd wydaje się że jest ok tylko dziwi mnie fakt że wykorzystujesz przerwanie INT. To będzie do czegoś jeszcze służyć czy tylko sterownie przekaźnikami.
(at)zielonykosmita Wcześniej sam napisałeś „nie musimy się spieszyć z ładowaniem nowych wartości ponieważ mamy na to 256 cykli” i masz rację pod warunkiem, że Timer pracuje w trybie 1. Natomiast gdy Timer pracuje w trybie 0 (P. Gałka „Podstawy programowania mikrokontrolera 8051” str. 160) przeniesienie z rejestru TL do TH jest...
Witam, mam taki problem: potrzebuję "zbudować" nadajnik i odbiornik podczerwieni (dwa osobne układy) w oparciu o mikroprocesor 8051. Czy poniższe schematy (przepraszam za jakość) będą działały prawidłowo po zmontowaniu? Proszę o wszelkie uwagi - i wyrozumiałość - jestem początkujący. Później muszę zaprogramować te procesory w ten sposób żeby jeden "szyfrował"...
Zacznij od timera - przerwanie z częstotliwścią np. 100 Hz, w nim testowanie przycisków i sterowanie diodami.
kilkadziesiat lub wiecej impulsow na przerwaniu zamiast pojedynczego Przed wyjściem z przerwania blokujesz to konkretne przerwanie na czas ewentualnych zakłóceń i po problemie. W datasheet tego procesora ITL (prąd przejścia z 1 na 0) może wynosić do -750uA, co oznacza, że operując prądem rzędu 1mA jesteś w pobliżu tej granicy, co może niekorzystnie...
Polecenia skoku są wykonywane prawidłowo pod warunkiem mieszczenia się w 2kB. Sprawdź najpierw czy kwarc prawidłowo pracuje bo bez tego nic nie zrobisz: start: cpl P1.0 sjmp start na porcie P1.0 powinno pojawić się napięcie 2..3V, jeśli nie być może masz źle dobrane pojemności przy kwarcu. Po za tym nie zapomnij o tym, że jest coś takiego jak wskaźnik...
ale nie wiem jak podejsc do przerwan zewnetrznych (przyciski). Przyciski mam podlaczone pod: P3.3 (Int1), P3.5(T1), P3.4 (T0), P3.2 (Int0). Jak to jest mozliwe ze sterujac multiplekserowo wyswietlaczami segmentowymi wysylajac aktywny bit na port P3, moge jednoczesnie zglaszac zewnetrzne przerwania (z przyciskow)?? Możesz. Ale dlaczego przyciski mają...
Witam mam pytanie tak mam zrobiona obsluge przerwania INT0 w AT89C2051 - jak zrobic aby one dzialalo? org 0000h ljmp init org 0003h ljmp start wykonaj equ R0 kopen equ P3.0 kclose equ P3.1 kierunek equ P1.2 zasilanie equ P1.3 init_stan: setb kopen setb kclose clr zasilanie clr kierunek ret start: setb zasilanie reti init: call init_stan...
Witam! Proszę o poradę-jak uzyskać kilka różnych sposobów obsługi danego przerwania w zależności od funkcji je wywołującej. Teraz wykorzystuje zmienną testowaną podczas obsługi danego przerwania a ustawianą przez aktualnie realizowaną funkcję. Może jakaś podpowiedź z szybszym i elegantszym sposobem?
Ostatni raz '51 (konkretnie at89c2051) programowałem jakieś 7 lat temu i nie pamiętam już nazw rejestrów itp. Twój program działa tak: MOV TMOD, #02H; //ustawiasz timer w odpowiedni typ pracy MOV TH0, #0FAH; //ladujesz starsza czesz rejestru timera wartoscią początkową NOP; //nie robisz nic CPL P1.0; //zmieniasz stan pinu na przeciwny MOV TL0, #0EBH;...
Chciałbym zaprezentować prosty licznik Geigera, jaki ostatnio wykonałem. Urządzenie oparte jest o powszechnie znaną radziecką tubę STS-5. Lampa ta jest ciekawa, ponieważ jest stosunkowo czuła. Jako element sterujący zastosowałem mój ulubiony mikrokontroler rodziny 8051 typu AT89C2051 z typowym rezonatorem kwarcowym 12MHz. Oprogramowanie zostało napisane...
Do tej pory troszkę bawiłem się AT89C2051. Wykonałem pewien układzik który za pomocą Timera0 zliczał impulsy na wejściu T0 podczas 1sekundy którą odmierzałem Timerem1. Jako, że musiałem przeprogramować 51 do innych celów chciałbym go zastąpić Attiny2313 bo mam dwie sztuki. Zacząłem czytać książkę Dolińskiego aby wykonać program ale mam pewne problemy....
Witam, Napotkałem drobny problem podczas pisania programu w C (Keil) dla AT89C2051. Otoż chciałbym napisać program, w którym w określonych przez mnie momentach będę wysyłał dane przez łącze szeregowe, natomiast odbiór danych będę realizował w podprogramie obsługi przerwania od SIO. Może zamieszczę kawałek kodu aby Wam to uzmysłowić: #define LED P1_3...
Z tego co czytam to można zrobić to następująco: 1. wycofałbym się z obu procesorów bo są za duże jak na ten projekt wystarczyłby w zasadzie jakiś malutki procesorek powiedzmy ATTINY12 (8pin) ale jest on droższy od np. AT89C2051. 2. sygnał z pedału hamulca podałbym poprzez rezystor a za rezystorem dioda zenera 4.7V (do tej diody równolegle też można...
Powiedzmy że mam servo (chociarz jeszcze nie mam :P) i chce ustalać położenie jego dzwigni za pomoca procesora AT89C2051. Wiem, że impulsy sterujące powinny miec czas trwania od 1 do 2 ms czy coś koło tego i być powtarzane co około 20ms. Ale czy muszą być koniecznie powtarzane? A jeżeli przestanę podawać impulsy? Czy servo pomyśłi że podaje impulsy...
Powiedzmy że mam servo (chociarz jeszcze nie mam :P) i chce ustalać położenie jego dzwigni za pomoca procesora AT89C2051. Wiem, że impulsy sterujące powinny miec czas trwania od 1 do 2 ms czy coś koło tego i być powtarzane co około 20ms. Ale czy muszą być koniecznie powtarzane? A jeżeli przestanę podawać impulsy? Czy servo pomyśli że podaje impulsy...
Witam. Ogladajac schemat zamieszczony w wiadomosci rozpoczynajacej ten temat dostrzegam pewna niejasnosc. Ale zaczne od poczatku. Wlasnie przystapilem do zrobienia czegos, co bedzi poruszalo sie po wodzie. Wykombinowalem sobie, ze bedzie to cos plywajacego. A ze latwiej zrobic mi cos elektronicznego niz mechanicznego, wiec wykombinowalem, ze moj "statek"...
mam zato jeszce jedno pytanie bo nie jestem pewny. jeśli łącze 2 avr'y przez uart to rx i tx łącze na krzyż?? tak mi się wydaje ale złożyłem układ i coś mi się nie chce zkomunikować??? Tak, należy skrzyżować linie RxD i TxD. Ja tak łączyłem AT89C2051. A jeśli nie działa to sprawdź czy prędkości bodowe są identyczne na obu prockach. Rozumiem, że komunikacje...
Moglby mi ktos wylumaczyc jak napisac program do sterowania takimi wyswietlaczami. Musze to napisac w BASCOM-51 na at89c2051. Wyswietlacze sa podlaczone w taki s sposob jak na fotce. Nie liczy sie tu teraz jakie porty itd ale poprostu idea sterowania takimi wyswietlaczami ijak to napisac. Ogolnie ma to byc licznik zliczajacy impulsy i wyswietlacy wartosc...
Licznik T2 liczy nadal po przyjęciu przerwania. 8051 ze zredukowaną liczbą wyprowadzeń to np: AT89c1051 AT89c2051 i AT89c4051 ,różnica polega na rozmiarze wbudowanej pamięci Flash, odpowiednio 1k , 2k i 4k bajtów tu jest opis dla [url=]2051 a [url=]tu po polsku Pozdrawiam
Cześć !!! Pomysł bardzo dobry i ciekawy. Ale propnuje przesiąść się na jakiś procesorek ze sprzętowym I2C np. Atmega8 lub któryś z grupy nowych procków Philipsa. Dlaczego. Komunikację Mikroprocesorów z i2C w trybie Slave najłatwiej jest zbudować, gdy masz możliwość obsługi protokołu w przerwaniu. Tzn. procek dalej się kręci , coś czyta czym się zajmuje...
Witam forumowiczów. Mam mały problem z przerobieniem programu do mierzenia temperatury wzmacniacza 2x200W, problem polega na tym że mam program pod kostkę AT89C2051 a obecnie dysponuje tylko atmegą 16. Oryginalny program jest użytkownika "lechoo". Byłbym bardzo wdzięczny gdybyście pomogli mi przy tym programie. [syntax=basic4gl]'----------------------...
Temat nie zamknięty za sprawą jednego dziwaka na ziemi - mnie! Nauczyłem się pisać programy w assemblerze przez co zajmuja 30% mniej w pamięci procesora, jeśli zastosuje normalna "ludzką" kompresję z BACSOMA do asm-a. A jeśli od początku pisze w asmie to program można po prostu od początku całkiem inaczej napisac i wtedy to dopiero jest wypas! Powiedzmy...
Witam, Programuję sobie procesorek AT89C2051 i magistralę 1-Wire. O ile z odczytem danych z magistrali nie było problemów, o tyle z wysłaniem tego przez RS-232 jest problem. Czy ktoś z użytkowników ma jakieś gotowe procedury zapisu i odczytu do porty RS232? W BASCOM wszystko działa, ale chcę to zrobić w C. Na razie doszedłem do: //funkcja obsługująca...
Trochę z obawą prezentuję kolejny już na elektrodzie sterownik oświetlenia, no bo ileż tego już tutaj było? A jednak nie znalazłem rozwiązania mnie zadowalającego, dlatego też powstał niżej prezentowany układ, powstał ponieważ klasyczne lampy z czujnikami ruchu mają pewną zasadniczą wadę: nie dają się w żaden sposób sterować, a ja chciałem mieć możliwość...
Nowa wersja progarmu Zmiany w odniesieniu do starej: - obsługa LCD e trybie 4 bitowym - obsługa 6 diod (poziom głośności) funkcja - obsługa enkodera w przerwaniu INT0 (do zmiany głośności i wyboru funkcji) - wersja zoptymalizowana i okrojona ze zbednego kodu - obsluga tylko wyswietlacza 2x8 znakow (AUTOMATYCZNE PRZENOSZENIE KURSORA PO 8 ZNAKACH) - skrocony...
Musze zaprogramować mikroprocesor AT89C2051 zeby diody na płytce pokazywały coś w rodzaju kalkulatora binarnego. Mamy 4 przyciski: - przycisk 1 odpowiada 2^0 - przycisk 2 2^1 - przycisk 3 2^2 - przycisk 4 2^3 suma wynikow jest pokazywana na diodach w postaci mnozenia i dodawania; maksymalny wynik: 4 x 3 + 1 Mam program napisany w C, jak sie okazało...
Witam, cel pozostał ten sam, lecz zmienił się kod, tym razem bez Lcd, więc jako zadanie dostałem opisanie krok po kroku otrzymanego kodu oraz przeniesienie kodu z języka Bascom na kod Asemblera i C. Jako, że programowanie nie jest moją mocną stroną, prosiłbym o pomoc (rady, sugestie najlepiej w sposób tzw. łopatologiczny jak można osiągnąć postawiony...
Przedstawiam efekty mojej próby zmierzenia się z tematem sterowania bramą garażową. Taka potrzeba pojawiła się po awarii oryginalnej elektroniki napędu. Zamiast kupować następną identyczną płytkę sterującą (która znowu padnie po jakimś czasie), można przecież zrobić swoją, prostszą, i potem tanio ją serwisować we własnym zakresie. (I to by było na...