Gdy już usuniesz wewnętrzną pętlę do..loop to zwróć uwagę, że stan przycisku będzie sprawdzany raz na 60s. Możesz zrobić sprawdzanie np. tak (co 1 sek.): dim x as byte ... do 'sprawdź przyciski if x=60 then x=0 toggle ... end if wait1 incr x loop end Albo wykorzystać timer lub przerwanie.
Ten drugi pomysł jest moim zdaniem lepszy. Do tego możesz użyć końcówki przerwania INT - ma konfigurację zbocza, którym jest wyzwalane przerwanie.
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
Gdy procesor jest w trakcie wykonywania procedury przerwania, następne przerwanie nie będzie przyjęte , gdyż procesor (nie kompilator!) zeruję flagę globalnego zezwolenia na przerwania. Tak samo flaga bieżącego przerwania (tego, którego procedura obsługi jest wykonywana) zostaje automatycznie wyzerowana. Po zakończeniu przerwania flaga globalnego zezwolenia...
Te procesory się aż tak nie różnią. Dodatkowe funkcjonalności pinów nie przeszkadzają w niczym dopóki ich nie uruchomisz. (PCINT - Pin Change Interrupt trzeba wiedzieć jak włączyć). Jest duża różnica jeśli chodzi o Timery właśnie. Mega8 ma na przykład tylko jeden rejestr Compare dla Timer2 dlatego inaczej się nazywają. Opisałem to u siebie na stronie...
Wywal opóźnienie z przerwania. Po za tym wygaszaj kolumny za każdym razem jak wchodzisz w przerwanie.
W zasadzie co ten program robi? Bascom jest wolny- ale procesor wykonuje instrukcje co 0.125us przy tym zegarze. Załóżmy 1000 cykli w pętli- zajmie mu 125us policzenie stanów 0 na wejściu i co dalej? Od wykrycia 0 powinien zblokować na jakiś czas zmianę stanu, odliczyć czas w ms a nie w us i zmienić stan wyjścia. Timer i ewentualnie przerwanie.
Wklep na początku przerwania : Enable Interrupts Wywnioskowałem to z pomocy bascoma (polecenie on Interrupt)
Tak poza tematem, czy to sie nie pisze "Load Timer0, 100" ? i zrob timer0=cos na starcie i w przerwaniu.
Stosy to dla mnie czarna magia, wiem tylko, że każdy przeskok wymaga zapisania adresu zwrotnego, ale nic poza tym :oops: No przy takim podprogramie to 1 megabajtowy stos to za mało :D, to się chyba nazywa rekurencja: [syntax=basic4gl]Petlapomiarowa: If Impulsy < 15 Then 'Jesli nie ruszono, wyswietlaj dalej napiecie Gosub Pomiaradc If Konwersja >...
Np. tak: Set Flaga : While Flaga = 1 : Wend to umieszczasz raz lub kilkakrotnie w odczycie z DS-a. Część umieszczona poniżej tego wykona się dopiero jeśli flaga zostanie zresetowana. Flagę resetujesz po wykonaniu przerwania.
Obstawiam, że się BASCOM nie wyrabia z obsługa przerwań co 13us. Ale na BASCOM-mie się nie znam. 4.3ms daje przerwanie co ca. 16us, co by się zgadzało z obserwowaną czestotliwością ok. 30kHz.
Po co ten rezystor. Nastepnie jak nie chcesz czekac zanim dojdzie do ifa wykorzystaj przerwanie. Jak masz duzo przyciskow, to podlacz do wszystkich switchy diody do ktoregos przerwania
I dla tego właśnie ja nie podalem tego z przerwaniem :]
...Proszę o jakieś podpowiedzi bądź kawałek kodu co ma być dalej, żeby generować te nieszczęsne 40kHz ... To już wszystko :) Na pinie PB1 masz przecudne 40kHz , jeśli faktycznie procek jest popędzany 8MHz. W ramach testu , możesz w pętli głównej napisać: Do Set Tccr1a.com1a0 'dołącz oc1a do pinu Wait 5 'przez 5 sekund fala 40kHz Reset Tccr1a.com1a0...
Wojtek - wchodzisz tutaj: [url=http://www.frank-zhao.com/cache/avr... z kalkulatorem 16MHZ z preskalerem 1024 oznacza że: - 1 sekunda nastąpi po 15625 cyknięciach timera - przerwanie następuje przy przepełnieniu jeśli wybierzesz OVERFLOW, ale może tez nastąpić przy COMPARE, od tego zależy jaką wartość wpiszesz do timera (czy odejmiesz...
wynik końcowy faktycznie za każdym razem jest inny. (at) emarcus możesz podpowiedzieć jak powinien wyglądać serwis int1? Popatrzyłem troche bliżej na twoj kod. Z jakiego powodu potrzebujesz otrzymać wynik ("Czas_2") z dokładnocią aż do 9 miejsc decimal? Jeżeli jeden z czynników iloczynu (rozdzielczość timera) jest liczbą wymierną z dokładnościa do...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
Najpierw włącz zezwolenie lokalne, potem dopiero globalne. Jak nie pomoże, skasuj flagę od przerwania w bodajże GIFRrze:)
Usuń całkowicie Waitms z pętli odbiornika a w nadajniku zwiększ wartość Waitms. Jak nie pomoże to zrób odbiór na przerwaniu od URXC.
Niedokładnie przeczytałeś. W zakładce nawigator: Config Timer- uwaga! po ustawieniu prascale licznik natychmiast zaczyna zliczanie. Można użyć start Timerx i stop Timerx Np. Config timerx, prescale 'timer zaczyna liczyć stop Timerx 'timer stoi- ale już coś zliczył Timerx=y 'timer ma wartość początkową =y - np.0 Start timerx ' Timerx zaczyna liczyć od...
Do drasmen: jeżeli chcesz aby układ zadziałał musisz przestawić fuse bity na wew. generator np. 8MHz a do pinów gdzie podłączasz kwarc musisz wpiąć kwarc zegarkowy 32.768kHz. Program dla autora tematu: 'Program wykorzystujący przerwanie od timera0(8 bitowego) generowane co 8ms 'jeżeli przerwanie zostanie wywołane 125 razy, otrzymamy 1 sekundę...
a jak dziala w "realu"? a powiedz mi jeszcze skad wiesz ze on wywoluje przerwanie co 1s?
Spróbuj skompilować ten programik pod konkretny mikrokontroler. W Bascomie domyślenie masz ustawione AT90S2313. Użyj dyrektywy: $regfile = "m8def.dat" - dla ATMega8, $regfile = "2313def.dat" - dla AT90S2313, Może pomoże :)
Przerwanie musi być skonfigurowane jako reagujące na zbocze a nie na poziom. Wtedy program nie będzie sie zawieszał na przerwaniu.
Trzeba mierzyć czas impulsu i jeśli wynik = ileśtam to wtedy dzieje sie cośtam Może : $regfile = "twój uP" $crystal = twój crystal Config Timer1 = Counter , Edge = Rising Config Portc = Input Do If Portc.1 = 1 Then Start Timer1 If Portc.1 = 0 Then Stop Timer1 End If End If For Timer1 = 100 To 200 Reset Porta.1 Next For Timer1 = 300 To 600...
Jakoś nie widzę żebyś tu korzystał z przerwania od Timera... Bo nie musisz ;p mogłbyś pokazać jakiś przykład obsługi przycisku w przerwaniu timera ? Nawet jakiś URL do innego projektu. Więc chyba oczywistym jest że ten fragment kodu należy umieścić w przerwaniu od Timera.
To nie są problemy Bascoma, w bascomie można wiele rzeczy szybko zrobić, tylko jak ktoś go nie zna to najłatwiej i naszybciej jest na niego psioczyć i wylewać swe żale. ale ok, skoro ty (o ile dobrze zrozumiałem) w jakimś tam przerwaniu wysyłasz coś poleceniem PRINT przez łącze RS232 a następnie w tym samym przerwaniu czekasz na odbiór przez RS232 (waitkey)...
Będziesz mniej razy wyskakiwał z podprogramu do obsługi przerwania.
Witam ATMega8 ma Timer1 16-Bitowy i do odczytu lub wpisu służą dwie dane: "TCNT1L" - odczyt lub zapis "dolnej" 8-Bitowej części i "TCNT1H" - odczyt lub zapis "gónej" 8-Bitowej części n.p. stan licznika "21456" odpowiada : TCNT1H =83 ; TCNT1L=208 bo 21456:256(pojemność TCNT1L=256)=83+208 Aby wszystko było OK to obie wartości (TCNT1H i TCNT1L) muszą być...
Uzywasz przerwania, a gdzie je włączasz? Dodaj Enable Interrupt.
r"]Czy da się wysterować portami poza do .... loop by np: pod tymi portami migały ? Tak, w przerwaniach.
A może na zakończenie przerwania załadować wartość do timera???
Przykładów w necie jest od groma. Z częstotliwością co najmniej 50Hz musisz przełączać wyświetlacz i wartość podawana na niego. Najlepiej wykorzystać do tego przerwanie timera.
Po uruchomieniu zasilania najpierw odczekaj chwilkę, później skasuj flagę przerwania INT1 i dopiero zezwój na obsługę przerwania INT1.
Przecież ATmega może działać na 8 MHz na wewnętrznym oscylatorze. Jeśli nie zdążysz z obsługą przerwania, po prostu "zgubisz" przerwanie. W trybie PWM przy 8 MHz nie będziesz miał z tym problemu.
Witam Nie masz skonfigurowanych przerwań, TSOP masz podpięty nie pod tą nogę, to na początek...
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...
Wyobraź sobie, że przerwanie występuje co 500ms a do procka podłączona jest dioda. Co pół sekundy dioda zapala się i gaśnie. Okres przebiegu to będzie czas świecenia i wygaszenia diody czyli jedna sekunda. Jeśli przerwanie było by generowane co sekundę okres wynosił by wtedy dwie sekundy.
Dalej nic... Włącz przerwania od ACI.
Napisałem podobny programik na ATtiny2313 w zeszłym roku. Użyłem komparatora bo szkoda mi było przerwań. Można go przerobić na ATmega8 Jest na elektrodzie-attiny2313 bascom pwm działa.
Czy da się generować przerwania od timer2 przy każdym przepełnieniu w trybie CTC? Próbuję generować częstotliwość w zależności od ustawienia potencjometru, ale timer generuje przerwanie tylko raz, cały program poniżej: OCR2 zostaje wpisana tylko pierwsza odczytana wartość zaraz po starcie programu, dalej już nie generuje przerwań. Po wrzuceniu " OCR2...
Poczytaj o przerwaniach wywoływanych od bufora UART ;-) Wówczas, gdy na buforze pojawi się znak, program skoczy do procedury obsługi przerwania, a tam możesz już robić co chcesz. Polecam zmianę jakieś flagi widocznej w pętli głównej, żebyś nie robił skoków z obsługi przerwań.
Rzuciłem okiem w HELPa i funkcja "inputbin" czeka na znak, program dalej się nie wykonuje. Może lepiej użyć przerwań wykonujących się, gdy w buforze UART jest znak ?
No to masz odpowiedz. Wyświetlanie zajmuje za dużo czasu i przerwanie się nie wyrabia.
Ale, co ten program u góry? Jak tak to teraz podeśle taki na przerwaniach. Jak tak to napisz co się działo na ekranie LCD.
Nie wiemy co jest na ENABLE bo ten set portc.3 jest w przerwaniu co 400 us
Nie myślałeś na obsługą klawisza w przerwaniu od INT? Trzeba byłoby jedynie wytłaczać je podczas komunikacji 1-wire żeby się nie rozjechał.
Zmień doświadczalnie wartość wpisywaną do timera. Zobacz czy poprawnie wyświetla ci to co chcesz. Ważne jest także żeby przerwanie nie było za długie bo wtedy może grozić to resetem uc.
Po wykryciu naciśnięcia klawisza musisz ustawić poziom świecenia i przerwać pętlę for next, bo wykonuje ci się jej resztka i zmniejsza jasność świecenia. Co do W1, nie wiem czy to jest komplet źródeł, ale jeśli używasz Bascomowe procedury obsługi W1, to musisz mieć zablokowane przerwania. Albo nie używasz przerwań wcale w programie, a jak nie to musisz...
Dzieki, takiej odpowiedzi potrzebowałem, wykorzystam przerwanie. :) Pozdrawiam...
Co do nadawania RC5 to ten rozrzut czasowy nie jest aż taki, żeby wyjść poza zakres tolerancji raczej, a z przysiadaniem napięcia to niech autor pokaże schemat - nie wiadomo czy i jaki wzmacniacz siedzi między procesorem i diodą IR. Niestety moim zdaniem program jest zły, bo w przerwaniu (z tego co kiedyś ostro testowałem) nie ma sensu wyłączać samego...
Witam. Mam nastepujacy problem... napisalem programik generujacy przerwania od przepelnienia licznika. $crystal = 16000000 $regfile "m8def.dat" Config Portd.5 = Output Config Timer0 = Timer , Prescale = 8 On Timer0 Intr Enable Interrupts Enable Timer0 Portd.5 = 0 Do Loop End Intr: Load Counter0 = 5 Toggle Portd.5 Return Problem w tym ze...
Dzięki wielkie za pomoc, pomogło wyrzucenie tego z obsługi przerwań
Pokaż schemat to raz. Dwa: co to jest? Set Pinb.5 Set Pinb.6 Set Pinb.7 Tak po za tym chyba brakuje ci wartości początkowej timera0... Nie obraź się ale przy tym oscylatorze i preskalerze 64 otrzymasz przerwanie co najwyżej co 2ms... Na koniec zapamiętaj że program zawsze umieszcza się w znacznikach "code".
Tak już też próbowałem, ale jeszcze raz skompilowałem i zaprogramowałem (Twój kod). Może to i działa, ale niestety nic nie widać na wyświetlaczu ( za duża częstotliwosc wyświetlania?), dlatego wyrzuciłem " Wyswietl " po pojawieniu się przerwania.
Do atmegi8mki Ci może nie wejść obsługa FATu. Poszukaj na elektrodzie FAT SD Atmega i coś znajdziesz gotowego. - Napewno nie Bascom :D Potem jakieś przerwanie i mierzyć czas i robić systematyczne opróżnianie buffora na drabinke R2R albo DAC.
Dziwne jest to że w starszej wersji ten kod działa, a raczej nie powinien :). W helpie pisze że funkcja GetRC5 wykorzystuje timer0 i przerwanie od tego timera. Umieszczenie tej funkcji w przerwaniu INT0 wydaje się być błędne. Przerwanie od timera się nie wykona, dopóki nie zakończy się obsługa przerwanie INT0.
czy jest mozliwe zmienienie podprogramu przerwania np z labe 11 a w innej czesci programu aby to samo przerwanie Int0 np przechodzilo do podprogramu labe 13 ? chodzi mi jezyk bascom i układ Atmega8
Co zrealizować? Programowe zliczanie impulsów? Ustawiasz timer tak, żeby generował przerwanie co 100 us, sprawdzasz stan portu, robisz xor z poprzednim stanem i testujesz, które bity są ustawione - ustawiony, znaczy zaszła zmiana stanu, czyli inkrementujesz odpowiednią zmienną.
Tyle że kolega chciał w Bascomie :). Polecam help do bascoma. Konfigurujesz timer, uruchamiasz go i gdy zliczy pewną ilość impulsów wywołuje przerwanie.
Jeśli wywołanie nie działa to znaczy że masz coś w kodzie nie tak. Z tego co dobrze pamiętam to jak wywołujesz funkcję to chyba najlepiej z parametrem. Sprawdź jak masz przerwania.
Przeglądając Twój program mam takie małe spostrzeżenie, a mianowicie w pętli głównej masz wywołaną procedurę Gettime - ' Call Gettime' - która działa na I2C. Co się stanie gdy podczas wykonywania procedury Gettime zostanie zgłoszone przerwanie od Timer'a?? Program przerywa wykonywanie procedury Gettime i skacze do obsługi Timera a tam jest wywoływana...
"Timer" odnosi się do konfiguracji pracy licznika T/C, natomiast INT0 to przerwanie zewnetrzne ! Radzę poczytać HELP'a.
Wrzuć wszystko do programu głównego tzn. przyciski ( ustawianie czasu załączania/wyłączania pompy), sprawdzanie Adc (poziom wody) przeliczanie wartości dla wyświetlacza , a samo wyświetlanie w podprogramie odświezanym co jedną sekundę za pomocą Timer0 . Timer0 dalej dla wyznaczania 1 sekundy. Buzer zrealizuj za pomocą zwykłej zmiennej licznikowej zwiększanej...
Spróbuj przykładu podanego w [url=http://www.elektroda.pl/rtvforum/to... wątku. Nadawanie przez PRINT. Odbiór w przerwaniu URXC i flagą ustawianą i testowaną w pętli głównej programu.
można można... tylko z rozwagą:> I chyba nie polecam tego koledze na chwilę obecną:> (Ale jakby co wystarczy włączyć ponownie przerwania globalne...).
A nie lepiej ci badać stan krańcówki np co 10ms ? Wykorzystanie przerwań to nie jest dobry pomysł w tym przypadku.
2. Gdzie to wyczytałeś, że INT obsługuje jedynie LOW LEVEL ? W helpie do Bascoma. a jak ma to działać , skoro nie masz procedury obsługi przerwania? Program się kasuje i to jest naturalne. Wszystkie procedury były, tylko wkleiłem fragment który miał znaczenie, reszta oczywiście w pliku źródłowym była obecna. Problem już dawno rozwiązałem, ale i tak...
Musisz ustawiać znacznik, albo lepiej- odblokować przerwanie :-)
Odpowiem za autora: Wysłanie czegokolwiek przez Uart na pierwszym uC powoduje przerwanie od Uart na drugim uC. Ot tyle.
typowy układ pracy komparatora dokonującego pomiaru napięcia na wejściach +/- (schematów jest wiele w sieci ),po za tym skoro to AVR to warto skorzystać dodatkowo z przerwań INTx
Witam. Nie używaj lookup. Zrób sobie tablicę cyferka[10], nadaj jej wartości na początku programu i będziesz miał port=cyferka[d]. Wszystkie obliczenia rób poza przerwaniem. W przerwaniu tylko wyświetlaj dane na wyświetlaczu. I to tylko jednym naraz. Mój przykładowy programik (zegarek z termometrem do motocykla) A1 A2 A3 A4 to zmienne, które program...
Ponieważ tzw. casting w BASCOMie jest nieco zbyt prosto zrobiony to proponuję zrezygnować z: Dim Xl As Word Dim Xh As Word A w przerwaniu pobierać zawartość z rejestru ICR za pomocą specjalnie generowanej dla tego celu zmiennej typu Word: Capture1 . Pętlę Do..Loop zamieniłbm na sprzętowe porównywanie i kasowanie licznika przez CTC. Niech takimi rzeczami...
Dlaczego chcesz odczytywać czas w przerwaniu? Przerwanie powinno być jak najkrótsze. Odczyt danych z pcf-a zrób w pętli głównej a przerwanie wykorzystaj tylko do migania kropką.
Cóż, nie jest to znana mi metoda obsługi enkodera, ale chyba ciekawsza... Natomiast nie widzę tu operacji na przerwaniach.... To prawdopodobnie powoduje błędy, chyba, że się mylę. Ale enkodery to zawsze zagadka dla mnie były więc wiele nie pomogę.. Pozdrawiam.
Wejdż na www.elportal.pl >bascom a tam jest znakomity help w naszym rodzimym języku w którym to zagadnienie jest opisane . Polecam również kalkulator do obliczania czasu pomiędzy przerwaniami - do pobrania w/w linku. Pozdrawiam. Waldek.
czy da sie w bascomie tak zaprogramowac przerwania zawnetrzne (ATmega8) zeby w trakcie procedury wykonywania przerwania zalozmy INT0 przy pojawieniu sie sygnalu przerwania INT1 zapamietalo to i wykonalo procedure drugiego przerwania po zakonczeniu pierwszej? przerwania reaguja na zbocze sygnalu nie na poziom
Zmień: Gosub = Sectic Na: call = Sectic a także zadeklaruj sobie zmienną "flaga" jako bit i resetuj ją na końcu podprogramu "Sectic". Następnie przed odczytem z przetwornika umieść: Set Flaga : While Flaga = 1 : Wend . Próbuj doświadczalnie umieszczać ten kod tam gdzie masz odczyt z przetwornika. Dzięki temu kod umieszczony poniżej zacznie się...
Potem calosc zestroilbym dodajac nopy i ewentualnie korygujac minimalnie timer Jak czas odmierza timer, to nop nie nadadzą się jako coś do korekcji częstotliwości.[/quote] Nie chodzi mi o korygowanie chwili wystapienia przerwania,lecz o dokladny moment zmiany stanu portu w procedurze obslugi przerwania.
Nie jestem pewny czy procesor zdąży wykonać to co masz w tym przerwaniu , zanim przyjdzie następne (mam na myśli wszystko ).Program w przerwaniu ma być krótki , chyba że pierwsza linijka jest taka " Disable timer0 " , ale w twoim programie taka instrukcja raczej odpada. I jeszcze jedno , co się dzieje jeżeli podczas transmisji po i2c lub 1Wire przyjdzie...
Ja bym zrobił UARTa na przerwaniach.
No to przed diodą, dlatego podłącza się to nie tam gdzie masz cap, a tam, gdzie masz napięcie które "zaniknie" po odłączeniu zasilania... Innnymi słowy: mostek-> | -> dioda-> cap-> układ [tutaj pomiar] I podłączasz to nie na ADC tylko na int... masz w tym momencie sprzętowe przerwanie po zaniku zasilania;)
W takim razie sprawa jest dość prosta. Na początku przerwania musisz wyłączyć przerwania z INT1, skasować flagę w INTF1 w GIFR (zapisać 1) by nie otrzymać fałszywego przerwania po wyjściu (w kodzie będzie wiele zboczy), odebrać kod przez GETRC5(), następnie włączyć znów przerwania z INT1.
Oj kolego jak Ty chcesz mierzyć coś używając Waitms w programie ?. W obsłudze przerwania od cewki startuj timer, a w drugim przerwaniu go zatrzymuj.
Razem z procedurą odbioru uruchamiasz timer ustawiony na okres na np 2-3 czas transmisji. Jeśli odebrałeś prawidłowe dane zatrzymujesz timer w innym przypadku timer zgłosi przerwanie i masz informację o błędzie.
Szukając rozwiązania mojego problemu napotkałem na rozwiązanie timera2 w pracy asynchronicznej. Tylko mam pytanie bo nie jestem pewien, przy kwarcu 32.768kHz przepełnienie licznika odbywać się będzie równo co 1s ?? Co zrobić żeby przerwanie z przepełnienia było co 0.25s ??
A nie prościej liczyć to za pomocą Timera1 czyli na sekundę ma być np. wyświetlonych 50 obrazów i każdy z nich zawiera np. 10 części. Daje nam to 500 przerwań na sekundę. W przerwaniu Timer1 ustawiasz za każdym razem początkową wartość timera i ustawiasz jakąś flagę. Możesz również dodać zwiększanie licznika od tego co ma być wyświetlane. W programie...
polecenie serwo w bascomie działa tragicznie. proponuję stworzyć na jakimś przerwaniu własną obsługę i będziesz zadowolony
Hej, Jeśli chcesz płynnie regulować współczynnik wypełnienia to musisz wybrać jeden z modów PWM i wtedy będziesz skazany na jedną z kilku częstotliwości wynikających z zegara systemowego i tego jak ustawisz prescaler, Jeśli chcesz płynnie regulować częstotliwość to wybierasz mod CTC(clear timer on compare) ale będziesz miał wtedy stałe wypełnienie,...
akurat kompilatory popelniaja bledy [; to jest fakt z ktorym trzeba zyc. no moze nie tyle 'popelniaja bledy' co 'zawieraja bledy'. 4\/3!!
Nie znam Bascom więc odpowem - zaglądnij do instrukcji mikrokontrolera. Znajdziesz tam informacje, że należy: - ustawić pin jako wejście - ustawić odpowiednio bity ISCxx - włączyć pull-up (jeśli nic innego nie wymusza stanu wysokiego) bo z power down wybudza się tylko poziomem niskim, - włączyć przerwania globalne oraz INTx, - no i oczywiście musi być...
To nie program tu jest problemem a dopasowanie sygnału. Poczytaj o wzmacniaczach operacyjnych i komparatorach. W procesorze zbocze możesz wykryć za pomocą przerwania zewnętrznego.
Witam, Mam pewien problem z Rc5 w bascomie, chodzi mi o to, że instrukcje odpowiedzialne za rc5 są wykonywane tylko kilka razy a później, kaplica coś się zapycha:) i pilot nie działa. Cała sytuacja ma charakter nieliniowy tzn. że raz wykryje 3 naciśnięcia przycisku na pilocie a raz np. 5. Po zresetowaniu procka znowu RC5 działa przez parę cykli uP....
Musisz to na przerwaniach zrobić. Jak w bascomie się przerwania obsługuje to w Helpie powinno być opisane
Witam. Powinieneś zastosować przerwanie np. Timer1 do zliczania czasu. Sprawdzanie temperatury powinno dobywać się co sekundę lub dłużej. Załaczanie/odłaczanie pompki i innych elementów musi odbywać się w przerwaniu i powinno być sprawdzane wraz ze zmianą temperatury. Co do wyświetlania można zrobić to w przerwaniu lub nie.
(at)lawczys Witam ! U mnie w Bascomie AVR DEMO wer. 2.0.7.9. plik Twój kompiluje się bez błędu, kod zajmuje 9% pamięci ATmega8. Może używasz Bascoma 8051 zamiast AVR ? Pozdrawiam. Stefan
Program jest banalny. Warunkiem prawidłowej realizacji zadania jest użycie timerów (najlepiej i najwygodniej programowych). Wiąże się to z poznaniem przerwań, które po prostu musisz poznać wcześniej czy później. Podejrzewam że nikt tu za Ciebie programu nie napisze, ale jak już coś stworzysz to pomożemy iść dalej :) Aha, na "Wait" nic tu nie zrobisz....
Witam i jak zwykle proszę o pomoc. Otóż piszę program do sterownika wytrawiarki, zrobiłem Menu (hehe, 50% flasha), i potrzebuję zrobić termostat z czujnikiem temperatury, a wybrałem sobie DS1820, bo łatwodostępny i pospolity. Problem mam taki, że w programie głównym wyświetlam tą temperaturę, (przechodzę do podprogramu), a czas odczytu wynosi 750ms,...
Po pierwsze jakie czasy chcesz obliczać i jakie przerwania po co ??? To jest bascom nie assembler, deklarujesz na wstępie programu prędkość kwarcu a kompilator troszczy się o resztę tj. dajesz deklarację $regfile = "m8def.dat" $crystal = 12000000 Po drugie, procedura obsługi wyświetlaczy LCD (mowa tu o alfanumerycznych HD44780) jest w BASCOM zaimplementowana...
przerwać atmega8 bascom atmega8 przerwać bascom przerwać atmega8
matryca ue50j6200 nagrać dekodera komputer pasek przewijania firefox
philips senseo sterownik ładowarki akumulatora
Toyota brak prądu w kabinie – centralny zamek i szyby nie działają, niedziela, bezpieczniki, przekaźnik PWR Przetwornica 12V-240V a łowienie ryb – legalność, bezpieczeństwo, skuteczność