A jeśli wolno spytać ,dlaczego chciałeś zrobić to w(na) przerwaniu :?: Pzdr. Piotrek Sz.
Co do bascomowego symulatora to działa on u mnie bardzo wolno, a Hardware simulator wyświetla jakieś bzdury Symulację można przyśpieszyć dodając $sim , ale działa to przez usunięcie opóźnień, więc może zmienić zachowanie. W każdym razie polecam przyjrzeć się co się dzieje w pamięci RAM. [url=https://avrhelp.mcselec.com/index.h...
Bo obsługa przerwania też zajmuje trochę czasu- ileś taktów zegara. Bascom jest "bezpieczny" dla użytkownika i odkłada na stos wszystko- a nie tylko to co potrzebne. A potem zdejmuje ze stosu. Ale za to działa wolno. Spróbuj : on timer0 etykieta przerwania nosave. Ale to będzie szybsze i mniej bezpieczne. Albo ASM.
Z tą dowlnością w używaniu rejestrów byłbym bardzo ostrożny. Nieodpowiednia zmiana - program się wysypie. Nie wolno używać w trybie zapisu bez wcześniejszego zapamiętania: Y ( soft stack pointer ), R4:R5 ( frame stack pointer ), R6 ( status register ), R8:R9 ( data pointer ), R23 ( translate register ), R12:R13:R14:R15 ( fp calculator ). W sumie można...
Witam! Mam następujący problem: Kiedy włączam obsługę przerwania z portu szeregowego, procesor strasznie zwalnia, nie wyrabiam się w czasie z programem... Program jest w Bascomie, kontroler to Atmega32. Wszystko zwalnia tragicznie, nawet jeśli w podprogramie przerwania napiszę od razu powrót: Serial_int: Return Sprawdziłem też: Serial_int: Toggle PORTB.3...
Witam jestem tu nowy aczkolwiek zaawansowany w bascomie AVR Musisz ustawić prescaler i wpisać wartość counter0 lub timer0 żeby przerwanie przychodziło co określony czas. Osobiście się z ty nie zgadzam bo jeśli INT0 to nie timer tylko podanie standardowo zera na jedno z wejść w 8515 jest to PD2 lub INT1 PD3. Ja osobiście dałbym waita pod koniec przerwania...
Witam Juz sobie z tym dzisiaj poradzilem, ale dzieki ;-) Swoja droga dziala mi to troche za wolno (wiadomo, pierwsza ramka rc5 tracona jest na przerwanie). Zastanawiam sie, czy moze ktos kiedys popelnil wstawke assemblerowa obslugujaca rc5 z przerwania? Zastanawim sie jeszcze nad kodem standardu sony, jakies doswiadczenia?
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...
Obsługa LCD trwa długo , w tym czasie prawdopodobnie często Bascom blokuje przerwania . i dlatego są błedy. I jeszcze jedno - liczysz przerwania co 2ms a ile trwa proces wyświetlania na LCD? Możliwe że czasem nie zliczysz wszystkiego w ten sposób co piszesz. Spróbuj albo wywalić obsługę LCD i zrób wyświetlanie np na diodzie (jak jest równa iluś tam...
Owszem w konfiguracji Timera głupi błąd, ale ku mojemu zdziwieniu przerwanie działało. W liczeniu czasu chyba się koledze przecinek przestawił. Przerwanie w teorii kompilatora bascom trwa ok 0,16ms. W praktyce: po dodaniu w przerwaniu " toggle portb.0" częstotliwość generowanego przebiegu prostokątnego to 3,289kHz więc przerwanie wykonuje się z częstotliwością...
Jeśli chodzi o resterty, to czy mogą one być spowodowane dużą ilością zmiennych zadeklarowanych, oraz to że wykożystuje przerwanie ( 42 zmienne i przerwanie na przepełnieniu TIMER1 co 0,2sek). Czytałem gdzieś że zmienne powinny być deklarowane w odpowiedniej kolejności. W symulatorze działa ok ( i tam się niezawiesza), chociaż działa bardzo wolno. Gdyby...
Rozwiązałem w międzyczasie ale dzięki bardzo. Przyjrzę się Twojemu rozwiązaniu. Ja nie mam ograniczenia liczby bajtów. Zapisuję je do tablicy a tablice wysyłam na LCD po Stopie. Adres mam ustawiany sprzętowo z portu mikrokontrolera. Obsługuję tez General Call. Do czasu wyświetlenia blokuje przerwanie od TWI aby niczego nie stracić - nie robiłem bufora...
Przerwanie masz teraz co 262ms. A sprawdź jak działa samo wyświetlanie: [syntax=basic4gl]'...konfiguracja wstępna Do Locate 1 , 1 Lcd "ABCDEFGHIJKLMNOP" Locate 2 , 1 Lcd "ABCDEFGHIJKLMNOP" Locate 1 , 1 Lcd "0123456789ABCDEF" Locate 2 , 1 Lcd "0123456789ABCDEF" Loop End[/syntax] Jeśli tak będzie za wolno to daj znać.
a szybko i wolno to znaczy z jaka częstotliwością? Może zamiast polecenia bitwait zrób: do loop until pinb.1 = 1 cls nie powinien tu być problemem. A najlepiej sygnał taktujący zliczaniem podaj na pin INT0 lub INT1 i ustaw przerwanie żeby reagowało na zbocze. Wtedy inkrementacje zrobisz w przerwaniu a w pętli głównej tylko wyświetlisz wynik. Na marginesie...
Właśnie sprawdziłem poprawny zapis użycia funkcji LOAD i nie ma tam znaku "=" tylko "," W każdym razie dzięki za info... bo mi coś ta funkcja nie działała do końca (chyba). A co do CKOPT to nie znalazłem tego :( Na screenie, którego załączyłem są wszystkie fusebity do ustawienia.. nie widze tam CKOPT-a (BASCOM 1.11.9.0) widze na screenach, że kolesie...
W obsłudze przerwania umieścić należy kilka warunków, które będą sprawdzały wartość zmiennej i za pomocą polecenia Goto XXX przeskakiwały do kolejnych pętli. Tak NIE WOLNO ROBIĆ, powoduje to przepełnienie stosu (bo nigdy nie wychodzi z przerwania). Poprawnie można to zrobić tak: Odpowiednie pętle sprawdzają flagi (zmienne) w przypadku udpowiedniego...
Witam. To zależy z jaką częstotliwością przychodzą impulsy. Jeżeli przychodzą dośc wolno to można impulsy podać na wejście przerwania a w obsłudze zwiększać wartość jakiejś tam zmiennej o jeden. Jeśli są one dość szybkie to można np. skonfigurować licznik żeby zliczał je i co 10 dawał przrwanie, a w przerwaniu zwiększać zmienna o 10. W tej metodzie...
Tak jak innemu koledze napisałem. Nie wolno mieszać sprzętowej obsługi uart z programową. Polecenie print najpierw sprawdza scon pod względem czy nie wysyłany akurat jest bajt, nsatepnie drukuje dane do sbuf, ustawia flagę wysyłania i czeka aż wyśle. Dlatego masz problem. Albo wyrzuciś print albo przerwanie od serial. W takim prostym przypadku proponuje...
Piotrek1970 - całkowicie się z tobą zgadzam jeśli chodzi o wartość developerską Arduino. Ja miałem na myśli, że w miarę proste konstrukcje, przy odrobinie doświadczenia, można a nawet warto zrobić "od strzału", z dedykowanymi rozwiązaniami. Początkującym jak najbardziej polecam rozpocząć z gotowym hardware. Hanslik - jeśli wolno mi zaproponować, wejdź...
Zapewne da się to zrobić inaczej. Da się tak jak w C przy czym w Bascomie wystarcza tylko poprawne wykorzystanie przerwań i obsługa "manualna" kilku rejestrów co akurat dla większości bascomowców jest problematyczne, bo język sam z siebie przyzwyczaja do rozwiązań podanych na tacy. A skoro już trzeba robić coś ręcznie, żonglować bitami w rejestrach,...
Witam. Temat ogólnie znany ale próbowałem pisać różne procedury, przeszukiwałem Elektrodę i niestety nie znalazłem dobrej obsługi enkodera bez używania systemu przerwań (nie pozwala mi na to konstrukcja programu, gdyż innym przerwaniem obsługuję RS'a dla którego bardzo ważne są timingi). Poniżej zamieszczam najbardziej optymalną procedurę (z sieci),...
Witam W prockach dopiero raczkuje. Robię obrotomierz do samochodu (choć można zastosować to wszedzie). Oparłem to na atmega16 bo taki akurat teraz mam, ale docelowo ma byc na 2312.Na razie jest wszystko w fazie testowej na biurku, ale założenia są takie: na kole zamachowym umieszczam siakiś czujnik, podaje to na układ formowania impulsu, z którego będę...
Ostatnie czasy na Elce coraz więcej nie działających procesorów/Programatorów/za szybko wykonywujących się opóźnień... W związku z tym może warto by było zrobić coś w stylu "Kompedium" co zrobić, jeśli nie działa...Jeśli macie jakieś z życia przykłady piszcie, będę uzupełniał:) Nie działa procesor: 1) sprawdź czy jest zasilanie na WSZYSTKICH Nóżkach...
Hej! I jest tak jak mówisz - Skubik. :P Kwarc jest przy samym układzie, przylutowany bezpośrednio. Takich strategicznych rzeczy staram się nie łączyć kabelkami...:) Myślałem że coś nie tak może być z ATmega8, że może się zawiesza, może resetuje, może jakieś zakłócenia pracy kwarcu mikrokontrolera ( pracuje na 16MHz)? Ale włączyłem w fuse bits CKOPT...
To w zasadzie "nasz"- wspólny błąd. Aref powinien iść do + lub być na wewn. napięciu odniesienia. A nie "wisieć" w powietrzu. Jak _delay jest zbyt małe to silnik gubi kroki- normalne. Silnik nie może dostawać impulsów zbyt szybko. To teraz zacznę Cię straszyć: Nie pomogę Ci w C- ale podam czego należy unikać w każdym języku. używanie _dalay w C lub...
Wybaczcie początkującemu, bo pytam zapewne o jakąś strasznie trywialną sprawę, ale póki co nie mogę sobie z nią poradzić, więc szukam pomocy. Piszę sobie cośtam. Cośtam ma multipleksowo obsługiwany wyświetlacz LED, multipleksowanie jest załatwiane podprogramem uruchamianym z przerwania od T0. Tyle napisałem i tu wszystko działa pięknie. Dalej, przed...
Pisząc posta masz możliwość i powinieneś zapakować kod w "Listing kodu: SYNTAX wybierz" i tam wybrać "Basic Bascom" Zupełnie inaczej to wygląda i da się czytać. Napisz lepiej w komentarzach do kodu co Ty myślisz że to robi bo ja to widze tak: Co 500ms czyścisz wyświetlacz i wyświetlasz zmienną Sek. Zmienna zmieni se dopiero za minute i dwie sekundy...
Kwarc do celowo zakładam że będzie 16MHz ale póki co nie chce mi działać na 16 MHz coś jest w Fusebitach co przestawiam na Ext. High Crystal Rezonator to się wysypuje trzeba wracać do 8MHz . Co do próbkowania połówki sygnału sinusa to chciałem wykorzystać przerwania od ADC bo jak kolega napisał przerwania od Timera co 1ms jest to za wolno tym bardziej...
Zamieszczam kod Proszę tego nie zrozumieć jako narzekanie a jako uwagi: 1. Pomiar temperatury. Funkcja jest, nie ukrywajmy tragiczna i cud że działa. Nie wolno tak pisać. Odczytujesz tylko 2 z 9 bajtów odpowiedzi czujnika. Nie sprawdzasz w ogóle: - czy czujnik w ogóle reaguje i odpowiada na komendę 1wreset - czy suma kontrolna się zgadza Kiedy czujnik...
Witam Mam taki problem. Program wysyla plik binarny 57kB z PC do mega a on do zewnetrznej pamieci(testuje na mega32 i mega128). Wyglada ze AVR nie jest w stanie wyrobic z transmisja, jakby za wolno wewnetrznie dzialal i dane sie nadpisuja zanim obsluzy przerwanie. Na PC program pisze w vb6 oto fragment kodu Open nazwa For Binary Access Read As #2 For...
Szukałem odpowiedzi na to pytanie, lecz nie znalazłem, wiec postanowiłem rozpocząć nowy temat. Otóż mam problem z liczeniem kanałów DMX, a dokładnie z timerem0 którego używam w tym celu. Mikrokontroler to jak w temacie ATmega8, częstotliwość taktowania 8 MHz, ustawienia sprzętowego UART 250 000 baud. Według specyfikacji DMX najpewniej rozpoznać nowy...
Pętla ma tą drobną wadę, że jeśli w nią wrzucisz jakieś funkcje warunkowe to nigdy nie wiesz, co jaki czas się dokładnie obróci :) takie tam. Przy jednym warunku to jeszcze nic, ale już przy n rozgałęzieniach, policzenie najgorszego możliwego czasu obrócenia pętli staje się utrudnione. Bo jak warunek nie spełniony to sprawa krótka skok, a jak spełniony...
Laminatorem do produkcji płytek posługuję się już od lat. Cały czas tym samym, kupionym niegdyś w Tesco modelem z wałkami grzanymi od środka i plastikową przekładnią, która jednak okazała się być bardzo trwała, w przeciwieństwie do obudowy laminatora, która się z czasem mocno powichrowała, dodatkowo sterowanie dorobione kiedyś okazało się być też kiepskim...
Witam chcę zrobić lampke rgb sterowaną na pilota rc5, jednak napotykam pewien problem: kod programu $regfile = "m16def.dat" $crystal = 8000000 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Down , Prescale = 1 Pwm1a = 0 Pwm1b...
O jaką różnicę koledze chodzi?. O fakt, że dla zwykłych (blokujących inne przerwania) przerwań wykonanie instrukcji w kodzie przerwania, a wykonanie ich w pętli głównej na podstawie ustawionej flagi to praktycznie to samo?. Mniej więcej właśnie o to. Tak czy siak mamy niepodzielny fragment kodu blokujący inne "procesy". Co innego gdyby to rozbić na...
Programator sobie załatwię a skąd można ściągnąć pełną wersje BASCOMA Trzeba kupić - bezpłatna jest tylko wersja demo. Ja mimo wszystko polecałbym C - kompilator darmowy (a nawet open source), a ten język jest podstawą jeśli chodzi o programowanie. Jego składnia jest typowa i wzorują się na niej różne języki, nawet skryptowe. Dzięki temu będzie Ci...
Niestety ale przesiadka z Arduino na jakikolwiek mikrokontroler bedzie bolesna... a STM32 czy jakikolwiek ARM jeszcze bardziej bolesna (to sa bardzo rozbudowane procesory o duzej licznie rejestrow itd.). Niestety rezygnujac z Arduino trzeba dosc mocno poznac mikrokontroler... Wiesz mi bardziej chodzi o przejscie z Arduino na C/C++ i ARMy... ja najpierw...
No to coś napisałem na AVRStudio 4.05.0.181 (na kolanie) :) . Co prawda na ATmega8 , ale przeportowanie to pestka(niektóre wektory przerwań do skasowania/zmiany nazwy i "2313def.inc" zamiast "m8def.inc" , prędkość kwarcu Xtal też do poprawki...), raczej tu chyba nie ma rozkazów niezaimplementowanych w AT90S2313 . ;included in next file - line ".device...
Zrobiłem taki programik: 'Program do sterowania małych silników krokowych za pomocą ATMega8 i układu L6219 lub LB1845 'sterowanie ćwierćrokowe, zasilanie 30V 'set i reset zastosowałem w celach poglądowych- można- a nawet należy zastąpić to np.PortB=&B00001100 itp. $regfile "m8def.dat" $crystal = 4915200 Config Lcd = 16 * 2 Config Lcdpin =...
witam ponownie. Uzywalem polecenie config I2CDELAY =0. nic to nie dalo, napisalem tez program (bez przerwania timera), ktory bedzie przemiatał wiersze od dołu do góry. Niby przemiata, ale niestety robi dalej to wolno, tzn widać że diody migają...moze to wina rezonatora? wpięty jest 8MHz... moze ktos napisze jak zrobic to z timerem $regfile = "m8def.dat"...
No i następnej sprawy nie rozumiem. Dlaczego ten licznik liczy do 99999 a nie "po bożemu" do 65535? Przynajmniej tak się wyświetla. I z 1000 przy decr "zmniejsza" się na 9999? 'Program do sterowania małych silników krokowych za pomocą ATMega8 i układu L6219 lub LB1845 'sterowanie ćwierćrokowe, zasilanie 30V 'set i reset zastosowałem w celach poglądowych-...
Kod jest dość spory więc wkleję najważniejsze fragmenty odpowiedzialne za RC5 ,SD i 1Wire. RC5 '***************************************... '****************************PROCEDURA ODCZYTU RC5**************************** '***************************************... Readir: Disable...
http://obrazki.elektroda.net/61_12840708... Przedstawiam mój sterownik awaryjnego zasilania mieszkania, pieca CO i pompy od solarów. Urządzenie w takiej, a nie innej formie powstało w sumie przez przypadek. Początkowo miało to być tylko podtrzymanie pompy solarów gdyby zabrakło napięcia w sieci, a temperatura na dworze była by zbyt wysoka...
https://obrazki.elektroda.pl/8025280500_... Witam! Przedstawiam wam w pełni automatyczną domową windę osobową! Jest to mój największy, najbardziej skomplikowany, i najdroższy projekt którym chwaliłem się jakiś czas temu w dziale „DiY w budowie”. (https://www.elektroda.pl/rtvforum/viewt... Na początku...
Ostatnio mecze się z takim samym problemem. Podczas odczytu z DS przerwanie właziło i rozwalało cala transmisje,czemu nie wyłączysz przerwania na czas pomiaru? Z drugiej strony jak wylaczysz -bedzie krotkie migniecie wyswietlacza,aby temu zapobiec trzeba inteligentnie manipulowac zatrzaskiem... Nie podałeś schematu ,ale domyślam się ze nie jest możliwe...
Teraz to już nie wiem co Ty chcesz stworzyć , gotowy projekt na LM7001 http://sq1ftb.prothost.pl/articles.php?a... z którego chyba korzystasz , rozumiem że chcesz w inny sposób wprowadzać zmiany częstotliwości ale nie możesz do tego używać portu C na którym masz LCD , Port D.2 , D3 to enkoder wykorzystujący przerwanie . Masz gotowy projekt wystarczy...
I udało się! Tak wygląda gotowy działający program do wyświetlania informacji o karcie sd na lcd: At128- [syntax=basic4gl]'---PROCESOR-----------... $regfile = "m128def.dat" $crystal = 16000000 $hwstack = 128 $swstack = 64 $framesize = 64 $baud = 9600 Wait 1 '---WYŚWIETLACZ-------------------------...
przerwanie bascom bascom przerwanie xmega bascom przerwanie
yamaha filtr paliwo schemat elektryczny forda mondeo odzyskanie certyfikatów
odstraszacz ultradźwiękowy wymienić wirnik wiertarki
Siemens EQ300 – komunikat „brak wody” i przelewanie do tacki, zawór ceramiczny, przepływomierz Growatt SPF 6000 Off-grid – dobór paneli, różnice falowników niskonapięciowych i wysokonapięciowych