Zawsze obsługa przerwania powoduje skasowanie flagi I, aby pod koniec obsługi flaga została ponownie ustawiona przez instrukcję reti. Jeśli program się przerywa po kilku linijkach, to znaczy posiadasz nie obsłużone wektory przerwań, a to jest błąd w kodzie. Albo wyłącz przerwanie od danego źródła, albo wyłącz przerwania, jeśli z nich nie korzystasz.
Bez względu na LockBit-y, kasowanie całości powinno załatwić problem.
spróbuj skasować flagę na końcu przerwania (chociaż powinna być kasowana sprz.) TIFR|=1<<TOV0;
Jeżeli masz watchdog ustawiony na stałe a brak w programie jego kasowania to tu może być przyczyna. Pzdr. N.
Jak idzie pierwsze programowanie to uP jest surowy i jest oki, ale za drugim razem jak już program chodzi to port np MOSI i MISO byłyby w stanie wysoki i co wtedy?. Nic, gdyż przed nowym zaprogramowaniem program w procesorze jest kasowany.
Nie musisz robić czyszczenia, po prostu dokładaj spację przed liczbą jednocyfrową i będzie kasować liczbę dziesiętną.
Jeśli wyeliminujesz drgania przycisku, to najprościej to zrealizować podając wyjście przycisku na wejście zegarowe jednego timera (bedzie on zliczał ilość wciśnięć), a drugi timer wykorzystać do odmierzania czasów 1s - dokładnie co 1 s należy kasować licznik pierwszego timera. Ot i wszystko.
Zabezpiecznie w przypadku kasowania chipu nie ma znaczenia. Po prostu podłącz programator i tyle.
Miałem kiedyś podobne problemy i może chodzić o kasowanie flagi przerwania. Ja w Atmega8 po prostu kasowałem tę flagę przez wpisanie 1 do całego rejestru na końcu przerwania i problem zniknął: GIFR=0xff;
Jeśli do tego włączysz przerwania, ustawisz licznik T1 w tryb porównywania z kasowaniem, to dokładnie co 1 sekundę wywoła się przerwanie przepełnienia licznika T1. Dalej to już tylko odpowiednia obsługa tego przerwania.
Oczywiście, że zależy ile razy była programowana, gdyż z każdym kasowaniem pamięć ulega fizycznej degradacji. Dane dotyczące trwałości są na pierwszej stronie każdej noty katalogowej AVR.
Kwarcu nie potrzebujesz. Na wewnętrzynym oscylatorze możesz zrobić to spokojnie. Nie masz złącza ISP - no chyba że masz zewnętrzny programator do którego będziesz wkładał procesor. Jeśli nie to zdecydowanie dorysuj to złącze. Czy LCD będzie bez podświetlania? Kup lepiej taki z podświetleniem i go podłącz - 15 i 16 noga LCD. Może warto kupić 2x16 - koszt...
Witam Oto prosty przykład: $regfile "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls ' kasowanie wyświetlacza Lcd " TEST " ' wyświetli TEST Lowerline ' w dolnym wierszu Lcd " OK " ' wyświetli OK stop
i to może być powód, nie kasowałem flagi ;) , dzięki, sprawdzę w poniedziałek
Niedawno zaczałem bawić się z tymi cudownymi uC. Pierwszy programator zrobiłem na luźno, w pajączku z [url=http://www.ajd.czest.pl/~pawel.bork... strony. Wszystko działało ok. Programowałem pare programów i dostałem w sklepie płytkę uniewersalną u09 i chciałem złożyć programator (również z tej strony, lecz tym razem...
Pamięć FlashEPROM na pewno nie jest pamięcią kasowaną promieniami UV. Widzieliście kiedyś w procku ATmega8 okienko do kasowania Flash'u ? Dla przykładu http://www.tme.eu/pl/katalog/pamieci-fla... Widzicie gdzieś tutaj "okienka" żeby UV mogło skasować tą pamięć?
SIGNAL(SIG_INTERRUPT0) { ... GIFR = 0x40; //****************co to ?? ... GIFR|=_BV(INTF0); //***********co to ? ... MCUCR = 0x00; //INT0 reaguje na stan niski ********** przestaw na FALLING(opadające) Nie wiem czy main pokazałes w całości , ale ja bym w takim przypadku wogóle zrezygnował z przerwnia , a w pętli głównej...
To ustawia brak kasowania podczas programowania (kasowania), zapis eeprom ustawia się przy programowaniu.
Przy czym programator automatycznie wykonuje kasowanie, więc tak naprawdę wystarczy zaprogramować :)
Witam! Podczas programowania poprzez ISP wystąpił zanik zasilania. Od tego czasu żaden programator ISP nie może się dogadać z ATMEGA8. Podczas programowania, kasowania , weryfikacji programatorem równoległym wszystko wychodzi OK ale procesor nie działa w układzie. Przypuszczam że programator UPROG48 nie kasuje ustawień bitów konfigurujących. Jak przywrócić...
Dziś przez noc zostawiłem włączony działający układ. Następna ATmega8 idzie w kibel, uszkodził się reset - tzn. podłączyłem go przez 100k czyli max z noty. I znów coś się schrzaniło... Jak wrócę do domu prześlę schemat pozdr Reseta możesz podpiąć i bezpośrednio do +5V. Te 100k z noty to jest maksymalna wartość wewnetrznego rezystora pull-up. Zrób porządnie...
Ale się uparliście o ten kalendarz :P A takie pytanie. Czy po zapisie flasha, jeśli w eepromie siedzi jakaś wartość od PWM-a, to trace tą wartość - eeprom się zeruje? Normalnie zawartosc wew. eeprom'a pozostaje bez zmian chyba, ze masz ustawiona opcje kasowania podczas zapisu flash'a...
I z tymi dwoma sekundami to raczysz zartowac, chyba, ze do procka ze 128kB FLASH ladujesz program o dlugosci kilobajta. Jutro w pracy moge specjalnie dla ciebie sprawdzic ;) Swoja droga, nie sadze zebys byl w stanie przez port LPT programowac z czestotliwoscia 4MHz. Co do symulatora, teraz pracuje na ukladzie gdzie jest w sumie 5 procesorow, pamieci...
1. Moze nie zapisales danych, a masz fusbity ustawione na kasowanie eepromu przy flashu? Wiec poprzednio zpisanych danych nie ma.
zgadza się. Jeśli są ustawione LockBity to można je "odprogramować" jedynie opcją ChipErase czyli kasowaniem całej zawartości pamięci Flash.
Nikomu nie napisałem "na drzewo". Przetłumaczyłem tekst z noty, w którym wyraźnie pisze, że bit ten jest kasowany przy obsłudze przerwania (autor robi to chyba manualnie stąd musi kasować go ręcznie), albo wpisując do niego 1.
Oczywiscie uzyc mozesz, ale sens marny. Raz, ze ATMega8 nie ma interfejsu do zewnetrznej pamieci, wiec wszystko trzebaby robic manglujac bitami na portach, a dwa, ze ta pamiec to jakis stary EPROM kasowany UV? Jesli potrzebujesz duzo pamieci EEPROM polaczyc z ATMega8 to moze lepiej wybrac cos na I2C lub SPI?
Timer w przerwaniu obsługuje wyświetlacz LED i inkrementuje zmienną byte, która w pętli głównej w instrukcji Case wybiera konkretne funkcjonalne fragmenty programu do wykonania, których wykonanie czasowo mieści się pomiędzy przerwaniami od timera. W przerwaniu od timera ustawia się także flaga przerwania, która uruchamia za pomocą If Then instrukcję...
to co kolega gregoorr poleca to "kasowarki" to procków i zarazem reanimatory źle ustawionych fusebitów. Niby programują ale przez kasowanie pamięci. W tytule jest programator więc chyba nie do końca o to chodzi. Poszukaj dobrze w internecie w ciągu 5 minut znajdziesz kilka programatorów równoległych ale 100 PLN ciężko będzie osiągnąć. No może tutaj...
Po sprawdzeniu flag nie zapomnij jej/ich skasować ale uwaga w tym rejestrze wyjątkowo kasujemy flagę przez wpis zera! N.
Niestety schemat mi nie pomógł. Ależ pomógł, bo nie znalazłeś w nim żadnych zależności dot. kasowania timera przy jego wyłączaniu poprzez ustawienie preskalera zero. Jest to logiczne, ponieważ gdyby licznik timera był automatycznie kasowany, to zmniejszałoby jego możliwości, bo nie można byłoby go "puścić dalej" Schemat preskalera pokazuje natomiast,...
Dzięki ;) Faktycznie, kasowanie flagi przerwań pomogło. Jedna linijka załatwiła problem. Co z tym przyciskiem zerującym ? Jakaś podpowiedź ?
A mogę chyba ją skasować zaraz na początku IFa? Tak mi się wydaje logiczniej, chociaż to chyba nie ma żadnego znaczenia. znaczenie to ma :) ale w tym przypadku możesz ją kasować na początku, jednak zauważ jaki ciekawy mechanizm masz w rękach. Bo np gdy chciałbyś aby w przerwaniu ta flaga i ew jeszcze jakieś inne operacje mogły się wykonać dopiero gdy...
Odradzam wykorzystanie pamięci EEPROM ze względu na to iż ma bardzo małą ilość kasowań.
No tak, bo ATmega8 nie ma portu A. w pliku delay.h w funkcji delaj_ms() jest odwołanie do portu A (zresztą jest w opisie tej funkcji informacja o kasowaniu watchdoga),poprostu te dwie linijki usuń, nie są Ci potrzebne.
zastanów się też nad użyciem fusa EESAVE, który blokuje czyszczenie eepromu podczas kasowania pamięci flash, przydatne :)
opiszesz mi wszystkie instrukcje jakie oferuje Atmega8? Atmega8 to popularny 8-bitowy mikrokontroler z rodziny AVR produkowany przez firmę Microchip (dawniej Atmel). Wyróżnia się on niskim zużyciem energii, prostotą programowania oraz bogatym zestawem peryferiów. Poniżej przedstawiam zestaw podstawowych instrukcji dostępnych w Atmega8. Atmega8 korzysta...
W instrukcji pisze wyraźnie E1 D1 Można też zostawić fabryczne bo tam jest tylko włączony bit EESAVE który zapobiega kasowaniu eepromu przy programowaniu. https://obrazki.elektroda.pl/6597307000_...
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...
Za każdym razem, kiedy wgrywam program na procesor za pierwszym odczytem pojawiają się właśnie śmieci, a nie dane, które były wcześniej zapisane, więc chyba jednak w momencie programowania procesora właśnie "wpalam" eeprom. Wiem tylko, że można uniemożliwić zapisywanie eepromu w fusebitach. Niezupełnie, w fusebitach można tylko ustawić, aby nie kasował...
Pytanie stawiane było czemu źle działa Bo jest źle napisane. A najlepiej jechać po innych zwłaszcza po tych co się uczą. Po takich co się uczą nikt nie jeździ. Po takich którzy "chcą" odpowiedzi, ale wiedzą lepiej od odpowiadających - już tak. Freddie Chopin dzięki jakiś konkret co do przerwań, powiedz mi jeszcze czy będę mógł modyfikować wypełnienie...
Kasujesz zmienną 1ms dopiero po wyświetleniu (które trwa ze 100ms). Cls też trwa kilkaset ms. Więc licznik rozpoczyna zliczanie o kilkaset cykli za późno. Powinieneś kasować tą zmienną na samym początku. Czyli jeszcze przed Incr A.
Można jeszcze wykonać kasowanie a jak to nie pomoże to podpięcie zewnętrznego generatora na XTAL1 a jak to nie da rady to tylko programator równoległy.
chodzilo mi o ta funkcje..... void waitms(unsigned int czas) //tutaj nie ma ograniczenia przedzialu czasu do 255 :-) { for(;czas>0;czas--) { unsigned char x=10; for(;x>0;x--) //petla 1000us=1ms { TCCR0=0x02; //zliczamy impulsy 1us dla fosc=8MHz, clk/8 TCNT0=155; while(bit_is_clear(TIFR,TOV0)...
Co to za bzdury? Po co chcesz kasować? Po prostu na nowo programujesz - jeżeli robisz to dobrze to piszesz złe programy.
No wiec tak aby ustawić fusebity http://obrazki.elektroda.net/70_12331597... należy wpisać w pole Ifuse i Ufuse odpowiednie znaki tzn np. dla wewnętrznego kwarcu na 8MHz należy wpisać hfuse D9 - lfuse E4. Po takim ustawianiu można dowolnie kasować program z procka oraz także zmieniać wcześniej ustawione fusebity. Natomiast przy ustawieniu np. na...
A wgraj ten plik do procesora i napisz co wyświetla LCD, oczywiście 4 czujniki podpięte do Portd.1 taktowanie 8MHz i trzeba by ustawic bit EESAVE w fuse bitach by nie kasował eepromu jak kasujesz ATmege8. Jak masz ustawione fuse bity? powinno być HIGH = 0xC7 LOW 0x24 dla internal 8MHz oscyl i EESAVE by nie kasowało eepromu gdy kasujesz flash przy programowaniu...
No właśnie coś nie idzie "chip erase" przez ISP :( Programatorem równoległym poszło ale zrobiłem ten sam manewr na próbę i znowu przez ISP nie ma kasowania ani zapisu. Coś chyba robię nie tak :/ Albo procesor jakiś nadszarpnięty mam.
No dobra, prosze sie nie śmiać... Po prostu nie kasowałem przed wgraniem nowego programu :) Ale nawet głupi problem to problem. No ale już po problemie. Pozdrawiam
Dlaczego w bazach tranzystorów na schemacie są oporniki 47omów - powinno być 1k do 3k9 .Brak rezystora w bazie T1. Błąd na schemacie ? Powinieneś usunąć Cls z pętli programu - przed wyświetlaniem temperatury i przed wyświetlaniem godziny. Program będzie nadpisywać wyświetlane dane na lcd zamiast kasować zawartość wyświetlacza przed każdym wyświetlaniem.
Błąd polegał na tym, że przy ISC10 zamiast przesuwania bitów było porównanie, ISC10=2 a więc relacja była spełniona i przyjmowała wartość 1. Co do wszystkich rad dotyczących kasowania i ustawiania bitów MCUCR i innych - mają one sens, ale dopiero po wstępnym wpisaniu tam jakiejś wartości. Mimo, że po resecie są tam wartości domyślne, najlepiej na samym...
Tak ale bascom demo wgrywa pliki tylko do 2 kb, a oprócz bascom avr nie umiem się posługiwać innymi programami :( Z tego co pamiętam to Bascom kompiluje pliki do określonej wielkości demo, programowanie było bez ograniczeń. Może się coś zmieniło? Kasujesz Flash przed zaprogramowaniem?
Może źle się wyraziłem raczej to było założenie. Ale po wyniku odczytu z eeprom wygląda to tak że kasuje bity od 0 do 100 dochodzi do 255 i kasuje odnowa. wiec problem siedzi w zmiennych tylko trzeba to terazznaleść. Nie wiem, nic nie mogę zrozumiec z tego co piszesz, chyba już późno. Bajty nie bity, kasowanie to ustawianie na 0xFF, a tego od 0 do...
http://obrazki.elektroda.net/40_12391009... Kalkulator na ATmega8, co tu dużo pisać. Obsługuje nawiasy, jedna komórka pamięci, *, +, -, /. Klawiatura zabezpieczona jest diodami. Układ posiada gniazdo do programatora http://mirley.firlej.org/programator_na_... który zrobię za jakiś czas. Programowałem pożyczonym:P Schemat ideowy i montażowy...
Ale idea tego programu opiera sie na: Napisz na ekranie LIGHT: jeżeli stan portu x jest wysoki to po light wypisz ON jeżeli niski to OFF Trzeba więc kasować zawartość LCD żeby odświerzało najmniej raz na sekundę
Jeśli funkcja obsługi przerwania powoduje ponowne wyzwolenie samego siebie, to jest to wynikiem tego, że flaga przerwania jest kasowana tylko podczas wchodzenia do przerwania. Podczas wykonywania funkcji obsługi przerwania flaga INTF0 może zostać ponownie ustawiona, co spowoduje ponowne wejście do ISR zaraz po zakończeniu (ISR_BLOCK nie powoduje zablokowania...
Ok, sprawdzę czy podczas programowania nie ma spadku napięcia i czy nie ma zakłóceń. Wydajność prądowa wynosi 1 A. Podłączony jest stabilizator 7805. Może i mikrokontroler jest popsuty bo pojawiało sie to coraz częściej, ale to jest dziwne, ponieważ niby ma wytrzymać 10 tys. zapisów/kasowań. Teraz jest około 200, max 300.
Witam, Mam do Szanownych Kolegów pytanie: Czy odczyt danych z pamięci EEPROM wpływa na jej trwałość (jeśli tak, to w jakim stopniu), czy też pamięć ta zużywa się tylko poprzez zapis i kasowanie? W datasheecie producent podaje tylko informacje odnośnie ilości gwarantowanych cykli zapisu i kasowania (chyba, że coś źle poczytałem), tak jakby odczyt nie...
Dioda to koledze miga pewnie dlatego że w rejestrze odbiorczym SPI nie ma żadnego odebranego znaku i program pracuje bez przerwy w pętli dotąd aż coś odbierze a nie odbiera nic. Wywal te miganie z programu głownego i zobaczysz co się dzieje tan naprawę. Poza tym tak naprawdę do nie wiadomo co ty tam obierasz bo masz zastosowane potężne opóźnienia nawet...
Niestety po usunięciu połączenia dalej to samo. Dobra, jednak działa. Myślę, że nie było żadnego problemu z elektroniką (zawsze w moim programatorze stosowałem pin 3 jako gnd i działało bez problemu). Postanowiłem pobawić się opcjami w avrCalculator i po zaznaczeniu: -D "Wyłącz autokasowanie flash" w połączeniu z -e "wykonaj kasowanie AVR" przed zapisem...
Nie działa Ci, bo nie przeczytałeś dokumentacji... http://obrazki.elektroda.net/0_118799421... Flagi przerwań czyści się przez wpisanie do nich logicznej jedynki. Trochę może paradoksalnie to wygląda, ale ma swoje logiczne uzasadnienie. Chodzi o to, że czyszcząc flagi w ten sposób da się to zrobić o wiele szybciej i co najważniejsze - bezpieczniej....
A w jaki sposób sprawdzasz odczytane dane z eeprom? Miej na uwadze fusebit EESAVE. Bo domyślnie ten fusebit jest wyzerowany ( mam tu na myśli ATMEGA8), więc za każdym razem gdy wgrywasz program do mikrokontrolera pamięć EEPROM jest kasowana. Sprawdziłem Twój kod w symulatorze no i działa.
Co innego ustawiasz, a co innego kasujesz. To jest błąd.
Witam, Chciałbym wgrać inny program do już wcześniej zaprogramowanej atmegi8.Używam Sinaprog (nakładka na avr dude) ale nie ma tam opcji kasowania. Jakim programem mógłbym skasować pamięć flash, i czy trzeba przy kasowaniu i ponownemu programowaniu grzebać w fuse bitach? Jeśli trzeba to raczej się nie podejmę :|
W międzyczasie znalazłem źródło problemu i go rozwiązałem - tak jak od początku mówiłem błąd był we fragmencie kodu wklejonym jako pierwszym - po wyświetleniu aktualnej godziny nie kasowałem flagi refresh, co powodowało zapętlenie programu. Skasowałem niepotrzebne wypowiedzi. Dar.El
Witam, Zbudowałem swojego czasu timer odliczający sekundy na Atmega8 ale zauważyłem, że jak zatrzymuje go przyciskiem kilk razy i włączam, to sekunda jest niepełna. Zapewne jest to spowodowane zapisem jego wartości w jakimś rejestrze i chciałbym móc go kasować do końca... mój kod jest dostępny tutaj: http://mikrokontrolery.blogspot.com/2011...
Nie mogę zrozumieć dlaczego w poniższym fragmencie programu (przerwania) nie jest zapalana dioda LED1: [syntax=c]ISR(TIMER0_OVF_vect) { if(TIFR & (1<<TOV0) ) LED1_ON; // nie zapala // LED1_ON // a po aktywowaniu tej linii zapala TCNT0 = 100; } [/syntax] Rozumiem że flaga TOV0 w trakcie przerwania powinna być ustawiona a po wyjściu z przerwania...
Ostatecznie możesz przejść na ATMEGA168 który jest właściwie ATMEGĄ8 z rozszerzoną pamięcią programu do 16KB. To jedyne wyjście jeżeli nie możesz użyć CPU w innej obudowie a potrzebujesz więcej pamięci programu. Natomiast nie przejmowałbym się zbytnio ilością cykli programowania. producent gwarantuje 100 000 cykli kasowana/zapisu, a to wystarczająco...
Jak znajdziesz neseser to pomyśl jak to zrobić, żeby kasowały się znaki, które nie będą nadpisane. P.S. Gdybyś jednak dłuższy czas nie mógł dojść do siebie to podpowiem, że zawsze można wyświetlić nic czyli spację.
Nie siedzę w AVRach więc o tym nie wiedziałem, podałem tylko prawidłowy sposób wpisania zera do odpowiedniego bitu. Taka metoda kasowania flag sprzętowych, że zapisuje się tam jedynkę a nie zero wcale nie występuje tylko w AVR'ach ale także w innych rodzinach mikrokontrolerów.
Vcc wychodzące z lm78l05 jest tylko doprowadzone do U1 ! Zasilanie dla U3 i U4 jest podawane dopiero w momencie kasowania z wyjścia U1/28/PVCC .....U3/20/PVCC .....U4/7/20/PVCC
twoja teoria jest zla - bin bedzie zajmowal tyle ile bedzie mial potrzebe zajmowac. jesli dasz na koncu pamieci zmienna (a w zasadzie stala), to bedzie on obejmowal caly obszar pamieci flash. jesli nie, to po co ma zajmowac wiecej? wartosci 0xFF (zreszta niezawsze takie) w pamieci znajda sie same, dzieki operacji kasowania ukladu - nie ma potrzeby (a...
Jednoczesny odczyt i zapis danych - Wywaliłem niepotrzebne kasowanie flagi z kodu powyżej. [syntax=c]char SPI_RW(char data) { SPDR = data; while(!(SPSR & (1 << SPIF))); return SPDR; }[/syntax]
Tylko, że ja nigdy żadnego problemu nie miałem, bo wiem dokładnie jak wszystko działa. Twoje "ważne że działa" jest wątpliwe, prawdopodobnie sam nie wiesz jak działa Twój kod. Nie spotkałem się, żeby ktoś, kto nie kasował i ustawiał flagi I w przerwaniu miał z tego powodu problemy z programem. ps. Ei incumbit probatio qui dicit, non qui negat.
Programator czasami trzeba odlaczyc, czasami nie. Wszystko zalezy od programu. Np. czasami mialem szopki z PonyProgiem, ktory nie robil resetu po programowaniu i uklad czasami z podlaczonym ISP nie ruszal, a po odlaczeniu bylo ok. Co do kasowania FLASH przed programowaniem to nie jest to konieczne, a nawet jest to zbedne - wydluza tylko czas programowania....
Chyba łapię. Jeśli ICR = 100 a OCR = 10, COM1A1, COM1A0 = 11 To: Licznik leci w górę od 0 jeśli TCNT = OCR = 10 zostaje ustawiony bit portu OC1. Licznik leci dalej do 100 i odbija z powrotem i jeśli znów TCNT = 10 to bit portu OC1 kasowany. Tutaj jest ta symetria :) Dziękuje za całą do tych czasową pomoc.
flagi w rejestrach sa przewaznie kasowane programowo wiec wystarczy je czytac w pdfie z procesora powinno byc wszystko na temat rejestrow do uarta jezeli dane wysylasz za szybko moze odbiornik nie zdazyc ich odebrac
(at)bartprojects niby tak, ale nie do końca. 1) ADEN to jest enable przetwornika, a nie przerwań. Uruchamia zegar przez preskaler itd. 2) w tej samej dokumentacji jest napisane że flaga przerwania jest ustawiana na koniec konwersji - więc powinien mógł ją testować. 3) gdyby autor miał problem z nieskasowaną flagą, to by mu program nie wisiał na tej...
Twoja koncepcja pomogła i to nawet bardzo ale niestety gdy zmienimy któreś na on lub off dosłownie na chwilkę widać nie 2 podstronę ale 2 stronę w MENU :/ A nawet gdy nie naciskamy nic ( brak komendy z pilota RC5 ) przez ułamek sekundy widać jak 2 strona z menu głównego tez się pokazuje :/ Chcesz to mogę to nagrać Proszę poprawić pisownię, nazwę tematu,...
Witam Mam atmege8 i zaczynam do programować w eclipse. Chciałem wgrać ten program: [syntax=c]#include <avr/io.h> #include <util/delay.h> #define LED (1<<PC0) #define LEDOFF PORTC |= LED #define LEDON PORTC &= ~LED #define DELAY _delay_ms int main ( void ) { DDRC |= LED; LEDOFF; }[/syntax] I nie chce mi on działać. Działa tak że...
Można też tak: '''''''''''''''''''''''''''''''''''''men... glowne'''''''''''''''''''''' Sub Menu Cls Menu_number = 1 Do Keyscan Waitms 300 Select Case Key Case 0: Incr Menu_number If Menu_number = 11 Then Menu_number = 1 Case 2: Decr Menu_number If Menu_number = 0 Then Menu_number = 10 End Select Lcd " MENU " Lowerline Lcd Menu_number...
Miałem podobny problem: ISP programmer Dybkowskiego nie chciał zapisać pamięci flash AT89S52-24PC. Odczyt ID, kasowanie działały poprawnie. Sprawdzałem dla dwóch programatorów 'STK200 style', które wcześniej bez problemów używałem z procesorami ATmega8. Pomogło dopiero drastyczne zmniejszenie deklarowanej w programie ISP częstotliwości zegara - do 200kHz...
A kasowanie pamięci przed wgraniem innego programu też nie pomaga?
Przerwanie od INT0 powinno aktywować przerwania od timera, które co 50ms będą zmieniać stan portu c: INT0: - blokuj przerwania INT0 - licznik sekwencji na portc = 0 - aktywuj przerwanie timera INT TIMERA: - switch (licznik sekwencji) ..... w ostatnik case czy default: 1) blokuj przerwania timera 2) kasuj flagę INT0 3) włącz przerwania int0
Dzięki za pomoc. Problem rozwiązałem. Faktycznie brakowało komendy Sub, ale w pierwszym momencie program i tak nie chodził. Drugą przyczyną wadliwej pracy procesora była pomyłka przy konfiguracji portu D. Jako wejścia ustawiłem piny 4 i 5 a nie 5 i 6. Choć pind.6 był skonfigurowany jako wyjście podanie na niego stanu niskiego i tak powodowało wykonanie...
Prawidłowe żądanie to żądanie opisane w dokumentacji, ponadto niektóre żądania wymagają przejścia do trybu "aktywnej diagnostyki" - są to testy elementów wykonawczych, nastawy adaptacji oraz kasowanie błędów. W dokumentacji zawarte są diagramy obrazujące sekwencje jakie mają miejsce podczas komunikacji testera z ECU. Nie wiem o jakich losowych odpowiedziach...
To był akurat wire wiszący w powietrzu resztka po kasowaniu poprzedniego obwodu i przesunięciu przekaźnika. Rzeczywiście mógł wprowadzać w błąd. http://obrazki.elektroda.pl/2305224800_1...
Portb.5 nigdzie nie ustawiasz na jeden to po co go ustawiać na 0 Z kolei Portb.1 ustawiasz na 1 i nigdzie nie kasujesz
Programować bity można wiele razy. U ciebie zostały pewnie zaprogramowane bity zabezpieczające odczyt. Niestety blokują one także odczyt sygnatury. Musisz jakoś wymusić kasowanie układu bez odczytu sygnatury, to się odblokuje (o ile procek jeszcze jest żywy). Niestety nie znam BASCOMa, i nie wiem jak to w nim zrobić. Wojtek
http://obrazki.elektroda.pl/8997199800_1... Do zaprojektowania i skonstruowania układu autoryzacji dostępu z wykorzystaniem klucza Dallas , zmusiła mnie konieczność instalacji systemu alarmowego. Elektronika układu jest zbudowana w oparciu o ogólnodostępny mikroprocesor ATMega8, przystosowany do pracy z klasycznym czytnikiem pastylek...
Witam, od 2 dni nie mogę znaleźć informacji o funkcji, która odczytuje pozycję kursora na lcd hd44780. Zbieram się do napisania funkcji, która kasowałaby backspacem dokładnie 1 znak na lcd, lecz potrzebuje mieć możliwość odczytania aktualnej pozycji kursora. Na wszelki wypadek dodam, że oczywiście pin R/W podłączony do uC. Pozdrawiam Bartosz!
Witam ewentualnych czytelników tego tematu. Zamykam temat, jako że problem rozwiązałem. Obsługa timerów została poprawnie zrealizowana po skompilowaniu projektu w Bascomie dla procesora Atmega48, Jedynie przy obsłudze przerwań pojawił się problem. W moim programie była konieczność "ręcznego" kasowania flagi przerwania INT1 za pomocą instrukcji: SET...
Jeśli ten pierwszy sposób działał (tzn: -O godzinie X ma włączać wyjście,a o Y ma je wyłączyć. Wszystko działa ok,ale gdybym chciał np ustawić godzinę X jako 12:00 ,a Y jako np 13 i ustawić zegar na aktualną godzinę 12:30 to program w tym cyklu już nie zareaguje (zadziała dopiero po następnym przejściu przez godzinę 12.) to można chyba po prostu dodać...
Co do kasowania przez wpisywanie jedynki - to jest jak najbardziej poprawne: http://www.elektroda.pl/rtvforum/viewtop... Nie analizowałem kodu zbyt dokładnie, ale jakkolwiek brakuje właśnie kasowania flagi przerwania TWINT. Dodatkowo (z tego co wyczytałem) trzeba flagę kasować po wprowadzeniu dodatkowych danych do transmisji....
No bo ja Ci napisałem, ze nie wiem gdzie i jak potem tego używasz. PD0 to jest numer bitu a nie wartość całego portu. Używa się tego do ustawienia/kasowania bitów a nie do przypisywania jako cała wartość portu. Jeśli chcesz przypisać danemu bitowi portu jakąś wartość to odpowiednio dla twojego przypadku: Ustawienie bitu "1": PORTD |= (1<<aa);...
Wszystkie te nagłówki ci są potrzebne czy tylko "na wszelki wypadek" załączasz wszystkie które pamiętasz? :) Moją uwagę zwrócił fragment: [syntax=c] ADMUX |= (0<<MUX3) | (0<<MUX2) | (1<<MUX1) | (0<<MUX0); [/syntax] Nie jestem specem od C ale takiego kasowania i ustawiania bitów jeszcze nie widziałem. Ja bym proponował Bity które...
filus66 gdybyś przeczytał DOKŁADNIE książkę Pana Kardasia, wiedizałbyś, że akurat tutaj KASOWANIE flagi odbywa się poprzez wpisanie "1" Dziwne, bo dziwne, ale tak to zostało rozwiązane. Ale przecież pętla skończy się kiedy na wszystkich bitach będzie 1? Zauważ, że przed pętlą jest ! Dodano po 2 BlueDraco Działa to :) A autorem kodu jest sam Datasheet...
Upływność kondensatorów przy tak krótkich czasach podtrzymania jest bez większego znaczenia. Z drugiej strony używasz starego procka (M8), który ma długie czasy zapisu EEPROM, nie lepiej użyć np. M88, dla którego pełen zapis to 3,4ms, czyli ponad 2x krócej, w dodatku można rozdzielić kasowanie i zapis, co daje jużtylko 1,8ms, czyli ponad 4x której niż...
jeśli chcesz sprawdzać program w wielu miejscach to zastosuje flagi ustawiane w punktach kontrolnych a ustawienie tych flag sprawdzaj w procedurze obsługi Watchdoga. Możesz wtedy sprawdzić obecność w wielu punktach i wyzerować (lub nie) timer, z wyzerować wszystkie fagi. Wtedy procedura nawet dobrze jak byłaby obsługiwana w przerwaniach zegarowych...
Wg. mnie 111 | 101 = 111. Rozumiem, że problem przełączania kanałów tkwi tutaj w ustawianiu i kasowaniu bitów MUX tak ? Mam jeszcze pytanie, w jaki sposób odczytywać rejestr ADCH ? Jego zawartość zawiera raz jeden kanał raz drugi. Wrzucając odczyta ADCH do warunku if nie czyta go w ogóle.
kasowanie pamięci flash atmega8 kasowanie pamięci eeprom atmega8 kasowanie błędów kasowanie bledow
nadajniki tmobile corsa zamek kierowcy monter elektronik
Lokalizacja bezpiecznika ECM w Iveco Trakker 2011 Schemat elektryczny sprężarki śrubowej FIAC