Pisząc w C tego nie wiesz i wiedzieć nie będziesz (chyba, że zajrzysz w wygenerowany przez kompilator kod assemblera - co swoją drogą jest czasami przydatne). Nie wiem jak daleko działa REGISTER, ale prawdopodobnie kompilator patrzy bardziej na to jak na mocną sugestię niż 100% wymuszenie, bo co by zrobił gdybyś zrobił 20 zmiennych int jako REGISTER?...
'Rozpoznanie czy są to dane z terminala GSM Pomoc_i(3) = Pomoc_i(2) ' super wydajność , od razu for dla Pomoc_i(3) Goto Abc: ' zobacz komendę 'exit' End If siada ci stos i dlatego procesor idzie w krzaki i zaczyna śmiecić pewnie to podprocedura innej podprocedury wywołanej przez jakieś if i jeszcze dużo danych odkładanych...
1. z tego co piszesz to przerwanie o najwyższym piriorytecie będzie występowało z częstotliwością 4kHz. Zakładając że będziesz miał zegar 8MHz to na obsługe przerwania (zapisanie 8 bajtów) i obsługe innych przerwań będziesz miał: 8MHz/4kHz = 2000 cykli zegarowych co w przypadku procesorów typu RISC daje jakieś 1500 instrukcji. A to jest całkiem sporo....
Jeżeli w programie występuje nadpisywanie RAMu to można w dowolnym jego miejscu sprawdzać SP? Kiedy SP może się przepełnić, np w czasie przerwań albo wywoływania funkcji zwłaszcza gdy operuje się na większych buforach/ stringach? SP możesz odczytać w dowolnym miejscu, to przecież jeden z dostępnych rejestrów MCU, ale... średnio to pomaga. Owszem, zauważysz,...
tak sie sklada, ze dla 16b PICow stos w domyslnej lokalizacji po przepelnieniu wylozy program (nastapi sprzetowa pulapka od przepelnienia stosu, ktora skonczy sie resetem, chyba ze programista zadecydowal inaczej), natomiast w MSP430 domyslnie umieszczony stos, przed wywaleniem programu zmasakruje jeszcze wszystkie zmienne w ramie Domyśle ustawienia...
Mój ulubiony "kwiatek" :) Gosub Wybor Wybor: Potem mamy masę gosub'ów bez poprawnego wyjścia. Generalnie program źle napisany. Piszemy programy tak by subrtyny mogły się kończyć i nie zagnieżdżamy nadmiernie podprogramów. To nie watchdog tylko przepełnienie stosu. Chociaż i watchdog może w kilku przypadkach resetować, zwłaszcza tam gdzie jest WAIT...
A w twoim programie tych sub wywoływanych z innych sub jest sporo. W programie są trzy suby: "Program1", "Program2" i "Przejscia_efektow". W żadnym z nich nie jest wywoływany inny. Wszystkie kończą się Returnem. O jakim przepełnieniu stosu piszesz?
Zacznijmy od pytań: 1. Które bity według Ciebie ustawiłeś w TCCR2B : Autor tematu pisał, że stosuje gotową bibliotekę do obsługi jakiegoś panelu dotykowego. Z tego, co zrozumiałem, to przerwanie to znajduje się we "wnętrzu" tej biblioteki. Takie efekty są oczywiście normalne, gdy ktoś mało świadomy tego, co się dzieje w jego programie stosuje gotowe...
W trakcie wykonywania tego podprogramu zostało zgłoszone przerwanie zewnętrzne na nóżce int1 atmega328p. Czy atmega328p przerwie wykonywanie podprogramu nóżki int0 Zależy jak zadeklarujesz przerwanie, czy ISR bez atrybutu lub z atrybutem ISR_BLOCK albo jako SIGNAL czy ISR z atrybutem ISR_NOBLOCK lub jako INTERRUPT. Jeśli przerwanie w przerwaniu jest...
Możesz zagłębiać się więcej razy, tylko tak aby poźniej wracać. Gdy masz więcej zagniezdzeń to zwiększasz RAM dla stosu.
Dragon to jedno, warto zainwestować. Wykrywanie przepełnienia pamięci to trudny problem. Generalnie, jeśli nie korzystasz z alokacji dynamicznej, to interesuje się wskaźnik stosu (SP). Jeśli schodzi za nisko, to świadczy to o braku pamięci.
Podczas debugowania atmegi88pa natknąłem się na dziwny problem, program działa normalnie i nagle wraca do pierwszej linii w funkcji main() To chyba jednak się resetuje. Ustaw sobie breakpointa w kodzie przed maim, będziesz wiedział czy procek przez niego przechodzi. Z jaką optymalizacją debugujesz? Przejdź na O1 i sprawdź czy problem się powtarza....
A moje pytanie, czy przy takim algorytmie, pomimo tego że nie wykorzystuje przerwań a na pinie mam częstotliwość którą chciałem procesor będzie miał jeszcze "czas" na po prostu realizację programu ? Czy tak skonfigurowany timer wykorzystuje procesor ? Widzę że timery to twoja słaba strona, więc napiszę ci troche ... Wszystkie timery w AVR mają możliwośc...
Charakterystyczną właściwością bufora cyklicznego (kolejki FIFO) jest to, że wskaźniki początku i końca (odczytu i zapełniania) przemieszczają się niezależnie - każdy w swoim tempie. Stąd w Twoim programie indeksy powinny być niezależnymi zmiennymi globalnymi/statycznymi. Przypisanie liczniku=usartbufferlicznik zakłóciłoby normalny tryb pracy bufora...
(at)rewolt90 Nie jest dokładnie tak jak piszesz. AVR gcc domyślnie umieszcza literały znakowe ("abcd...") w pamięci RAM. W twoim oryginalnym programie te literały były dodatkowo kopiowane na stos przy wywołaniu funkcji main co powodowało przepełnienie stosu. Dodanie static nie wymusza tego, że te zmienne wylądują w pamięci programu. Uniknąłeś w ten...
W funkcji Convert_Int_To_LCD umieszczasz łańcuch tekstowy po konwersji w temp, któy ma długość tylko 1 bajta - to wystarczy jedynie na NUL, więc na pewno masz przepełnienie bufora i nadpisanie sąsiednich zmiennych/stosu. Sprawdź w innych lokacjach, czy nie masz podobnych problemów. Kolejna sprawa - czy odczyt/zapis EEPROM dokonujesz z funkcji obsługi...
Najczęściej jest to wektor przerwania bez kodu - nastąpi skok pod adres 0 (programowy reset). Może też być problem z przepełnieniem stosu/nadpisywaniem zmiennych. Za mało informacji o objawach i ogólnym zarysie programu lub części, która jest wadliwa (o ile to kod). Jeśli masz tak dużo kodu, to powinieneś umieć sam znajdywać takie problemy (problemy...
Wygląda na przepełnienie stosu. Na początek wywal wszystkie stringi do FLASH, np. [syntax=c]__flash const char text[81]="ABCDEFGHIJKLMNOPRSTW" "NIE TA LINIA :( " " " "Maciek mowi: ";//PRSTUVWXYZabcdefghijklmnoprstuvwxyz1... [];'\\,./!(at)#$%^&*()`";[/syntax] i [syntax=c]snprintf_P(text, 21,PSTR( "%s%04d%02d%02d %02d:%02d:%02d "), dow, (uint16_t)time.year...
Nie tyle musi być zadeklarowana jako reentrant, bo takiej deklaracji nie ma:) co musi być tak napisana, aby była reentrant. Co do zmiennych statycznych to mogą one być wykorzystywane - w końcu taka jest idea zmiennych statycznych, żeby były dzielone przez wszystkie instancje/wywołania funkcji. Co do innych zmiennych to dopóki się używa zmiennych lokalnych...
http://obrazki.elektroda.net/42_12648689... Na temat projektu avr-cdc z [url=http://www.recursion.jp/avrcdc/]htt... napisano już wiele i jeszcze więcej - nie będę się rozpisywał o samej idei - można zajrzeć chociażby do wątku [url=http://www.elektroda.pl/rtvforum/to... prosta niezawodna przejściówka...
Auto napisał: satanistik napisał: Program w przerwaniu od timera mierzy wartość z ADC Rozwiązanie dość kiepskie. Wchodzi w przerwanie, wyzwala pomiar, czeka na wynik W PRZERWANIU!, Nie twierdze że to jest rewelacja, ale samo w sobie nie powinno prowadzić do błędu w stylu "brak kolejnych pomiarów ADC". "Oczywista oczywistość". Tyle, że bez kodów źródłowych...
Witam. Po napisaniu poniższego kodu wyskakuje komunikat Reset nieznany Dalsza część kodu bez zmian. Eliminacja drgań przycisków jest przez opóźnienie: 60ms. Program mi się resetuje nadal nie znam przyczyny. Może wystąpić reset od przepełnienia stosu? ISR_OUTTP_COMP2_DISABLED //BLOKUJE PRZERWANIA OD CTC [syntax=c] int main (void) { WDT_OFF(); ADCinit();...
Takie pytanie mam: projektuję właśnie dość złożone urządzenie w oparciu o AVR, do celów czysto uruchomieniowych wyposażam je w złącze do wyświetlacza LCD. Docelowo tego wyświetlacza ma tam jednak nie być, nie ma na niego zresztą nawet miejsca w docelowej obudowie. Moje pytanie: czy pozostawione w programie instrukcje obsługi wyświetlania, w sytuacji...
Hejka ponownie. Przeanalizowałem trochę ten Twój program w wolnej chwili i faktycznie wychodzi na to, że masz zapętlone wywoływanie instrukcji GOSUB-RETURN Także zwiększanie parametrów stosu nic Ci nie pomoże bo wcześniej czy później i tak nastąpi przepełnienie. Sęk tkwi w podprogramie DODAWANIE. Jest on wywołany na samym początku (przed instrukcją...
Problem jeśli podam zasilanie na już połącozny razem konweret i Atmegę. Tu może być też sprawa programowa. Masz tam połączony konwerter do wejścia RxD i po prostu jakiś stan przejściowy (niski konkretnie) powoduje że ATMEGA odbiera to jako znaki. Jeśli od strony programu nie masz tego obsłużonego to możliwe że program może się wywalić na jakimś przepełnieniu...
Program nie tyle idzie w krzaki, ale po prostu warunek nie ma szans się spełnić. Bez całości kodu trudno coś powiedzieć, bo z tych fragmentów wynika, że warunek (ms==1) może być spełniony raz na ok. 4 miliony sekund (zmienna miliSekundy nie jest nigdy zerowana, a tyle czasu zajmie przepełnienie zmiennej typu long int). Ogólnie: Do sterowania aktywnością...
Jednej rzeczy natomiast nie rozumiem. Mam zegarek DCF produkcji Chińskiej, który dostałem w prezencie kilkanaście lat temu. Jego zdolność do odbierania DCF wydaje się być znacznie lepsza. Ma antenkę ferrytową podobnych rozmiarów jak ta w zestawie a działa dużo lepiej. Kiedyś kupiłem odbiornik DCF do ustawiania czasu w komputerze i też odbierał dużo...
Może trzeba było choć nieco wspomnieć o dostępności Arduino Core dla tych MCU? Prawdę mówiąc nawet nie wiedziałem, że już na te MCU są porty. To dobrze. Ciekawi mnie, czy na tym MCU VMT jest we FLASH, czy nadal jest kopiowane do SRAM, co jest zmorą C++ na AVR. Jestem za. Ostatnio w dziale dużo artykułów dla zaawansowanych - jakby zapomniano, że najpierw...
Witam forumowiczów, Sytuacja wygląda tak, że z jednostki nadrzędnej słane są ramki danych, Po każdej ramce jest szczelina czasowa tak aby nasza ATmega zdążyła odpowiedzieć, Mamy Atmega16 kwarc 16MHz i transmisje 57600 (w przybliżeniu), Gadamy przez RS485 tak, że między ramkami jeszcze przełączam linie bufora, Steruje równocześnie buforem wejścia i wyjścia...
witam. buduje systemy na rs485. niestety zadna z komend bascomowych nie była mi przydatna. używam przerwania do odbioru i sam obsługuje własny bufor z ustawieniem flagi informujacej iz właśnie w buforze jest odebrany "ważny" pakunek danych '------------------------ Rx_serwer: Rxdata = Udr1 Rem zabezpieczenie przed przepełnieniem bufora If Rx_count...
No więc co w takim razie zrobić aby tak się nie działo? jest jakiś sposób na to? moją główną funkcją nie jest main. Main jest tylko ustawianiem wszystkiego. Główna funkcja to READY. To jak zrobić aby ten stos się opróżniał lub aby miał jakieś zabezpieczenie przed przepełnieniem? :) Dodano po 14 IMHO nie doszukiwałbym się tutaj problemu ze stosem. Stawiałbym...
Kiedyś na tym forum na pytanie dla czego spóźnia mi się sekundnik z timera otrzymałem odpowiedź że w bascomie każdorazowe użycie "wait" używa jednego timera, a co za tym idzie blokuje inne.Ktoś mi wtedy polecił zmianę instrukcji "wait" na pętlę zakańczaną przepełnieniem zmiennej z przerwania timera którego używam.Tak więc z własnego doświadczenia znam...
Zakładając, że problem jest z przepełnieniem stosu - jak temu przeciwdziałać? Czy tylko i wyłącznie "przemyslana" konstrukcja programu? Radzio
Czego nie rozumiesz? 0. Ładujesz wartość do licznika i czekasz na przepełnienie. 1. Przepełnienie generuje sygnał przerwania. 2. CPU musi dokończyć instrukcję, odłożyć na stos adres do powrotu i załadować nową wartość do PC. W tym czasie licznik T0 nadal liczy i czas mija. 3. Skok pod adres wektora przerwania i wykonanie prologu funkcji obsługi. Czas...
Szum na wejściach raczej nie jest problemem, każde wejście ma wbudowany przerzutnik schmitta. Oprócz tego w trakcie zliczania wykonywane jest całe mnóstwo działań matematycznych, Gdzie są te obliczenia wykonywane? Jeśli w przerwaniu to być może trwa za długo. a chwilowe wyniki obliczeń i pomiarów na bieżąco przesyłane są po RS232 (9600 B/s) do komputera...
Nie wnikałem w kod, bo Bascomowcem jestem, ale sprawdź go pod kątem poprawności wychodzenia z podprogramów i procedur. Może masz gdzieś nawarstwianie się stosu i następuje jego przepełnienie po pewnym czasie?
Poza tym odnoszę wrażenie że pogubiłeś RET czyli powrót w swoich podprogramach. Pamiętaj, że wywołanie CALL zazwyczaj kończy się RET w podprogramie. Z kolei w kilku innych miejscach zamiast CALL chyba powinieneś mieć RJMP. U Ciebie w tym programie na 99% następuje przepełnienie stosu.
Wygląda na przepełnienie stosu. Kilka sugestii jak to wykryć: http://www.avrfreaks.net/index.php?name=...
Klasa TwoWire (której obiektem jest Wire) też używa przerwań. Po wejściu do ISR przerwania są blokowane. Jeżeli chcesz, aby dane ISR nie blokowało innych przerwań można użyć ISR_NOBLOCK:[syntax=c]ISR(TIMER2_OVF_vec... ISR_NOBLOCK) { ... }[/syntax]Byłbym jednak z tym bardzo ostrożny, ponieważ może przydarzyć się przepełnienie stosu. https://www.nongnu.org/avr-libc/user-man...
Układ testuję na płytce uruchomieniowej, zasilacz stabilizowany, źródło impulsów generatorek na LM555, żadnych silników w pobliżu. Przepełnienie stosu chyba nie wchodzi w grę ? A może sposób kompilacji jest istotny (poziom optymalizacji uzywam -0s ) ? W ostatecznosci moge wykorzystać WDT ?
Całemu zamieszaniu , winna jest instrukcja Goto Poczatek :( Jej użycie , powoduje przepełnienie stosu i w efekcie "wariowanie" procka :D Jeśli chcesz zakończyć działanie podprogramu , to pozwól programowi "dojść" do End Sub , użyj Reurtn , lub warunkowej pętli Do ... Loop Until.Nawiasam mówiąc , taki styl pisania kodu bardzo mi się nie podoba , bo "zaciemnia...
Trzeba zadbać samemu, w tej klasie uC nie masz detekcji przepełnienia stosu.
Przypuszczam że przyczyną wieszania programu jest przepełnienie stosu. Chyba za bardzo pogubiłeś się w tych skokach :) Przyglądnij się podprogramowi Menu , który w rzeczywistości nie jest podprogramem, a wywołujesz go przez Gosub Menu w Podprogram_4 . [syntax=basic4gl]'----------------------... Menu:...
no dobra ale mój program wywoływany przerwaniem wygląda tak: IRQ_INT1: cli ; blokujemy przerwania ldi r16,0b00000000 out SMCR,r16 ;wylacz SE (zezwolenie na uspienie) sbi EIFR, INTF1 ; kasujemy wywołanie ;cbi PORTB, 5 ; wylaczam urzadzenie <<<<<<<<<<...
Witam Odświeżę wątek. Dodałem układ UDN2981A pomiędzy Atmege a wyświetlacze, wyrzuciłem tranzystory które sterowały anodami oraz ich rezystory z baz. Działa całkiem nieźle. Jest jedno ale... jasność. Steruje to takim kodem: [syntax=basic4gl] '************ Zegar 6 wyswietlaczy LED + PCF8563 $regfile = "m32def.dat" $crystal = 8000000 $hwstack = 64 ' rozmiar...
pisałem w CodeVisonAVR i bascomie i w zasadzie nie widzę różnicy jeżeli chodzi o zajetość programu i szybkość. Wszystko zależy od programisty jak pokieruje swój program i podejdzie do sprawy. Oba języki działają na podobnej zasadzie, czesto różniąc się tylko samym sposobem zapisu instrukcji, bo w zasadzie kod się pisze na podobnym poziomie abstrakcji....
podzielę się wnioskami z badania trybu Fast PWM w ATmega 32. Wszystko co tyczy się trybu 5,6,7 zgadza się reguluje się tylko wypełnienie i rodzaj przebiegu (odwrócony i bez odwrócenia; wielkość wypełnienia za pomocą OCR1A lub OCR1B) By regulować częstotliwość(okres) i wypełnienie , trzeba wybrać tryb , w którym TOP-em jest OCR1A lub ICR1 , za wyjątkiem...
Cześć, ostatnio nie miałem czasu, także przepraszam za brak odpowiedzi. Program jest taki sam jak w pierwszym poście, tylko podmieniłem wzory na czas: RC5_main.c [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/sleep.h> /* Załącz bibliotekę RC-5*/ #include "dd_rc5.h" /* LED testowy...
Witam W oparciu o kod znaleziony na forum Elektroda mam programik wyświetlający adresy układów w magistrali I2C ( TWI ). Kod jest taki: $regfile = "m8def.dat" 'definicja procesora $crystal = 4000000 'taktowanie procesora $hwstack = 32 ' rozmiar stosu sprzętowego $swstack = 10 ' rozmiar stosu $framesize = 40 ' rozmiar ramki Config Debounce...
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny . Nie było by w tym nic niezwykłego ( ustawiony...
Witam serdecznie. Ostatni kod przepisałem żywcem z książki "Programowanie mikrokontrolerów w języku BASCOM" autorstwa Marcina Wiązania. Dioda miga ciut za wolno. Tu mi ręce opadają, dlatego zwracam się do Was o pomoc. Kod: Nie wierzę w to co napisałeś!!! Autor ksiązki nie zrobiłby takiego błędu... Podajesz błędne instrukcje, i oczekujesz poprawnej...
W 99% przerywanie przerwań to bardzo zły pomysł, kończący się przepełnieniem stosu i najdziwniejszymi błedami. Jest to możliwe ale bardzo nie polecam :)
Napisałem parę programów do tego urządzenia, w których nie było w ogóle instrukcji gosub tylko same instrukcje return i ciągle to samo. Może cos z przepełnieniem stosu, lecz wyznaczyłem w innym programie adresy pamięci w których mają być zapisywane i nadpisywane zmienne. Możliwe że lm7805 się przegrzewa i zawiesza układ. Zdaje mi sie że to nie wina...
Witam Mam układ, który mierzy dwie temperatury ( DS18B20 ), dwa napięcia ( PCF8591 ( pobiera czas ( PCF8563 ), a z powodu niedużego wyświetlacza ( 12 x 4 ) wskazania są zmieniane do 10 sekund po przepełnieniu Timer1. Układy PCF8563 i PCF8591 są podpięte z "zewnątrz" przewodami około 10 cm. Magistrala I2C ma obniżoną prędkość przez Config I2cdelay =...
Nie będzie się gryzło, dopóki obsługa przerwań będzie trwała krótko. Oczywiście inne przerwanie i czas jego obsługi wprowadzi pewien jitter do obsługi dugiego przerwania, w efekcie pomiary ADC nie będą co ściśle określony czas w każdym przypadku, a jedynie statystycznie. Jeśli to przeszkadza można zastosować nieblokującą obsługę przerwań (ISR_NOBLOCK),...
Tutorial do avr taki znalazłem: http://avr.elektroda.eu/?q=node/8 Jak byś czegoś w sieci szukał, to raczej unikaj tutoriala z patron.net, uczy złych nawyków i jest nieco nie na czasie. Pomiar częstotliwośći na AVR realizuje się w miarę łatwo, przy wykorzystaniu timerów, jeden timer pracuje jako licznik impulsów z zewnątrz, a drugi odmierza czas, mozna...
Szanowni Koledzy, Buduję kontroler sterujący urządzeniami zewnętrznymi. Na chybcika skleciłem układ-programator AVR przez łącze LPT. Program napisany i skompilowany w WinAVR-20100110 (Win2k). Wszystko działa poprawnie (Linux Slackware 10 + avrdude) jeśli idzie o programowanie flesha. Od strony elektronicznej też jest wszystko w porządku (jak manual...
Witam, proszę o pomoc: buduje sterownik na zasadzie włącz/wyłącz, to akurat nie jest w tym momencie ważne :), ale przejdźmy do szczegółów - ma pobierać dane z 4 czujników DS18B20, sam odczyt działa poprawnie, problem zaczyna się w menu, do kroku "2.2" czasem "2.3" wszystko działa poprawnie, lecz z "2.2" i naciśnięciu 'dalej' (lub "2.3") przeskakuje...
To chyba nie kwestia wyważenia, tylko tego, że jest tak solidnie zamocowane, no i w końcu silnik od HDD jest dość mocny. Jest w tym sporo prawdy. Śmigło jest przykręcone w kilku miejscach a dodatkowo silnik ten ma tak zwartą konstrukcję, że mam wrażenie, że samochód mógłby po nim przejechać. Mimo to projektując płytkę starałem się rozmieścić elementy...
IRQ tester https://obrazki.elektroda.pl/3243423400_... IRQ Tester to proste narzędzie, głównie do testowania czasu odpowiedzi na impulsy, lub czasów międzyzboczowych dostarczonego sygnału. Program został napsiany na ukontroler AVR Atmega168, a jego głównym zadaniem jest funkcja multiwibratora monostabilnego, którego działanie polega...
Patrzę na ten twój kod i się zastanawiam po jakim czasie procesor się zawiesza. Stosowanie komendy GOTO wywołującej skok do głównego programu w podprogramie może spowodować przepełnienie stosu. Procesor będzie odkładał na stos adres programu przy wywoływaniu podprogramu, ale już go ze stosu nie zdejmie, tylko będzie wykonywał dalszą część programu znajdującą...
Być może to przepełnienie stosu... Jeszcze popracuję i dam znać.
Szanowny kolego Andrzej_17 (te 17 to pewnie wiek ??) Widac ze jestes jeszcze mlody i brakuje Ci doswiadczenia (to bez zadnych zlosliwosci) zapewne Twoje projekty nie sa zbyt zaawansowane skor nigdy nie musiales siegnac po asembler. Asembler musi znac kazdy doswiadczony programista. Sprobuj napisac program czasu rzeczywistego z kilkoma zrodlami przerwan,...
Witam Z ciekawości uruchomiłem czujnik MPU6050, kod wykorzystałem z jednej z niemieckich stron - poniżej. Nie jestem pewien, czy kod jest poprawny, bo wyniki są bardzo "ruchliwe". Tzn. gdy płytka czujnika leży nieruchomo na stole to wyniki się zmieniają i o to sporo. Przykładowo: Accx zmienia się od np 10 do 270 Accy cały czas jest duże - nawet ponad...
A jesteś pewien, że ten bufor na 100% jest we flash'u? Pisząc bufor - sugerujesz że jest to tablica zmiennych, która na bierząco pośredniczy w wymianie danych. Jeżeli tak - bufor ten musi znajdować się w ramie. W przypadku AVR nie ma możliwości zapisywania do flasha z pozoimu programu (można to tylko zrobić z sekcji bootloadera). A co mówi kompilator...
To ja tak jeszcze raz: Drogi moderatorze _Robak_ jak w treści poprzedniego posta wpisałem linki do miejsca skąd można pobrać projekty to zostały one usunięte jako niezgodne z regulaminem forum. Jak załadowałem projekty w treść wiadomości to znów zostały usunięte, gdyż angażują punkty innych czytelników forum "nikt nie chce poświęcać punktów na moje...
Drgania styków to "oczywista, oczywistość". Czy wyeliminujesz je programowo czy sprzętowo to juz twoja sprawa. Pamiętaj, ze przerwanie od poziomu musi byc blokowalne (SIGNAL lub ISR bez atrybutów) w przeciwnym wypadku przepełnisz stos.
Witam. Mam problem z przerwaniami. Chcę przerwaniem INT0 uruchomić timer0 a przerwaniem INT1 go zatrzymać. Czy jest taka możliwość? 2 czujniki podpięte pod INT0/1, za pomocą których chcę zmierzyć czas przejazdu. Jeden czujnik ma wystartować zegar (bardzo dokładny przepełnienie timer0 co 1us) a drugi ma zatrzymać pomiar. Z góry dziękuję za pomoc i pozdrawiam....
Ja miałem identyczny problem z ATmegą - po prostu bufor stosu się przepełnia i jest lipa, a bufor mi się przepełniał bo miałem głupią opcję w kompilatorze asemblera zaznaczoną - Wrap relative branch, czy jakoś tak - wyłącz to i powinno chodzić
Poniżej wklejam działający kod obsługi czujnika ciśnienia MPL115A2 - może komuś się przyda. Komentarzami nie należy się przejmować, część udało mi się przetłumaczyć w oparciu o inne znalezione przykłady. Teraz ( 23:55 19/04/2013 ) w południowej części Krakowa pokazuje 995 hPa Byte . Jak najlepiej podzielić zmienna typu Long ?
Witam. Robię miernik częstotliwości na ATmega8 z wyświetlaniem na LCD HD44780 w trybie 4-bit (mam zrobiony prototyp). Opanowałem już wyświetlanie (z obsługą BF), ale teraz przystawiło mnie z pomiarem liczby impulsów zliczanych na wejściu T1 mikrokontrolera. Wynik co prawda jest wyświetlany, lecz jest on niestabilny w taki sposób, że skaczą 2 ostatnie...
nie ma sensu obsługa przerwania w przerwaniu, mnóstwo odkładania na stos, a program sie wysypie gdy drugie przerwanie będzie miało długą obsługę, przerabiałem na atmel-kach z j-tag'iem. myślę, że stos się nie przepełni, bo jest to niska częstotliwość, a poza tym przerwanie wykonywane z wyższym priorytetem (czyli w tym przypadku impuls drogi) będzie...
Widać nie do końca się "naprawiło" :lol: Czy podczas symulacji działa jak powinien (a może tylko Tobie się wydaje, że działa jak powinien :wink: ). Możliwe że masz problem z przepełnieniem stosu, przy skomplikowanych programach tego w symulacji nie sprawdzisz. Czy podczas programowania programator potwierdza prawidłową weryfikacje? Jeżeli tak to przeglądnij...
Witam, na wstępie dodam że jestem bardzo początkujący w programowaniu. Staram się stworzyć program który by włączał i wyłączał funkcję RGB, poprzez pilot RC5. Staram się to zrobić po kolei i najpierw próbuję gasić i zapalać pilotem diodę. Problemem jest to, że program reaguje na każdy przycisk a nie na konkretny - zaprogramowany. Chce sterować klawiszem...
Z dyskusją jest tak, jak z grą na boisku. Bronisz się, gdy atakują, bronią się, gdy atakujesz. Może to być ciekawa gra, ale nie musi. Wszystko zależy od rangi i poziomu graczy. Stawiam na konkrety nie na samozachwyt. Cenne mienie odpowiednio bym zabezpieczył i na pewno nie w piwnicy. Temat zabezpieczenia mienia znam i nie będę się wymądrzał, powiem,...
Witam. Nie piszę w Bascomie już kawałek czasu. Ale może dobrym rozwiązaniem jest : 1) otwierać plik i trzymać go otwartym aż do chwili kiedy chcemy kartę wyjąć (jakaś opcja w menu typu "wyjęcie karty") ? 2) może kolejność CLOSE i FLUSH powinna być na odwrót (to tylko moje gdybanie bo nie wiem czy da się tak) bo może przepełnia się jakiś stos ... 3)...
Problem rozwiązany! :) W pierwszej chwili bardzo wierzyłem że chodzi właśnie o ten stos, wydawało się to dość logiczne. Tym bardziej że mam w programie uruchomionych 10 rejestrów pierścieniowych każdy po 50 bajtów. Ponieważ w tym wypadku przesyłam tylko po 6 bajtów to szybciutko zmieniłem długość z 50 na 10 i już kompiluję i czekam na pozytywny rezultat....
piti__: Ja wybrałem inną drogę. Napisałem do Atmela o udostępnienie źródeł SerialNet (standardowego softwaru na modułach zigbit) i po podpisaniu NDA dali mi te źródła i sobie dopisałem potrzebne rzeczy. Konfigurację robię poprzez komendy AT co jest bardzo wygodne. Jeśli chodzi o zasięg to mierzyłem w terenie zabudowanym i wynosił maksymalnie 900 metrów...
"Atmel to lipa?" - mocne stwierdzenie nie ma co. Musze powiedziec ze wiele razy mialem przekonanie ze to wina producenta procesorow, ze cos schrzanili i JA(!) to odkrylem. ZAWSZE, powtarzam ZAWSZE okazlywalo sie ze wina nie lezy po stron producenta, tylko mojej. Piszac program pomysl o jakis funkcjach kontrolnych, zeby sam siebie kontrolowal czy nie...
Na pewno jest więcej literatury o 8051 i co z tego? Jak dla mnie bogata literatura to tylko problem, bo ileż książek można kupić i potem jeszcze przeczytać? Ważne są przejrzyste przykłady, na podstawie których można wiele zrobić. True, ale pytający pisał o książkach, więc poruszyłem tą kwestię. Dla mnie większość z tych książek to tłumaczenie manuali,...
Chciałbym zaproponować nowy temat, o błędach występujących w mikrosterownikach. Błędach lub nieścisłościach, o których istnieniu dowiadujemy się zazwyczaj gdy jakiś projekt nie chce działać tak jak powinien, chociaż wszystko wygląda o.k. i według danych dokumentacji: powinno być tak, a jest inaczej. Może to ułatwić życie (zaoszczędzić czas i nerwy,...
Żeby pisać na mikrokontrolery w C++ trzeba znać ten język bardzo dobrze. Niestety mikrokontroler to nie PC i nie "wybacza" nieprzemyślanych konstrukcji, które kończą się alokacją ogromnych ilości pamięci. Tak konkretniej to chodzi mi o nieprzemyślane używanie klas. C na mikrokontrolery jest znacznie łatwiejszy. A mógłby ktoś napisać w C++ i w C program...
Tłumaczą Ci ludzie już drugi dzień. Zwłaszcza kolega Logan . Czy tak trudno przeczytać w Helpie: Instrukcja ON INTERRUPT Przeznaczenie: Wykonuje skok do podprogramu gdy wystąpiło określone przerwanie. Składnia: ON źródło_przerwania nazwa_podprogramu Jeśli trudno to porzuć programowanie - są łatwiejsze profesje.
Nie składam winy na bascom tylko proszę o pomoc kolegów. Problemu z zliczaniem impulsów już nie mam. Napisałem program lecz jest on napisany fatalnie dlatego że nie mam pomysłu w jaki inny sposób go napisać. Może koledzy wskażą mi jak to napisać lepiej dlatego że stos mi się przepełnia i program "wariuje". [syntax=basic4gl]$crystal = 8000000 'Deklaracja...
Kol. Roko . Częściowo takie rzeczy pojawiły się już w polskiej pomocy do BASCOM-a On-Line. Obecnie jest jednak ona czasowo niedostępna. Przykład: BASCOM AVR - Tworzenie programu W trakcie edycji (...) Jak nie pisać programów. Dość często podczas przeglądania programów udostępnionych przez inne osoby da się zauważyć pewne charakterystyczne i powtarzane...
Witam wszystkich na forum jako iż jest to mój pierwszy post. Uczę się programować mikrokontroler z rodziny 8051. Korzystam z zestawu ZL2MCS51, procesor Atmel, AT89C51RD2. Do pisania kodu w assemblerze/C używam Keil µVision5 (at)edit Projekt mogę wykonać również w assemblerze AVR, tak że jeśli ktoś czuje się mocniejszy przy AVR to również zapraszam...
przepełnienie stosu przepełnienie stosu bascom deklaracja stosu
świec żarowych ładowanie pianka klimatyzacja przygasa płomień
telewizor elektron telewizor elektron
Jak uruchomić automatyczną naprawę Windows 11? Infiniti Q70 - brak dźwięku w lewych drzwiach: diagnostyka i rozwiązania