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...
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...
Niedawno zaczałem bawić się z tymi cudownymi uC. Pierwszy programator zrobiłem na luźno, w pajączku z [url=]tej 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 na płytce) dla wygodnijszej pracy. Sprawdzałem ponad 20 razy i wszystko...
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ę...
Witam wszystkich:) Postanowiłem ostatnio pobawić się trochę mikroprocesorami. W tym celu kupiłem Atmel ATMEGA8L-8PI i zmontowałem, taki prosty układzik jak na rysunku w załączniku: W którym to: Nóżka 8 i 22 procesora jest podłączona do „-” zasilania; Nóżka 20 i 7 procesora jest podłączona do „+” zasilania; Nóżka 1 (Reset) procesora...
Witam. Co może być przyczyną że nie mogę zaprogramować mojej karty (ATMEGA8515). Używam programu I2C prog i mam programator FUNPROG. Program rozpoznaje Atmela odczytuje flasha, kasuje go, ale nie mogę go zaprogramować wyświetla się komunikat "Error progracośtam flash". Zauważyłem że bity są ustawione inaczej niż w różnych instrukcjach i nie da się ich...
Tego nie widziałem. Znalazłem za to informację że dotyczy to rezonatora pracującego jako generator wytwarzający główny sygnał zegarowy: A po drugie, akurat w ATMega8 jest błąd w krzemie i te wewnętrzne kondensatory nie działają (tzn. FuseBit ich nie włącza). Użycie rezonatora jako źródła sygnału dla Timer2 a nie jako głównego źródła sygnału zegarowego...
A kasowanie pamięci przed wgraniem innego programu też nie pomaga?
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). A teraz chciałbym go wam zaprezentować. Na początek podręcznik języka C w formie pliku pdf -> 'C.pdf' i plik -> 'atmega16mmr.pdf' ,oraz obrazki -> 'Atmega8.gif'...
Wielkie dzięki. A da się jakoś wyczyścić (ew. zablokować) to przerwanie? Próbowałem juz wpisywać w procedurze przerwania cli(), wyłączać INT0 w rejestrze GICR, ustawiać flagę w GIFR. Póki co z marnym skutkiem. możesz zarówno zarówno zablokowac każde przerwanie z osobna, a także wyczyścić flagę od ich zgłoszenia. Możesz to uczynić także w przerwaniu....
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
:arrow: projektavr EESAVE działa tylko podczas kasowania układu przez programator (odcina sygnał kasujący od EEPROM-a). Starsze wersje AVR'ów miały tą wadę, że podczas wahań zasilania w czasie zapisu EEPROM zerowany był rejestr adresowy EEARH:EEARL, co powodowało zapisywanie do zerowej komórki pamięci. Pomijając zastosowanie układu BOD, poleca się nie...
Timer- np. Timer1- jako licznik zlicza impulsy zewnętrzne. Podane na odpowiednią końcówkę- T1 w wypadku ATmega8. Nie potrzebuje żadnego preskalera- bo preskaler dzieli impulsy z zegara- a tu nie ma co dzielić. Ustawiamy bity CS10-CS12 na external clock source- falling lub rising. Czy ustawiamy końcówkę T1 jako wejście- nie pamietam. Można ustawić. Ilość...
Witam, Zajmowałem się już elektroniką analogową, cyfrową ale mikorkontrolerami nie a więc trzeba zacząć, i tu pojawiają się pytania. 1.Czy do zaprogramowania ATmega8 niezbędny jest programator :?: 2.Jaki program do programowania ATmega8 jest najprostszy :?: 3.Jaki język programowania jest najprostrzy :?: Admini nie usuwajcie tematu naprawdę nieznalazłem...
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ć...
Możesz to zrobić na dwa sposoby. 1. W przerwaniu zmienisz stan tego portu. 2. Przerwanie ustawia ci pewną flagę że nastąpiło odmierzenie 1 sekundy a w pętli głównej programu testujesz tą flagę i jak wystąpi to zmienisz ten port a flagę kasujesz I cała filozofia. Czy to jest jasne ?
Co może być nie tak, jeśli po wyjściu z przerwania program wraca do poczatku funkcji main(). Proszę o podpowiedź. Wielkie dzięki JZ Kod: Dwa LEDy. LED_1 zapala się i gasnie. LED_2 sterowanie z zewnetrzne ZAPAL/ZGAŚ ... ... ISR(USART_RXC_vect ) //SIG_UART_RECV { data=UDR; if ((data==0x01) && (bit_is_set( PIN(LED_PORT),LED_ZIEL))...
Witam, Czy nakierowałby mnie ktoś w jaki sposób wykorzystując PWM można zrealizować płynne sterowanie jasnością diody LED przy użyciu pilota nadającego w standardzie RC5? Do tej pory udało mi się zrealizować płynne sterowanie jasnością diody wykorzystując PWM i microswitche - oto kod: [syntax=c]#define F_CPU 8000000UL #include <avr/io.h> #include...
Hmm, to ciekawe. My (ja z kolegą) też mieliśmy taki problem ale w ATmega8. Do tej pory nie znaleźliśmy rozwiązania. Zdaje się, że kolega w końcu zrobił zapis do flash-a ale głowy nie dam. Po prostu raz na jakiś czas zawartość epromu diabli brali.
no :-) ale kopiarki do masowego programowania to aż niepotrzebuję. Po prostu chciałem bezpiecznie zaprogramować najpierw jeden mikrokontroler - bo z AVR-ami zaczynam dopiero przygodę, co nieznaczy że nie mam doświadczenia z innymi rodzinami. Problem tkwi w tym że jak robię coś pierwszy raz to się boję... ale Pomysł bardzo dobry. No i odnośnie konwerterów...
No i właśnie tak jak w temacie napisałem sobie program taki w którym wpisuje się hasło i drzwi sie otwierają i można też zmienić hasło. Program działał bez zarzutu ale postanowiłem zrobić tak żeby zmienna z hasłem była przechowywana w eeprom no i dodałem kilka linijek kodu które miału takie właśnie zadanie. I właśnie według mnie wszystko jest dobrze...
Przepraszam za zbyt duży skrót myślowy. Ponieważ zbudowałem już kilka programatorów to nie jest dla mnie problemem zbudowanie kolejnego. Z aplikacjami też sobie jakoś radzę. Jeżeli używasz programatora stk300(tego do bascoma na lpt) to chyba żaden problem napisać tzw driver(aplikację) do niego aby niezwykle wolno programował układ przez SPI. Jeżeli...
Widać że procek jest nieskasowany. Kasowałeś go przed programowaniem ?
Witajcie kupiłem tą atmege wcześniej programowałem zwykłe atmele8515 zastosowałem i2cproga programuje przez isp tak jak 90s8515 za pierwszym razem wykrył dziada atmega ale ptem coś pomieszałem w i2cprogu i dziada nie identyfikuje? włożyłem zwykłą atmelke i widzi może pozmieniałem bity startowe? poradzcie coś bo zraziło mnie do atmeg najciekawsze jest...
Czy to znaczy że funkcja chip erase kasuje nie tylko program ale także wszystkie bity zabezpieczeń? Pozdrawiam.
Teraz bedzie najciekawsze .... byc moze w buforze to tak wyglada ...(zapewen tak jest jak napisales) Obecnie wsyzsto dziala cacy nawet bez zerowania bufora .... zmienilem tylko bit CKOPT zeby generator dziala od "badny do bandy" bo uzywam kwarcu 11,0592 i wszystko zaczelo stabilnie dzialac .... Obecnie zmienilem tak ze odczytuje bufor: Print "AT+CSQ"...
Popełniasz taki błąd że probójesz odczytać stan pinu w momencie kiedy jest on ustawiony jako wyjście. Musisz w momencie kiedy chcesz coś odczytać zmienić wartość stosownego bitu w DDRB w tym przypadku DDRB&=0xff-(1<<6); Potem jesli dalej uzywasz jako wyjscia musisz z powrotem zmienic: DDBR|=1<<6; Z innych rzeczy chyba cos takiego...
No jasne! Moje niedopatrzenie, wziąłem pod uwagę fakt, że URSEL jest domyślnie jedynką, natomiast nie zwróciłem uwagi, że przypisanie jakie ja stosuje - kasuje tą jedynkę! Wielkie dzięki za odpowiedź. Pozdrawiam.
1. czy mozna jednak w jakis sposob zapisac pliki na karcie tak aby nastepny plik zaczynal sie w sektorze nastepujacym zaraz po poprzednim pliku? 2. jesli nie da rady tak zrobic to czy jest inna metoda w wyszukaniu danego pliku niz skanowanie karty w celu znalezieniu ciagu okreslonych znakow (charakteryzujacych i rozpoczynajacych dany plik) Ad1. Można...
A to tylko z ciekawości :wink: O ile z zerowaniem rejestrów raczej wiem czemu nie wypali, o tyle z kasowaniem pamięci już nie. Chodzi o to "że się nie powinno" czy np. wgrywanie programu polega na operacji &, czyli obecny stan komórki jest iloczynem nowego stanu. Wtedy faktycznie trzeba by było pamięć kasować całkowicie. P.S. Jak bym niezrozumiale napisał:...
Pracuję z akcelerometrem ADXL345. Dołączyłem go przez SPI z częstotliwością tej szyny 4MHz. Ustawiłem sampling rate na 400Hz. Jednak mam dokładnie 100sps i to przy dowolnie nastawionym sampling rate w rejestrze BW_REGISTER. Nie włączałem kolejki FIFO - ustawiłem bypass mode. Program mam aktualnie niezwykle prymitywny. Jedyne co w nim robię, to konfiguruję...
Ok - ale ja właśnie myślałem, że to powinien pokazać mkAvrCalculator - że te fusebity oznaczają że uC spodziewa się zegara np. 16MHz. A nie pokazuje nic, stąd moje zdziwko. Dla twojego większego zdziwienia: żaden FuseBit Calculator nie wskazuje na konkretną częstotliweśc powyżej 8 MHz. Porównaj z : Masz tam tylko ustawienie dla " Ext. Crystal/Resonator...
A czy dodałeś plik definicji rejestrów dla procka którego używasz? $regfile = "m8535.dat" dla atmega8535 (nie wiem jakiego proca używasz)
Witam, Napisałem taki oto programik który ma za zadanie zmieniac stan diody co około jedną sekunde (odrazu dodam że nie chodziło mi o odmierzenie dokładnej sekundy tylko o opóźnienie). Wyliczyłem że przy preskalerze 256 timer1 musi zliczyć do 31250 żeby odczekał sekunde (taktowanie 8Mhz). Ustawiłem też bit WGM12 dzięki czemu Zawartość licznika TCNT1...
No to opowiedz własnymi słowami: sbi DDRB, 0- ustawiamy port B jako wejście- oB 00000000 sbi DDRB, 1- ustawiamy port B.0 jako wyjście- oB0000001 sbi PORTB, 0 - ustawiamy stan niski na PORTB.0 cbi PORTB, 1 - kasujemy stan wysoki na PORTB.1- czyli wpisujemy stan niski. Czyli wszędzie stan niski- 0. Ponieważ nie jestem dobry w asm to opowiedz co chcesz...
Witam, Napisalem program na atmega8 do regulatora dwukierunkowego, którego schemat można znaleść tutaj. [url=]Link Licznik pracuje z zegarem 8Mhz i prescalerem 64. Czyli licznik powinien zapelnić sie minimalnie po 2ms. Sygnał z odbiornika trwa od 1ms do 2ms. Najpierw zliczam czas impuslu. W zależności od wartosci zliczonego czasu impulsu daje atmega...
Wiatm! Chciałbym poprosić o pomoc w znalezieniu problemu. Prosty układ, sygnał DMX odbierany jest przez układ ST485 i podawany na wejście RX procesora ATmega88, który powinien wysterować odpowiedni kanał PWM(układ powinien reagować na zmiany w pierwszych trzech kanałach DMX). Program przerwania testowałem za pomocą ręcznego zapalania/gaszenia diod led...
Jeśli WatchDog jest domyślnie wyłączony to ja go nie konfigurowałem. Także fusebit WDTON jest nie ustawiony. Z resztą: Pragnę zauważyć, że kasowanie bitów WDE i WDIE należy przeprowadzić operacją AND na zanegowanych bitach.
Witam, po przeczytaniu książki o programowaniu zabrałem się z próbę adaptacji popularnych stacji lutowniczych RL1 z Elektroniki praktycznej do własnych potrzeb. Dodałem przyciski z profilami temperaturowymi i obsługę enkodera do zmieniania temperatury, pomiar temperatury otoczenia na DS18B20 i obsługę kolby Weller WSP80 z wbudowanym czujnikiem temperatury...
Witam, jestem załamany współpracą z atmegą8A i próbą uzyskania oczekiwanego sygnału PWM. Po kilku godzinach siedzenia nad tym mam już dość i liczę już chyba tylko na waszą pomoc :cry: Po pierwsze zacznę od tego że zagadnienie wydaje się bardzo proste, zatrudniamy jeden z timerów aby odliczał od zadanej wartość A (najprościej chyba od zera) do B (np....
(at)Mag-Łoch Twoja funkcja Odbierz odczytuje i zwraca zawartość rejestru danych USART (UDR), ale to też kasuje jego zawartość i ponowny odczyt UDR nie zwróci wartości poprzednio odczytanej. Stąd też switch(UDR) nie zadziała poprawnie. Musisz więc przypisać wynik funkcji Odbierz do zmiennej tymczasowej i zastosować ją w konstrukcji switch.
Znalazłem, że na SIM800 jest to komenda AT+CMGDA="DEL ALL" więc ją wstawię do kasowania z karty wszystkich wiadomości SMS, a do odczytu będzie AT+CMGL="ALL". Przetestowałem na razie czujki w terminalu i wszystko jest OK Dodano po 3 Ok więc zauważyłem, że jak zwiększę oczekiwanie (waitms) po wysłaniu wiadomości zwrotnej na 4000 (4 sekundy) to zaczyna...
Witam!! pisze sobie program do alarmu samochodowego sterowanego z fabrycznego zamka centralnego. w emulatorze wszystko cacy w rzeczywistosci niestety nie :( klopot poleg na tym, ze uklad nie reaguje na zadne impulsy wejsciowe. podawalem nawet bezposrednio zwierajac piny procka i nic - brak reakcji... za przyklad podam programik ponizej uklad wyswietla...
i nie widzisz tu zadnego problemu? ADMUX=(0<<REFS1)|(1<<REFS0); to Vref=AVcc a na Vref powinien byc kondensator filtrujacy do masy(zasilania?) zgadza sie, jednoczesnie kasujesz wszystkie pozostale bity w tym rejestrze. ADMUX=(0<<MUX3)|(0<<MUX2)|(0... //ADC0 a tutaj pracowicie kasujesz WSZYSTKIE bity...
witam, od jakiegoś czasu walczę z dekodowanie sygnału RC5 TSOP1736 <--> PD2 (INT0) dioda nadawcza IR <--> BC516(PNP) <--> PB1 układ na 100% działa ponieważ przetestowałem go w BASCOMIe rc5send i getrc5(); działają znakomicie. pilot philips 100% rc5 - sprawdzone problem mam taki, że w terminalu dostaje przedziwne rzeczy. np. dla tego...
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...
Witam Chcąc zbudować termometr wraz z alarmem, natknąłem się na forum Elektroda o temat "Termometr wraz z alarmem do CO - Termometr opiera się na projekcie użytkownika DUCH__. W kodzie widnieje błąd program ten ma wadę, że czujniki dobiera sobie losowo (czyli piec nie zawsze będzie piecem). Czy jest możliwość naprawienia tego błędu? Ogólnie termometr...
Witam serdecznie Program ma obsługiwać pomiar napięcia i wyświetlić na wyświetlaczu Led wartość odpowiadająca do 1 do 6 oraz wartość n. Problem polega ze dla wartości 1 oraz 2 brak stabilności pracy. Napięcie jest mierzone na pinie 23 uP przez dzielnik napięcia. Moje pytanie czy jest możecie sprawdzić źródło pod katem błędy dlaczego tak się dzieje?...
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,...
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.
Niefortunnie ATmega8 ma możliwość wyłączenia RSTDISBL w trybie programowania szeregowego... Samo programowanie jestzależne od ustawionego aktualnie zegara,w największej ilości trybów pomocny jest generator zewnętrzny. Chip Erase kasuje tylko Lockbity, Fusebity pozostają bez zmian. Aby wykonać Chip Erase, niezbedne jest wejście w tryb programowania.
Witam! W związku z powyższym kodem który zamieściłeś nasunęła mi się jedna uwaga która pewnie nie rozwiąże twojego problemu w jakimkolwiek procencie, aczkolwiek powinieneś sobie z niej zdawać sprawę. Chodzi mi o kasowanie flag przerwań np. tak jak w przykładzie: TIFR|=1<<TOV1; //wyzeryj flage od przepeln Wiadome jest że aby wyzerować flagę od...
Witam. Napisałem następujące podprogramy: .EQU POCZATEK_PROGRAMU_H = 0x00 .EQU POCZATEK_PROGRAMU_L = 0x90 .EQUPROGRAM_WSK_H= $60 .EQUPROGRAM_WSK_L= $61 PROGRAMOWANIE_: CLI;blokada przerwania LDI R20, KOM_BRAK_ROZKAZU // kasowanie rozkazu LDS XH, PROGRAM_WSK_H ;pobranie aktualnego adresu wskaznika programu LDS XL, PROGRAM_WSK_L KOM_PROG_: WDR;zerowanie...
Witajcie. mam problem... void updejt_r(int y){ //... TCCR1A = _BV(WGM10) |_BV(COM1A1) ; //tu ustawiasz bit COM1A1 i kasujesz COM1B1 //... } void updejt_g(int y){ //... TCCR1A = _BV(COM1B1) |_BV(WGM10) ;//tu ustawiasz bit COM1B1 , a kasujesz COM1A1 //... } powiedzcie mi co robie źle......
Dzięki za pozdrowienia i za odpowiedź . A co do układu to jest automat do pokoju i ma sterować światłem rgb , halogenami , klawiatura umieszczona we włączniku+ dioda rgb ma sygnalizować jaka funkcja światła zostanie zmieniona , odczytać i zapisać i2c to zadanie dla attiny2313 . A atmega8 ma wyświetlać na wyświetlaczu co jest obecnie za funkcja , pobierać...
Witam. Nie wiem czy ktoś jeszcze rozgląda się w tym temacie, ale postanowiłem zapytać. Napisałem program zgodnie ze wskazówkami od Ch.M. (wielkie dzięki) i wyszło mi coś takiego jak ponieżej. Jednak mogę wysterować serwem nie do końca i zostaje mi ok 20-30 stopni do pełnego wychylenia. Z obserwacji na oscyloskopie wynika, że czas tego wychylenia to...
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 który zrobię za jakiś czas. Programowałem pożyczonym:P Schemat ideowy i montażowy zrobiony w eaglu zamieszczam w pliku kalk, w drugim pliku jest program napisany w c. układ jest...
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...
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?
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...
jak w temacie sprzęt działający z zasilaczem obudową, potrzebuje zestawu z wyswietlaczem pod ATMEGA8 Zdania rozpoczynamy wielką literą, a kończymy? Proszę to poprawić. Wpis moderacyjny dotyczy wszystkich piszących w temacie! Nie kasować wpisów moderacyjnych!
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ł...
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...
Witam, ostatnio zająłem się pisaniem stosunkowo prostej aplikacji na AVR ATmega8, potrzebnej mi na studia. Na celu miałem też trochę lepsze poznanie AVR. W czym problem : W moim programie chciałem przetestować typowe zachowanie uC, napisałem kilka prostych funkcji, włączyłem przerwania, zrobiłem pętle nieskończoną w której na moim wyświetlaczu 7 segmentowym...
Tutaj nie pisze, że muszę ustawiać TWIE w czasie wysyłania START bo jest zerowane po wyzerowaniu TWINT TWIE ma być cały czas ustawiony i tyle. Jeśli cokolwiek zapisujesz do rejestru TWCR z zamiarem obsługi na przerwaniu, to nie możesz pominąć tego bitu, bo najzwyczajniej sobie go kasujesz, czyli wyłączasz przerwanie. Nie jest prawdą, że TWIE się kasuje...
Do Jaca. Zrobiłem jak mi doradziłeś ale efekty miałem takie jak poprzednio. czyli po zaniku zasilania i resecie miałem dalej 100 a nie to co ustawiłem. problem już rozwiązałem w ten sposób, że do czystej Atmegi w grywam $regfile "m8def.dat" $crystal = 800000 Dim Hv As Byte Hv = 100 Writeeeprom Hv , 1 End następnie zmieniam fuse bits odpowiedzialny...
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);...
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...
A spróbuj to: [syntax=c] /* Program do przetwarzania sygnału z 6 sygnałów 1-2ms (do sterowania serw modelarskich) na wypełnienie PWM. kwarc 11059200Hz procesor ATMega8 Wypełnienie PWM- 0 w okolicach sygnału 1.5ms Zwiększa się od 0 do max w zakresie 1.5-2ms Zwiększa się w zakresie 1.5-2ms od 0 do max Co 20us sprawdzamy stan pinów PORTB na który są podawane...
Więc jeżeli bit EESAVE nie jest ustawiony, to czy kasuje pamięć EEPROM, nawet jeśli nie programuję EEPROMu? A jeżeli ustawię bit EESAVE, to programator nadpisuje EEPROM bez jego kasowania czy w ogóle nie dokonuje zapisu do EEPROMU? EESAVE powoduje, że polecenie chiperase nie kasuje pamięci EEPROM i nic więcej. Czyli po programowaniu to co było w niej...
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.
Witam, jestem w trakcie budowy robota. Będzie to połączenie line follower'a z robotem, którego zadaniem będzie omijanie przeszkód. Jako czujniki linii zastosowałem TCRT5000, a moduł odpowiedzialny za wykrywanie przeszkód to dwie diody IR oraz odbiornik TSOP. Częstotliwość dla diód generowana jest przez ATTiny13A. Która wysyła sygnał na piny PD2 i PD3...
Witam, jestem w trakcie budowy robota line follow'era. Mój mikrokontroler to ATmega8, za czujniki wykorzystuję zaś trzy transoptory TCRT5000. Schemat podłączenia: Każde z wyjść czujników podłączam do pinów PC5, PC4 oraz PC3 mikrokontrolera (adc5, adc4, adc3). W algorytmie wykorzystuję PWM, by sterować prędkością robota w zależności od położenia w stosunku...
Możesz zastosować ten sam algorytm, który napisałem wcześniej. Nie napiszę za Ciebie programu, ponieważ było by to dla Ciebie szkodliwe. Spróbuj wykorzystać ten pseudo kod: 1.1. Na etapie inicjalizacji układu: - konfigurujesz wejścia !INT0 oraz !INT1 jako wejścia generujące przerwania w reakcji na zbocze opadające, - timer T1 konfigurujesz do trybu...
Witam, Chciałem przeanalizować pewien program zaczerpnięty z bloga o mikrokontrolerach, podłączyłem wszystko, skompilowałem, zaprogramowałem uC i niestety nie działa on u mnie poprawnie. Problem polega na tym, że założeniem programu miała być płynna zmiana jasności LED przy użyciu PWM, u mnie natomiast diody mrugają. Domyślam się, że problem leży w...
Jak słusznie zauważył kolega BlueDraco, całe wyrażenie można uprościć: [syntax=c] ISR(TIMER2_COMP_vect) { static uint8_t Bstates = 0; // Button_States - zmienna przechowująca ostatnie 4 stany przycisku if ((Bstates = ((Bstates << 1) & 0x0F) | (!(Key_PIN & _Key))) == 1) { Key_Pressed = 1; } } [/syntax] Timer zgłasza przerwanie co 10ms i...
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:
Witam Robie PWM ( tryb 14 -atmega8) jego sterowanie odbywa sie za pomocą 16 bitowego rejestru ICR1 który to odpowiada za uzyskaną częstotliwość na wyjściu OCR1A (PB1) . Jezeli do rejestru ICR1 przypisuje stała wartość to wszystko jest ok, dioda poprawnie swieci, wynik na lcd jest OK. W momencie kiedy rejestr ICR1 zależy od adc1 to wtedy wyswietlacz...
Witajcie, Potrzebuję konfiguracji timera 1 dla atmega8 aby wykonywał funkcję z częstotliwością ~244Hz (zegar 16MHz i preskaler 2^16) . Chciałbym uniknąć używania dodatkowych bibliotek. Będę wdzięczny za przykładowy kod :) jakąś Przy okazji; jeśli użyję do tego celu timera 1, mogę równocześnie używać wyjść OC1A oraz OC1B jako zwykłe wyjścia I/O? Timer1...
niezależnie kiedy odczyta powinno wyzwolić w jednym i tym samym momencie czyli na sygnał pochodządy z int Pod warunkiem, że flaga przerwania od Int0 nie jest ustawiona, w przeciwnym przypadku wykona się natychmiast. Nie wiem czy taka konstrukcja: disable int1 --->wyłącz przerwanie end if Return ---> rzeczywiście wykonuje się RETI, które kasuje flagę...
Witam wszystkich Na wstepnie o tym co zrobilem...Zmontowalem ukladzik do zdalnej rejestracji temp, tzn. do Atmega8 podlaczylem 2 czujnik DS18B20 i siemensa s55...na sms'a o okreslonej tresci, pobierana jest temp. i wysylana nadawcy sms'a.... Uporalem sie z czujnikami i teraz siedze nad komunikcja z siemensem... Mam to zrobione na razie tak, ze kazdy...
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.
Programuje i kasuje... Niezle... Ja podpialem w bardzo podobny sposob piny... I 3 ATMega8 poszly... I nie wroca... Ale jak sie programuje, to na 95% powinno chodzic...
No to mam juz jakis podstawowy kod do pomiaru predkosci :) mam multipleksa NIE WIEM CZY DOBRZE ZADEKLAROWALEM PORTY - prosze o sprawdzenie czy ilosc cyferek sie zgadza i czy prawidlowo "pominalem" bity kwarcu (portB) resetu (PortC) i timer'a (portD) - wystarczy tam dac zera (wejscia) i juz?? no i potem jak deklaruje ktore maja byc w jakich stanach to...
a moze to tamto coś z tamtego czegoś?? Człowieku czy my jesteśmy jasnowidzami czym i jak zapisujesz?? Kasowałeś??
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
Chce zrobić wzmacniacz sterowany cyfrowo. W programie uC będzie obsługa procesora audio przez I2C oraz wyświetlacza. Wymyśliłem sobie, że aktualne ustawienia (głośność itp) będe przechowywał w zmiennych globalnych. Całość ma działać mniej więcej tak: przychodzi przerwanie z pilota lub przycisków wzmacniacza, w obsłudze przerwania aktualizuje np wartość...
Ta i nie zapomnij skasować flagi twi jak kończysz przerwanie - sama sie nie kasuje a potem nie bedziesz sie zastanawial dlaczego nie działa chociaż z noty wynika ze musi.
Chip Erase kasuje tylko pamieć flash i eeprom a nie fuses które można tylko odczytać lub wpisać nowe. Pozdr. N.
W kwestii BASCOM-a to Ci nie pomogę bo piszę tylko w asm i czasmi w C dla procków AVR, 51, DSP z TI. Jednak nie trzymaj się kurczowo zasady, że init LCD ma być jedną z pierwszych procedur po restarcie procka. Nawet lepiej by było gdybyś na poczatku zainicjował inne urządzenia a LCD na końcu. Ten typ ma jeszcze długi "czas podnoszenia się" po podaniu...
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.
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ę.
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...
Witam Podziele się swoimi spostrzeżeniami odnośnie ATmega8 w wersji SMD i DIP Zrobiłem prosty układ zczytujący napięcia z przetworników i generujący PWM. Wszystko ganiało jak trzeba na ATmedze 32 ale nie było mi potrzebne tyle 1/0 więc postanowiłem zminimalizować projekt. Przesiadłem sie na ATmega8 i zaczęły sie problemy. Zmontowałem chyba z 8 układów...
Jeżeli programujesz w Bascomie, to możesz wykożystać pamięć EEprom. Obsługa jest śmiesznie prosta. komenda: writeeeprom B , 1 zapisuje zmienną B pod adresem 1. Aby odczytać piszesz readeeprom B , 1. Poczytaj w helpie, napewno coś znajdziesz. W Atmedze8 jest 512B tej pamięci, na kilka zmiennych starczy. Trwałość to 100 000 zapisów/kasowań, z tego powodu...
Co do kasowania przez wpisywanie jedynki - to jest jak najbardziej poprawne: 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. Może lepiej przeanalizuj jakieś gotowce z sieci, co by zobaczyć jak...
Tak też zrobiłem. Kod wygląda tak $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1 = Timer , Prescale = 256 Config Timer0 = Counter , Edge = Falling Deflcdchar 1 , 2 , 4 , 14 , 16 , 16 , 17 , 14 , 32 ' replace ? with number (0-7) Deflcdchar 0 , 2 , 4 , 14 , 16 , 14 ,...
Witam Serdecznie Proszę o pomoc. Staram się zrobić pomiar temperatury na DS18B20 z wykorzystaniem LCD na HD44780 (docelowo pomiar na 3 dallasach). Mam atmege48 z kwarcem 11,059MHz. Mam też dobrze zrobionego delay'a (przynajmniej tak mi się wydaje). Dopiero rozpoczynam przygodę microcontrolerami i co krok napotykam jakić problem, dodatkowo słabo znam...
Acha. Czyli w największym skrucie wpisanie jedynki skasuje bit a wpisanie zera nie ustawi go więc nic się nie zmieni. Bo inaczej wpisywanie wartości 10000000 powodowało by kasowanie jednego przerwania, ale ustawianie drugiego, a mi trzeba tylko skasować jedno, a drugiego nie zmieniać. Wielkie dzięki!!! PS. To akurat nie wyjaśnia dlaczgo kasuje sie przerwanie...
Jeżeli masz watchdog ustawiony na stałe a brak w programie jego kasowania to tu może być przyczyna. Pzdr. N.