Dosyć odważnie sobie poczynasz na mikrokontrolerze mającym 2kB Flash i 128B SRAM :D ale do odważnych świat należy. Odchudziłem Ci trochę kodzik. Obsługa przerwania timera została stuningowana moim programem NoSave Tool. Teraz mikrokontroler nie odkłada na stos większości rejestrów a tylko te potrzebne - w tym przypadku tylko jeden :D Przekłada się to...
Kiedy w końcu zrozumiecie, że nie każdy chce zostać programistą i ludzie czasem programują sobie po to by coś zrobić i mieć z tego satysfakcje. Wiem jak oprogramować ADC i to nie tylko w Bascom, ale zauważ że piszemy tu o Bascom. Języku który upraszcza wiele rzeczy dając Ci określoną ilość prostych w użyciu funkcji. Jedną z takich funkcji jest Getadc()...
Wydaje mi się że program kol.tmf da się przetłumaczyć na Bascom. void tmf_impulsator(void)//podprogram albo funkcja w Bascomie { uint8_t i=0;//deklaracje dim na początku programu static uint8_t enc_last; if(bit_is_clear(PINC,4)) i++;//sprawdzenie czy impulsator się ruszył 'if pinc.4=0 then if(bit_is_clear(PINC,5))...
Witam Mam problem programuje w Bascom avr procka atmega8 zrobiłem sobie transmisje RS i mam problem ogólnie wszystko pięknie ładnie działa tylko że w momencie jak wystąpi przerwanie po przez funkcje print zostaje wysłany znak ze zmiennej po czym przechodzi do funkcji waitkey() i oczekuje na odebranie znaku no i właśnie ... oczekuje ale nic nie widzi...
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.
Wróci do funkcji2, ponieważ przerwanie zawiesza dotychczasowe działania, a po zakończeniu jego obsługi wraca do wykonywania przerwanych operacji.
Narzędzie NoSave Tool powstało by zautomatyzować to co kiedyś robiono na piechotę. Ładowałem plik OBJ do Atmel Studio i patrzyłem które rejestry są w użyciu. Sprawa robi się bardziej zawiła kiedy w przerwaniu użyje się jakiejś pozornie nieskomplikowanej funkcji, na przykład Rotate. Taka funkcja to gotowy kawałek kodu umieszczony gdzieś indziej i program...
Witam, Na wstępie chciałbym powiedzieć, że zanim zdecydowałem się napisać ten post, używałem szukajki na tym forum i wujka google ale bez pozytywnych rezultatów (przeczytałem bardzo wiele tematów i skopiowałem wiele kodów). Przejrzałem także plik Help w Bascom. Problem polega na tym, że funkcja getrc5 zwraca zawsze wartości adresu = 255 oraz komendy...
Szkoda że na '51, bo na AVR było by łatwiej. Można to zrobić tak: Procki '51 mają wejścia zewnętrznego przerwania wyzwalanego stanem niskim, lub zboczem opadającym. Ciebie interesuje to drugie (bo zboczemn narastającym się nie da jak w AVR). Nie wiem jak wygląda konfiguracja przerwań w BASCOMie, zobacz w dokumentacji, ale podejrzewam że coś w rodzaju:...
Timer cyka ci co 4ms. Wyliczaj sobie nim sekundy i spokojnie użyj go tez do multipleksowania wyświetlaczy. Co każde przerwanie (czyli co 4ms) załączaj anodę następnego wyświetlacza i wyświetlaj na nim kolejną cyfrę. Cyfry do wyświetlenia pobieraj sobie ze zmiennych np godzina(dziesiątki), godzina(jedności), minuty(dziesiątki) itp. Ale też w tym przerwaniu...
Witam !! Proszę mnie oświecić, gdyż mam mętlik w głowie. Chciałbym zrealizować generator na 89.. o częstotliwości 100Hz, tak aby ta częst. była dostępna na jednym z portów. Hmm... najlepiej sinusoida. Bascom oczywiście.. Czytałem o timerach, ich przeładowaniach, ale coś się u mnie zablokowało. Dla swojego ułatwienia zastosuję kwarc 12MHz aby po wewn....
Mam kolejne pytanie. Mając to że odczytuje PINB i PIND w przerwaniu (wstawka asemblerowa od michalko12) czy mogę wysłać dane powiedzmy od TAB1[0] do TAB1[10] przez TWI (i2c) do drugiego AVR ?? Czy nie będzie jakiegoś konfliktu z tą wstawką ASM?? TWI też wykorzystuje przerwania ?? Ewentualnie jak wysłać to do drugiego AVR (oprócz SPI i UART) bo mam do...
Raczej najpierw musisz sie nauczyć C No właśnie próbuję. Przez ostatnie kilka dni przewertowałem więcej PDF od kontrolerów, niż przez ostatnie 3 lata :D Na razie największy problem dla mnie to operacje bitowe - wiadomo w Bascom łatwiej. Kupiłem nawet Attiny4313, coby nie brakło pamięci. Problem był jednak w momencie polecenia włączenia przerwań, były...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
Bascom - wersja 1.11.95 Kod, no jest tego sporo: - zegar PCF8563 - Zapis na SD - dwa czujniki DHT11 - odczyt z PCF8574AP ( klawiatura ) - RC5 - ma być DS18B20 - ma być DCF77, ale nie doszedłem do tego momentu ( tzn testowałem na innym procesorze i działało ) Działa - zegar PCF8563 - dwa czujniki DHT11 - odczyt z PCF8574AP w przerwaniu ( klawiatura )...
Do odczytu stanu portu służy rejestr PIN. Czyli masz źle zrealizowane warunki w funkcji przerwania.
Przy zapisie do EEPROMU w Bascomie nie musisz wyłączać przerwań. Funkcja WRITEEEPROM robi to sama, ale READEEPROM już nie wyłącza przerwań :)
Nie masz za dużo w funkcji obsługi przerwania. Dużo Waitms i jeszcze obsługa LCD. Może przerwania tak szybko nadchodzą, że nie zdąża czasu na wyjście z niego. Funkcja przerwania powinna być krótka
Funkcja WAITMS nie jest odporna na przerwania. Jeśli masz jakieś to każde wystąpienie przerwania w trakcie WAITMS rozjedzie go. Niezależnie od stabilności tej funkcji, a nie ma powodu, żeby nie była powtarzalna jeśli nie jest przerywane wykonanie przerwaniami, to i tak lepsza praktyką będzie wykorzystanie timera.
Moze da bascom'owa funkcja uzywa timera
Witam, Magistrala 1-wire posiada dość mocne restrykcje czasowe co do trwania poszczególnych stanów na DQ. Przerwanie Timera, a wiec wykonanie podprogramu związanego z obsługa przerwania, powodowało zmianę długości tych czasów, gdyż są one generowane softwaerowo przez Bascom. Czasem może się zdarzyć że kolizja i tak wystąpi pomimo że teraz wszystko jest...
Atmega2560 posiada 256kB pamięci. Załóżmy, że program zajmie 25k, zostaje jeszcze 225kB. Zatem, Twoich "plików" wejdzie 225 / 0,72 = 312 plików po 720 bajtów. Dostęp do danych przez funkcję lookup https://avrhelp.mcselec.com/index.html?l...
Nie wiem konkretnie o co Ci chodzi, ale pewnie rozwiązaniem było by zastosowanie odbioru w przerwaniu co w bascomie jest niezwykle łatwe za pomocą BYTEMATCH. Mam wersje 1.11.9.0 i wspomnianego BYTEMATCH nie ma. Od ktorej wersji bascoma jest w/w funkcja? Zawsze byłem za tym, by najmniej korzystac z gotowych funkcji, a korzystac bezposrednio z rejestrów...
A niby czemu ma program skakać do procedury obsługi przerwania od przepełnienia? Przecież on się nie przepełnia, tylko po doliczeniu do wartości OCR lub ICR , natychmiast się zeruję ( przy okazji może ,ale nie musi zmieniać stan pinu OC). Musisz uruchomić przerwanie od tego właśnie porównania - czyli od Compare, tak jak wspomniał kolega wyżej. Tylko...
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 ?
Tu mam jeszcze pytanie - czy mogę wykorzystać timer, do odpytania co kilka sekund o czas z rtc, co kilkadziesiąt ms o stany przycisków, co kilka sekund o temperatury? Użyj techniki opisanej [url=http://stsystem.elektroda.eu/progra... Co prawda kody są w C, ale z opisu bez problemu...
No to kawa na ławę. Instrukcja Getrc5 w czasie działania używa jest licznika TIMER0 i związanego z nim przerwania. Licznik ten jest służy do generacji wymaganych opóźnień podczas próbkowania sygnału. TIMER0 może być dalej używany przez program, lecz należy się liczyć z wynikłymi opóźnieniami, gdy wykonywana będzie funkcja GETRC5(). Jest tylko jeden...
Generalnie to twój problem wynika w dużej mierze z tego, że wywołujesz funkcję z wewnątrz przerwania. To powoduje szczególnie w Bascomie - niestety KOSMICZNE obciążenie w postaci po pierwsze ogromnego i niepotrzebnego zużycia stosu przez co musisz właśnie zacząć się bawić z tymi wszystkimi HWSTACKAMI itp .... zobaczysz jaka bonanza z tym będzie przy...
Należy: - zadeklarować zmienną globalną np. LICZNIK i nadać jej wartość zera, - włączyć przerwania od przepełnienia Timer0, - w funkcji przerwania należy zwiększać wartość zmiennej LICZNIK o jeden Aby poznać liczbę impulsów wystarczy pomnożyć LICZNIK*256 i dodać do niego aktualną wartość rejestru licznika timera, czyli jak sądzę counter0 (nie znam BASCOM).
...Jakie jest zatem rozwiązanie tego problemu (jeśli jest)? Bascomowy UART programowy działa jedynie wtedy , kiedy wywołamy funkcję z nim współpracującą. W pozostałych przypadkach ( kiedy działają funkcje/procedury nie związane z programowym UART-em ) , nadchodzące dane są "niewidoczne" dla procka :( Np. jeśli masz w kodzie Wait 1 , a w czasie działania...
Program się zawiesi bo na czas zapisu program jest zatrzymywany w pętli oczekującej na zakończenie zapisu (tak robi BASCOM a domyślam się że mówisz o BASCOMowej funkcji zapisującej a nie jakiejś własnej). Kolejne przerwania od Timera będą wywoływane tuż po poprzednim a więc program główny będzie praktycznie stał w miejscu. O zajeżdżaniu pamięci EEPROM...
Wiec tak: W ogóle wyrzuciłbym zmienna/flagę F. Nie jest potrzebna tutaj. W programie głównym zamiast sprawdzania F, sprawdzaj A, czyli warunek IF z przerwania przenieś do programu głównego, łącznie z zerowaniem A. W przerwaniu zwiększaj tylko A. Zamiast: If F = 1 Then Cls Locate 2 , 1 Lcd "przerwanie" Wait 1 Cls F = 0 Enable Int0 End If zrobilbym...
rozne serwa roznie moga dzialac. Nigdzie nie widzialem, zeby ktos okreslil dokladna czestotliwosc z jaka to ma byc robione.. zazwyczaj jest ok. 50Hz. Drobne roznice typu kilka Hz (czyli kilka ms wywolywanie przerwania) nie powinny miec zadnego wplywu na serwo. Problem moze sie zaczac jak bedziesz mial dlugie funkcje wywolywane przerwaniami... ale na...
Czy to jest przerwanie czy odwołanie się do podprogramu? Jeśli przerwanie- to jakie zdarzenie je wywołuje? Po co w przerwaniu- jeśli jest to przerwanie- blokujesz przerwanie od przepełnienia Timera? Przecież i tak jest zablokowane. Funkcja jest zdeklarowana?
Przyciski - DEBOUNCE Odliczanie - CONFIG TIMER i przerwania.
W celu eliminacji drgań styków należy użyć przerwania licznika, by odczytywać stan przycisku tylko raz na około 10 ms . Nie używamy funkcji Debounce i delay_ms ! Czy przycisk został naciśnięty sprawdzamy w zmiennej globalnej dostępnej w programie głównym.
Kolego Balu , Nie neguje rozwiązania krańcówek na przerwaniach ale co przemawia za tym by właśnie zrobić to na krańcówkach a nie zostawić tak jak jest? Program przecież zajmuje się tyko obsługą bramy, nie ma innych funkcji. Pewnie ilu użytkowników tego forum , tyle było by rozwiązań, mnie interesuje Twoje, dlaczego tak? Pozdrawiam Malcik
Najważniejsze zadania "czasu rzeczywistego" można wykonywać w obsłudze przerwania timera. Usługi można wpisać w podprogramy (z jez C: funkcje) i w pętli głównej wybierac które mają byc wykonywane. Komunikacje z uzytkownikiem mozna na ogół wpisać w pętli głównej, gdyz ona zwykle jest potrzebna do podania danych przed wykonianiem zadania, lub po czyli...
Akurat takich mam dostatek, jednak nie bardzo rozumiem, jak wykożystac sprzętową obsługę w bascomie W helpie jest opisana funkcja ENCODER(), zatem może warto najpierw te parę zdań przeczytać? W obsłudze przerwania sprawdzasz stan wejść i porównujesz z poprzednim stanem Nie zapominajmy o drganiu styków. Jeszcze nie spotkałem enkodera mechanicznego,...
Ileż się naszukałem w User Manualu co odpowiada za globalne włączenie przerwań w LPC2478. I okazało się że chyba nic. Po prostu to wymysł Keila ta funkcja. W User Manualu tego nie znajdziesz, tak samo jak szczegółów dotyczących przerwań, instrukcji assemblera itp. Dlaczego? Dlatego, że to są rzeczy specyficzne dla RDZENIA tego mikrokontrolera - rdznia...
Nigdy nie korzystałem z Getkbd, bo nie miałem takiej potrzeby, ale nie sądzę aby nie można było skorzystać z tej instrukcji w przerwaniu. W końcu nie są tu angażowane żadne timery, ani zaplanowane opóźnienia - po prostu zapis do portów i odczyt.
Witam, daj sobie spokój z takim dziwnym skracaniem kodu bo zwykle w takich przypadkach wyłożysz się na plecy i długo będziesz szukał błędu. Po pierwsze - tym GoSub-em chcesz skakać do procedury obsługi przerwania, która wprawdzie w Bascomie kończy się dla programisty podobnie jak np zakończenie podprogramu bo rozkazem "Return" - ale to nie to samo w...
Teraz spłodziłem coś na chacie w bascomie ;-) Może w końcu ta koncepcja ruszy.... uwzględnia drgania styków, działa na innej zasadzie... powinna byc odporna na wszelkiego rodzaju czasy między puszczeniami wciśnięciami itp... w przerwaniu co 10ms sprawdzamy stan przycisku zadziałanie przycisku następuje najwcześniej po 10 jego sprawdzeniach (po 100ms)...
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...).
To przerzuć się na C. Tam z każdej funkcji możesz wyskoczyć instrukcją return , a że ISRy to też funkcje, to zero problemu...
Ja miewałem takie problemy i zawsze problem wynikał z mojej winy. Ja dysponuję debugerem więc ze zlokalizowaniem przyczyny nie miałem większego problemu. Przyczyn może być dużo, niezainicjowane wskaźniki, niewłaściwe indeksy, rzutowania, braki sufiksów na stałych, niewłaściwe wektory przerwań itp itd. Kod który przedstawiłeś nie jest cały to tylko funkcja...
Moim zdaniem koncepcja powinna być taka: 1. Obsługa przetwornika analog-cyfra. Na początek dobrze żebyś umiał dobrze zmierzyć liczbę impulsów. Nie wiem dokładnie jaka jest specyfika Twojego sygnału, jaką amplitudę mają owe szumy, skąd się biorą i czy nie warto by ich po prostu potraktować filtrem dolnoprzepustowym, a jeśli mają odpowiednio niską amplitudę...
Zgodnie z obietnicą wstawię kod programu w języku Bascom. Wiem że jest w nim wiele błędów i moich złych nawyków choćby brak przerwań, funkcji, itp.
w przerwaniu nigdy nie wykonuje się funkcji wait itp. :!:
blokuje się bo funkcja spiin jest chyba blokująca Nie chyba a na pewno. Że też na to nie wpadłem :-( W C nie byłoby problemu sprawdzić jak działa taki "spiin", w Bascim, cóż :-( W HELP niewiele napisali ale po analizie przykładów można wywnioskować, że jest blokująca. Czeka na zadaną liczbę znaków i zapisuje do tablicy. Program będzie wisiał dopóki...
Witam czas późnienia wprowadzany przez instrukcje "wait" w Bascom-ie zależy ściśle od częstotliwości rezonatora kwarcowego. Jeśli chcesz dokładnie odmierzyć upływ czasu i wykonać jakąś instrukcję to proponuję zrobić to w funkcji przerwania dla Timer-a Pozdrawiam
Masz rację te procki nie posiadają różnych poziomów przerwań, jak to było w '51, ponieważ posiada on we swoich funkcjach wspomagania sprzętowe, czego '51 nie miała za wiele, dlatego myslę że w tych prockach zrezygnowali z tej funkcji układu przerwań.
Nie możesz "przekierować" pinu. Przypisanie przerwania zewnętrznego jest hardwareowe. Generalnie wszystko zależeć będzie od tego jak masz skonstruowaną główną funkcję. Jeżeli stosujesz w niej co rusz jakieś opóźnienia to będzie lipa, ale jeżeli cała główna funkcja wykonuje się szybko, bez zbędnych opóźnień to wtedy bez problemu w głównej pętli analizujesz...
Tak znalazłem chwilę, na naszego zwierzaka. Masz takie coś na wyświetlaczu? I czy dzieje się coś z godzinami? http://obrazki.elektroda.net/36_11962767... Przyczyna są chyba przerwania, albo sama funkcja. Jeszcze nad ty myślę. Poszperałem trochę na temat instrukcji GetRC5(), i jest ona czuła na zegar CPU., Więc może być, że coś jest źle ustawione...
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.
...Albo wyrzuciś print albo przerwanie od serial... Albo ... troszkę pokombinować :D Wystarczy że się wie jak działa proc i Bascom ;) W zasadzie wszystko opisał szymtro , więc skupię się na programiku $large $crystal = 11059200 '$regfile = "420.dat" 'DS89c420 $baud = 19200 On Serial Seriall ' odebrany znak Dim Uli As Byte ' odebrano znak...
$regfile = "attiny2313.dat" $crystal = 4000000 Config Pind.2 = Input Config Portd.0 = Output Config Portd.1 = Output Config Portd.3 = Output Set Portd.2 Przycisk Alias Pind.2 Dim Sekwencja As Byte Declare Sub Pierwsza Declare Sub Druga Declare Sub Trzecia Enable Interrupts Enable Int0 On Int0 Przycisk_przerwanie Do Loop End Przycisk_przerwanie:...
Wystarczy sprawdzić czy funkcja odbierająca kod rc5 wykorzystuje to przerwanie. z listingu wynika, że nie. Jednak odbieranie kodów najczęściej realizuje się w przerwaniu.
po pierwsze - z wideo to chyba tylko pilot bedzie potrzebny. Zrob tak - kup sobie scalony odbiornik podczerwieni TFMS na 36kHz pod wyjscie podlacz jakis uklad RC zeby usrednic impulsy i to pod przerzutnik typu D. do wyjscia przerzutnika podlacz tranzystor i przekaznik, lub triak sterowany optotriakiem MOC 3041. Inne rozwiazanie to zaprogramowac procesor...
kbw - nie bądź ryzykantem i zbuduj prototyp. Układ jest na tyle banalny że zrobisz go na jakiejkolwiek płytce uniwersalnej. Wyjdą ci wszystkie bzdety źle wpływające na działanie. Zawsze lepiej jest odkłócić przycisk kondensatorem niż bawić się w dziwne rozwiązania programowe. Tzn, programowo i tak musisz zrobić debounce ale "sprzętowo" odkłócony przycisk...
Tak samo jak wiedziałem jaka jest funkcja przerwań :P Już się zapoznaję z tematem. Ustawienia portu poprawione.
przerwanie funkcji xxx i natychmiastowe przejście do funkcji bbb. Jak sam piszesz przerwac mozesz tylko przerwaniem.
Z tego co widzę, to nadal masz funkcję miganie wrzuconą do pętli głównej... a ma być w funkcji, która obsługuje przerwanie timera. Druga sprawa - nie znam Bascoma, więc nie wiem na ile radzi on sobie z jednoczasowym dostępem do zmiennej z pętli głównej programu i przerwania. W C programista musi sam o to zadbać stosując volatile i sekcje krytyczne....
EEEEEEEj kolego - teraz to żeś zamieszał ;) .... sorki że się uśmiecham ale to nie z ironii tylko z pomysłowości ;) A co ma piernik do wiatraka czyli co ma jakieś INT2 do UART1 ???? no jak można tak odczytywać znaczenie opisu różnych funkcji nóg procesora To tylko oznacza, że ten pin może pełnić rolę albo zwykłego pinu I/O albo rolę RxD1 (czyli wejście...
Możesz sobie podłączyć przycisk pod zewnętrzne przerwanie i w programie przerwania na początku zrobić Disable INT0 , wtedy drgania stuku będą chyba wyeliminowane.
Aha zapomniałem napisać,funkcja encoder jest w przerwaniu bo gdyby byla w pętli , za wolno by sie wykonywała ze względu na odpowiedni czas odświeżania dla lcd...
Czy Asm to kolejny język? (Pytanie poza tematem) ASM - to pierwszy i podstawowy język niskiego rzędu kolego, wszystkie inne języki jak C czy Bascom - to języki wyższego rzędu a ich kod źródłowy jest ostatecznie zawsze kompilowany do asemblera ;) odnośnie Bascoma i Rc5 - to coś przesadzasz chyba, że nieczego nie znalazłeś w necie. Na samej elektrodzie...
tak jak piszesz reti używasz tylko do powrotów z przerwań, natomiast samo ret do powrotów z funkcji (podprogramów) aby dosyć jasno pisać kod należałoby się trzymać pewnej zasady, o którą czasem wiadomo ciężko ale... .... otóż po tei inicjalizacji robisz tzw pętlę główną (zamkniętą) - występuje ona w każdym języku wyższego poziomu jak Bascom lub C. czyli...
Bascom nie wykorzysuje przerwań do realizacji funkcji Print i Input. Ale problem będzie bo już samo włączenie UARTa w procesorach AVR włącza pin TXD do wysyłania danych i nie można stanu tego pinu zmieniac programowo. Nawet jeżeli nic sie nie wysyła. Odczywywać się nie da tym bardziej. Dodano po 1 I to niezależnie od tego czy wykożystasz BASCOma, AVR...
A jak to zrobić w bascom? To zazwyczaj robi się w ustawieniach fusebitów: -bit (6) szósty w Fuse Byte High ma byc (1) czyli nie zaprogramowany. A jeżeli chcesz to robic w "Run-time", to w Bascom wygląda to tak: [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 ' tu twoje ustawienie taktowania $initmicro 'tu twoja konfiguracja '................
Jeśli chciałbyś w C, to w temacie obok masz sterowaniem przyciskiem na Timerze w przerwaniu. http://www.elektroda.pl/rtvforum/viewtop...
Ogólnie chyba dobrze, ale to Waitms w przerwaniu wygląda na mój gust brzydko :) Zamień treść Twojego podprogramu obsługi przerwania na moją i ustaw timer0 prescale na 64 a bedziesz miał ten sam efekt, i kod wynikowy bedzie krótszy.
Płytka jest ok, bo działa na niej inna atmega8515 i wszystkie jej funkcje działają zupełnie normalnie. Bez timera działa. Zrobiłem obsługę pcf8583 i śmiga normalnie. Na 3 8515 jest to samo...
Ad1. Proponuje użyć funkcji locate y, x. Jeśli nie pomaga to za pomocą timera i przerwania wyczyść co jakiś czas lcd.
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. Dlaczego nie chcesz wykorzystać dodatkowego przerwania? Co stoi na przeszkodzie?
NP: IF A and B and C then coś tam się dzieje end if A B C to klawisze ( piny porty zmienne ) Pozdro! I to powinno dziać się w obsłudze przerwania, jeżeli ma to się rzeczywiście natychmiast stać. Klawiaturę podłącz tak, aby po wciśnięciu dowolnego klawisza generowała określony stan, linię z tym stanem podłącz do pinu zewnętrznego przerwania w kontrolerze,...
Witam, Włóż to w procedure obsługi przerwania od licznika, w srodku moze byc jeszcze jakas dodatkowa zmienna aby zwiekszyc zakres opóźnienia. W tym przypadku opóżnienie bedzie wynosiło czas pomiędzy przerwaniami razy dodatkowa zmienna. BASCOM to nie mój język, ale jak będzie CI bardzo zależało to postaram się napisać procedurke. Pozdrawiam. PS funkcja...
Dzięki, ale ja naprawdę odwiedziłem już dużo stron i forów poświęconych właśnie temu tematowi, stronę widziałem już wcześniej i nie wiem jak mogłaby mi pomóc skoro nie mogę wystartować z prostym tematem odczytu bitów wysłanych do mikrokontrolera. Nie wiem czy mam to zrobić w pętli na przerwaniu czy jest jakaś funkcja podobna np. do getrc5, no nie wiem,...
Funkcja Getrc5 działa z przerwaniem INT0 lub INT2. Z INT1 nie można jej skonfigurować. Ustaw w programie Timer0 i podłącz odbiornik na Pind.2 (dla ATtiny2313).
Mamy pomysły. Użyjesz sprzętu który ma oba interface sprzętowe. Zdeklarujesz sobie bufory do wysyłania/odbierania jako bajtowe o odpowiedniej pojemności. Do tego liczniki danych w buforze. Program ma działać samoczynnie - ma odebrać dane do bufora po rs i wysłać dane samoczynnie z bufora po i2c po wyzwoleniu oczywiście. I2C zaraz po pierwszym przerwaniu...
Pytana do układu: 1. P1 i P2 podciągnięte do plusa za pomocą rezystorów? Bo w programie nie masz "włączonego" wewnętrznego podciągnięcia? Jeden z twoich problemów to: Po naciśnięciu guzika zmniejszającego wartość spada ale dzieje się to bardzo powoli tak jak by układ się przycinał na czas odczytu temp. nie dziw się ponieważ w funkcji Odczyt_t podczas...
OK, już działa i zmienia czestotliwość. Pozostaje 1 pytanie. Jak ustawie przerwanie co 32kHz to układ wystawia przerwanie dla Atmega. Problem w tym ze wglada tak jakby ta czynność tak obciażała Atmega16, że nie ma on już czasu na normalne obsługiwanie programu. Dzięki w/w funkcji chciałbym uzyskać taki efekt gdzie będe mógł zliczać czas 100ms.
Witam Też się męczyłem jak zrobić sprzętowo bez żadnych przerwań generator około 36 kHz i 40 kHz. Polecam książkę Pana Piotra Góreckiego "Mikrokontrolery dla początkujących" (oczywiście o Bascomie). To naprawdę jest to jedno z nielicznych źródeł gdzie rzetelnie są rozpisane funkcje Timer1 po polsku. Właśnie testowałem układ Pana Góreckiego na At90S2313...
Wywal opcję Sub z funkcji Debounce , a potem zastanów się , dlaczego po takim zabiegu , program działa prawidłowo (nie "wiesza się") ;) Piotrek
Ano w tym ze to Bascom i nie masz pewnosci co ile zajmuje cykli. Do funkcji zegarka najlepiej wykorzystac tryb CTC timera. Wtedy masz pewnosc ze przerwania beda w rownych odstepach. Pozdrawiam Dexter
Disable Interrupts Call Gettime Enable Interrupts Jeżeli funkcja Gettime trwa zbyt długo to gubisz przerwania od timera. Jak zmieniłeś preskaler, to masz przerwania co 8ms i pewnie już się wyrabia. Co takiego robi w Bascom Gettime, że trzeba wyłączać przerwania?
Wszystkie, czyli 3. Kłopot stanowi jednak fakt, że Timer0 i Timer2 są 8 bitowe zatem w razie dłuższych czasów trzeba je "wydłużać" programowo zliczając odpowiednią ilość generowanych przez nie przerwań. 60s bezpośrednio się nimi nie odliczy tak jak 16 bitowym Timerem1.
Użyć przerwania. A dokładnie config serialin z funkcją Bytematch. Ewentualnie po każdym odebranym znaku zerowym Chr(0) dać Clear Serialin Wtedy bufor będzie zawsze ustawiony na początek.
Ostatnio też napisałem program do obsługi 2 7segmentowcyh wyświetlaczy i stos się rozwalił :P (w przerwaniu program przechodził do funkcji) W jaki sposób potrafisz poznać, że taki kod może być niebezpieczny dla stosu?
Kod wydaje się sprawować prawidłowo. Przecinek jest względny. Operacje na zmiennych z przecinkiem są męczące dla mikrokontrolera. Jesli nie jest to konieczne to należy ich unikać. Zauważ że sam DS nie wysyła Single tylko Integer. Każda zmienna z jednym miejscem po przecinku pomnożona przez dziesięć da liczbę całkowitą. Tutaj przecinek jest "wirtualny"...
Może jakaś myśl Ci podpowie (mi pomogła myśl o bardzo precyzyjnym zbudowaniu funkcji interrupt) http://www.elektroda.pl/rtvforum/topic20... Sorry ale basic jest mi bardzo daleki.
Patrz co robi: Ta funkcja jest napisana jako ogólna wykorzystująca tryb ADC Noise Reduction. W dodatku jest napisana dla konkretnego przypadku, kodu który zamiast odczytywać ADC w funkcji przerwania ADC, odczytuje go w ciele funkcji. W takim przypadku należy dodać opóźnienie (które jest pod koniec tej funkcji) bo inne przerwanie mogło wybudzić mikrokontroler,...
Zamierzam w swoim projekcie wykorzystać funkcję "config KBD" gdyż będę potrzebował użycia dużej liczby przycisków do obsługi at32. Proszę o podpowiedź czy praca takiej funkcji, a szczególnie "debounce" i "delay" w niej zawarte nie zatrzymają timerów pracujących cały czas w przerwaniu. Z góry dziękuję za pomoc.
Tak Bytematch to pożyteczna funkcja, tylko ona nie pomoże mi w moim problemie. To znaczy upewnieniem się, że odczytane dane trafią w odpowiednie miejsce. No chyba, że nie za bardzo rozumiem działanie przerwania. Taktowanie uC mam ustawione na 8 Mhz, a prędkość UART na 9600 bps. Po odebraniu znaku program powraca do przerwanego działania w pętli głównej...
Witaj. Ja też kiedyś zrobiłem podobny komputerek i pracuje nieźle, choć nie mia tak wielu funkcji. Wydaje mi się że powinieneś liczyć impulsy wtrysku w przerwaniu bo to zapewnia prawidłowe liczenie. Mój jest na Atmedze8. Ja impulsy z jednego wtrysku liczę w przerwaniu od INT0 a funkcja wygląda tak: [syntax=basic4gl][/syntax] Obsluga_int0: 'Przerwanie...
To zależy co robisz w przerwaniach. Wysyłanie znaku z klawiatury zajmuje ok. 4ms. W przerwaniach obsługuję odbiór i nadawanie znaków przez uart i odczyt z ADC- i nic się jakoś nie psuje. Być może- jeszcze. Ale co ile Twój Timer0 generuje przerwanie- nie wiadomo- bo nie podałeś częstotliwości. I ile czasu zajmuje obsługa przerwania- też nie wiadomo....
Witam, szukałem na forum, oraz na znanych mi zagranicznych i polskich stronach, ale nic nie znalazłem. Potrzebuję obsługi tzw. wielofunkcyjnej klawiatury, 4 klawisze. Wielofunkcyjna dlatego, że krótkie naciśnięcie ma wywołać np funkcje A1, A2 a długie powyżej 1 sekundy funkcję B1, B2. Potrzebuję jeszcze, aby to pracowało w przerwaniach. Kto z wami spotkał...
No trochę bardziej niż trochę :D Bo przerzuciłem prawie wszystko do przerwania. A co do odtwarzania nieznanych piosenek to jest to jak najbardziej możliwe. Wystarczy że będziesz wyszukiwał pliki na karcie. Na pewno jest jakaś funkcja do tego.
Zacznij od tego aby na przerwaniach od timera, np 1ms liczyć czas przez jaki przycisk jest naciśnięty, niech będzie to zmienna "czasGora". Jeśli zwolniony zerujesz czas. Gdy jest naciśnięty przez 2000ms, ustawiasz flagę "rozjasnianie". W przerwaniu gdy flaga ta jest ustawiona zwiększasz wypełnienie PWM do MAX. Pierwsza część zadania zrealizowana. Następnie...
...ale chyba niema tam funkcji zezwalającej na przerwania... a sei ? Mam kod serwa sterowanego z ADC na PWM Timer'a2, na Mega8 w Bascom'ie. Może podesłac?
przerwaniu bascom funkcja funkcja bascom bascom timer przerwaniu
oporność głośnik samsung tablet wyłączać schłodzić pokój
hyundai tucson sztuka lutowania
Instalacja komputera w rowerku stacjonarnym Jolt - krok po kroku Sterowanie zamka centralnego Peugeot Partner - podłączenie