Znajdź powyższą sekwencję w pliku *.lss i policz rozkazy...
Stricte wskaźników nie ma. Ale funkcja to tymczasowa zmienna, którą przekazany zostanie wynik jej działania. Jej adres znajduje się na stosie wskazywanym przez rejestr Y z przesunięciem zależnym od ilości parametrów (jest odkładany najwcześniej, potem kolejne paramtery) a jej zawartość znajduje się w obszarze Frame Space. Tak więc wewnętrznie jest pewna...
Kupie sobie ATMega8. Funkcjonalności nie chce. Chce tylko sie nauczyć programować mikrokontrolery. Teraz bym tylko prosił o jakieś teksty w internecie z podstawowymi rejestrami i rozkazami w ATMega8 ale po polsku. Mój angielski nie jest zbyt dobry i nie moge sie zabardzo połapać w dokumentacji.
Witam, Błąd polega na tym że, wysyłasz ramkę w postaci: CS=0 Rozkaz CS=1 CS=0 Dana CS=1 a powinna być sekwencja CS=0 Rozkaz Dana CS=1. Patrz rysunek 5.1 z dokumentacji układu. W twoim przypadku układ traktuje jakbyś wysyłał dwa razy rozkaz a nie rozkaz + dana. Najlepiej przenieś sterowanie sygnałem CS poza funkcję spi_transmit8. Pozdrawiam JarekC
r0-r15 nie możesz używać między innymi z rozkazami w których są "wartości natychmiastowe", czyli immediate. To wszystkie rozkazy z "i", np. cpi, ldi ... Po dokładne informacje odsyłam do referencji atmela z dokładnymi rozkazami asemblera.
1. Makro "bit_is_set" jest zdefiniowane w pliku nagłówkowym sfr_defs.h. Sprawdza ono czy dany bit w rejestrze mikrokontrolera jest ustawiony. Nie koniecznie musi to być pin (nóżka). Polecam wpisanie w goolach "avr bit_is_set" - w pierwszym czy drugim linku znajdziesz kod tego makra i dokładny opis wspomnianego pliku nagłówkowego. 2. Literówka. Powinno...
W przerwaniu nie powinno być funkcji obsługi LCD. Obsługę LCD daj do pętli głównej, bo inaczej będziesz miał problemy z przerwaniem. Jeżeli masz w buforze więcej rozkazów niż tylko RING, to strcmp ci nic nie da, bo funkcja ta porównuje dwa łańcuchy. Ale jeżeli w buforze bedzie zawsze tylko jeden rozkaz to możesz tak zrobić i wtedy nie potrzeba nawet...
Witam macie jakiś pomysł jak zmusić kompilator aby kompilował te instrukcje z wykorzystaniem rozkazów sbi/cbi ? Niestety rozkazy CBI i SBI działają tylko na stałych. Ja również muszę robić to na zmiennych.
Witam ! Oto program napisany w Bascom AVR na ATtiny2313. Myślę zę sobie poradzisz ze zmianą na Megę8. Odczytuje on Adres i Rozkaz kodu Rc5 i wyświetla na wyświetlaczu LCD. $regfile = "attiny2313.dat" $crystal = 10000000 Config Lcdpin = Pin , Db7 = Pb.2 , Db6 = Pb.3 , Db5 = Pb.4 , Db4 = Pb.5 , E = Pb.6 , Rs = Pb.7 'Config Lcd = 16 * 1a Config...
Jeśli pilot, to potrzebny sterownik reagujący na jego rozkazy. Polecam Atmega8, jest sporo gotowego oprogramowania i gotowe płytki do samodzielnego montażu. Niektóre mają już przykładowe oprogramowanie, a pilota możesz użyć od dowolnego sprzętu. Wszystko zależy od tego, czy chcesz mieć gotowca, czy przy okazji poznać możliwości procesorów. Wpisz hasło...
Witaj! Nie musisz pisać deklaracji .DW. Możesz pisać deklaracje .DB. musisz pamiętać że Flash kontrolera to 2 bajty poj jednym adresem. Zapraszam do lektury http://www.atmel.com/dyn/resources/prod_... http://www.atmel.com/dyn/resources/prod_... Nie ważne jakiego kompilatora uzywasz gdyż jest dla danej rodziny kontrolerów...
No tylko chyba niepotrzebny ten kondensator na RESET do masy? Atmegi mają przecież wewnętrzny reset (POR) którego parametry (czas) po włączeniu napiecia ustawiane są fusami (ja daje tylko R 1 - 10K do +). Dodatkowo mozna wykorzystać BOR (zabezpiecza np. eeprom przed skutkami przypadkowych rozkazów po wyłączeniu).
Asmox, sprawdź opis rozkazu brge, bo ja widzę, że on wykonuje skok, gdy wynik porównania wartości całkowitych jest nieujemny, czyli signed w opisie). Najlepiej pasuje tutaj BRNE - branch if not equal.
KKobi może czas na jakąś książkę? .db to "data byte" Alternatywy np. .dw? Dane do tablicy? Oczywiście mówisz o RAMie, nie o FLASHu... No i oczywiście ładujesz adres do jakiegoś rej. indexowego, a potem używasz odpowiedniego rozkazu;-) np.st / std
Cze, masz jakis patent na programową zmianę fusebits w ATmega8 przez program obsługiwanego procesora? Czy to jest ten nieznany mi rozkaz BZDURA w asemblerze? Próbowałem w Studio ale kompilator wywala mi ERROR? Co robić w tej sytuacji? Podaj proszę więcej szczegółów, może składnia rozkazu niekompletna? Pzdr. N.
Masz dwie rzeczy do poprawienia 1. konwersję wartości, 2x za duża wychodzi, powinna być 85*C 2. timingi, po wysłaniu rozkazu ConverT trzeba wstawić opóźnienie
... Za pomocą rozkazu np ST używając adresu dla rejestru UBRR0H, wyszczególnionego w ATmega88PA Summary? Dokładnie :D Wszystkie rejestry powyżej 0x3F(0x5F), należy traktować jak przestrzeń DATA.
Ciężko mi uwierzyć że na ATMega8 działa to wolniej. Powinno działać szybciej bo ATMega8 ma kilka dodatkowych rozkazów w stosunku to ATTiny2313 (mul, muls itd.) które na pewno przyspieszyły by niektóre obliczenia. Na pewno dokładnie ten sam program wrzucasz na ATTiny2313 i na ATMega8 (oczywiście po zmianie portów i przekompilowaniu programu)?
Nie jest to żadnym problemem, gdyż urządzenie slave odpowiada na polecenia wyłącznie po wcześniejszym wybraniu. A nawet jak się nie wybierze urządzenia (SkipROM) to urządzenie nie odpowie na rozkaz którego nie rozumie.
// włączam TWI //TWCR |= (1<<TWEN); <---- TWEN włączam w poszczególnych rozkazach np, TWI_START() <--- to !!!
program sterujacy 8 urzadzeniami o roznych standardach zajmuje około 2500 bajtow wiec chyba najlepsza bedzie do tego Atmega8, wyprowadzenie sygnalu oczywiscie na jeden pin.
Tak. Może być i w wysokim poziomie, ale takie będzie o wiele szybsze a w dodatku zajmie mniej miejsca a nie chciałem Ci zajmować swoimi poprawkami całego FLASHa w procku. In R16, Wyswietlacz1 '<-- R16 = PortD andi R16, &B00001111 '<-- R16 = R16 And &B00001111 Lds R17, {Wyswietlacz1_2} '<-- R17 = Wyswietlacz1_2 !or R16, R17...
Sorki ze staralem sie pomoc. A tak nawiasem mowiac spotkalmen sie nawet z procesorem Atmeg8 ktory nie wykonywal jednego rozkazu z listy. Dwa dni w plecy:))
Witam... W zwiazku z tym, ze moja poprzednia wypowiedz zostala usunieta z tej dyskusji (z przyczyn wiadomych) uznalem, ze napisze "sprostowanie".... McRancor - dziekuje za wyjasnienie tej kwestii... Jesli chodzi o pozycje ksiazkowe to polecam obie... W pierwszej zawarto sporo przykladow w C, ale szczegolowo opisano tez rozkazy asemblera. Przyklady dotycza...
chodzi o to że jeżeli podczas czekania w głównej pętli programu wystąpi przerwanie zaraz za rozkazem zmieniającym flagi to po powrocie mogą one być zmienione i niezależnie od wyniku porównania program może "pójść" gdzie indziej. Dlatego dobrze jest zadbać o to żeby takich sytuacji nie było, czyli na przykład: in r16,SREG pushr16 i na koniec pop r16...
Zobacz w Helpie Bascoma, rozkaz DEBOUNCE Px.y , state , label [ , SUB] w szczególnie Config Debonuce
Nie kombinuj z 1200 tylko kup 2313 (na Allegro poniżej 10 zł). Nie da się programu pisanego dla 1200 uruchomić na 2313 i na odwrót. Inna organizacja stosu, inna lista rozkazów itd.
Kod źródłowy dał do zrozumienia, ze w swoim kodzie popełniłem kilka błędów, dlatego wydawał się miejscami bez sensu. Okazuje się, że problem jest zupełnie gdzie indziej. Z załączonego pliku usunąłem cały kod pozostawiając tylko RET, a resztę zamieniłem na NOP. Części niebędące programem zostawiłem jak są, bo i tak nie mają znaczenia. W efekcie tych...
Doradzam zerknąć w kierunku procków AVR np. ATMEGA8. Cała architektóra systemu mikroprocesorowego w jednej kostce programowanej w układzie. Naprawdę poręczne !
Proszę o pomoc, kompilator pisze: undefindet symbol..... np przy rozkazach sdi, cdi, TIFR=1<<TOV0 nie dodałem jakiejs biblioteki czy co ?? co robić, jak pisze prosty programik np zapal leda czy czytaj port to dziala, ale uzywajac rozkazów : zmienna=PIND, PORTD.2=1 PORTD=0x0d do tego jeszcze nie mogę tez napisać tak nie wiem czemu i- zmienna funkcji...
Witam Cena ATmega8 to około 4zł. ATmegi są szybsze od PICów 2-4 razy, wykonują większość rozkazów w jednym cyklu zegara systemowego a PICe potrzebują 4 cykle, więc na PICu uzyskasz trochę mniejsze transmisje. Rozwiązałem problem zasilania stosując klucze 4066, schemat możesz znaleźć tu: http://www.elektroda.pl/rtvforum/topic68...
Jest to chyba ten sam rozkaz, co odczyt flagi zajętości, bity od 0 do 6 są adresem kursora... Warunkiem jest chyba, aby ostatnim wyborem adresu był RAM od danych wyświetlania, a nie od definicji znaków. Innym rozwiązaniem jest wyliczanie adresu bezpośrednio w procedurze wysyłającej.
BOOTRST <- a co z tym? i innymi fusebitami jak np WDTON? W Pony Prog nie zaznaczony, pozostałe także nie z wyjątkiem SPIEN. CLI ma tam być, to jest część returna. Faktycznie debuger nie dochodzi do tego rozkazu, więc problem nadal nie rozwiązany.
Witam Mam takie pytanie, jest zrealizowany procesor, zgodny z listą rozkazów AVR (dokładnie z atmega8), w sumie zgodny tez z programatorem na SPI, tylko ze posiada 64kB RAM i 64k x 16b pamięci na program. Jest jakiś sposób żeby dodać taki układ do bibliotek WinAVR tak żeby kompilator uwzględnił przy kompilacji że układ ma takie zasoby do wykorzystania?...
Hmmm.... niepotrzebnie komplikujesz proste zadanie :D "Rozgryź" coś takiego: //przed zapisem rozkazu RS=0 , znaku RS=1 , a R/W jest na GND void write_byte(unsigned char nb) { unsigned char rb=0,x; //odwracamy kolejność bitów i oczywiście półbajtów ;-) for(x=0;x<8;x++) { rb>>=1; rb|=(nb & 0x80); nb<<=1;...
Problem dla mnie pojawił się ze zrozumieniem wektorów przerwań które obsługują timer1. W dokumentacji jest tabela na stronie 46 W czym problem? Jak korzystasz z przerwania np. Timer/Counter1 Compare Match A czyli przerwanie w momencie gdy zawartość licznika (TCNT1) zgadza się z tym co wpisałeś do OCR1A to jeśli wcześniej w TIMSK ustawisz odpowiedzialny...
Witam. Najpierw wysyłasz rozkaz pomiaru temperatury, później z pomocą timera lub nawet zmiennej zwiększanej w pętli odliczasz czas pomiaru lub większy (mikroprocesor w międzyczasie normalnie wykonuje program). Po tym odczytujesz wynik pomiaru z DS1820, co nie trwa zbyt długo. Pozdrawiam. EDIT: Uzupełniłem posta
Do atmegi chyba najłatwiejszy jest język Bascom. Ściągasz do niego kompilator BASCOM AVR, robisz programator i tworzysz swoje własne projekty. Gdzieś posiadam polskiego Help'a do tego programu i powiem szczerze, że z niego samego można się wiele nauczyć bo do każdego rozkazu jest jego przykład użycia...
Oczywiście tak prościej jest z kodem w C, ale jezeli mikrokontroler nie ma dzielenia w liście rozkazów to na jedno wyjdzie, a kod wynikowy będzie bardziej skomplikowany.
A ma może ktoś prosty program w Bascomie na ATmega8 i tsa6057 który zaraz po załaczeniu zasilania wyśle do syntezy rozkaz ustawienia np 88,4MHz bez zabawy z przyciskami i LCD... ewentualnie jeszcze kontrola diodą Led o prawidłowym przesłaniu danych
A wysatarczyło przed wykonaie prawdopodobnie wstawic rozkaz SEI i czy to bedzie w przerwaniu czy w programie głownym nie ma znaczenia
Pomoże Ci mój mały projekcik na szybko: http://www.elektroda.pl/rtvforum/topic28... Napisałem tam dekoder rozkazów w bliźniaczym standardzie. Dekoder jest w plikach ir.c oraz ir.h Używany też jest timer (inicjalizacja w main). Program do super eleganckich nie należy gdyż nie korzysta on ze sprzętowego przerwania (akurat nie miałem na płytce wyprowadzonych...
A masz możliwość sprawdzenia czy są wysyłane rozkazy do LCD : oscyloskop , analizator inne paści (dioda LED i zmniejszenie szybkości procka + zwolnienie szybkości pętli )
. Język BASCOM BASIC oferuje wiele instrukcji obsługujacych wyświetlacz LCD. Aby jednak mieć całkowitą kontrolę nad wyświetlaczem można stosować procedury w języku asembler. Poniżej znajduje się przykład: $asm Ldi _temp1, 5 'załadowanie kodu rozkazu do R24 Rcall _Lcd_control 'prześlemy do LCD jako komendę Ldi _temp1, 65 'załadowanie do R24 kodu znaku...
Witam , mam zamiar sterować silnikiem krokowym unipolarnym STP-58D307-01 przez usb z użyciem krańcówek które będą pełnić czujniki indukcyjne firmy Telemecanique. Rozrysowałem schemat .FTDI ma wysyłać rozkazy do atmega8 a ona na silnik. Użyłem mosfetów IRFP450(nie kierować się schematem)bo akurat takie mam pod ręką. Diody wstawione zaporowo to MBR2060CT...
Ja osobiście nie mam problemów z przenaszalnością kodu w firmowym asemblerze Atmela, nawet pomiędzy różnymi wersjami rdzenia, gdyż są w nim wbudowane definicje pozwalającej na asemblację warunkową. Przykład - instrukcja lpm , zamiast której używam następujące makro: .macro LpmPlus #if ((__CORE_VERSION__==V2E)|...
Cześć. Dziękuję za wasze odpowiedzi. Udało mi się poprawnie już komunikować i migam diodą sobie. Teraz chciałem przekazać całą instrukcje - tj. adres, po czym rozkaz, ilość parametrów wejściowych, ilość wyjściowych i potem n parametrów wejściowych, czyli pewnie będzie to kilka to kilkunastu bajtów. W odpowiedzi, chciałem dać status czy się udało + ew....
To znaczy że masz coś źle z zależnościami czasowymi, prawdopodobnie masz źle ustawione fuse bity i taktujesz procesor RC wewnętrznym lub bit DiV8 masz źle ustawiony. Na mojej płytce ten hex przy 8MHz kwarcu działa i czyta komendy. Jeśli nasz adres 255 i kom 127 to znaczy właśnie że Getrc5 działa, ale rozkazy nie są właściwie odczytywane, tak się dzieje...
Nie jest dobrze. Przy takim zapisie masz skonfigurowane jedynie wejście na końcówce C.1 co ustawiłeś rozkazem Config pinC.1 = Input Powinieneś mieć jeszcze jedno wejście jeśli piszesz: "mamy dwa sygnaly z silnika 1. sygnal zaplonu ( 4 impulsy na cykl pracy) 2 sygnal pierwszego cylindra ( jeden impuls na cykl pracy , pomiedzy impulsami zaplonu) program...
Możnaby wysyłać dane do AVR przez UART, a AVR zapisywałby to sobie w EEPROMie i tylko wystawiał komunikaty potwierdzeń. Inna możliwość to zastosowanie bootloadera, z tym, że nie bawiłem się tym jeszcze i nie wiem czy jest możliwość zmiany określonego obszaru w pamięci flash, czy trzeba załadować cały program. ATmega8 na przykład ma też rozkaz spm (store...
Wykorzystanie rejestrów opisane jest w dokumentacji AVR-GCC. R1 to rejestr zerowy który wg standardu zawsze ma mieć wartość 0. GCC zmienną zawsze umieszcza w RAM. Rejestry służą do innych celów. Te ostatnie 2 rozkazy to nieskończona pętla. Zabezpieczenie przed pójściem softu tam gdzie nie powinien ;p.
Nie znam się na assemblerze ale komunikat głosi, że ta instrukcja jest nie dostępna na AT90S8515 http://www.avrfreaks.net/index.php?name=...
Wielkie dzięki:) Pomogło! Ten rozkaz to był reset, a w nocie tego protokołu napisali, że wystarczy odpowiedzieć bajtem ACK. Dla pewności dodałem drugi bajt 0xAA, i zadziałało. Ta stronka, którą podałeś też się przydała, jest tak kilka rozkazów, o których nie wiedziałem, a są potrzebne. Teraz już śmiga bez problemu:) Jeszcze raz dzięki, Pozdrawiam!
Ja mówię o różnicach w ASM. Tych swoją drogą pomiędzy ATMega8 a 88 nie ma za dużo (w sumie nie widzę żadnych ale nie przyglądałem się specjalnie). A gdyby nawet były to rozwiązuje je kompilator C. Tak jak np. rozwiązuje brak rozkazów mnożenia w mikrokontrolerach ATTiny. Albo różnice w dostępie do rejestrów SFR poprzez STR albo OUT. Kod w C wygląda tak...
Oczywiście, masz rację. Można ustawiać całe porty razem lub każdy bit po kolei. Ja tylko miałem wątpliwości (i nadal mam), czy kompilator poprawnie rozumie ten zapis: #define DIR_MOSI DDRB.3 #define d_OUTPUT 1 void SPI_MasterInit() { DIR_MOSI = d_OUTPUT; } i wygeneruje rozkazy do ustawiania odpowiedniego bitu w porcie. Pozdrawiam
Patrzylem na swoj program pilota uniwersalnego w którym stosuje power down i tam oprocz ustawienia wybudzania ma jeszcze ustawione aktywne przerwanie zewnetrzne i oczywiscie napisaną obsluge przerwania. Dodano po 2 moze zamiast zerowac pojedynczy bit w MCUCR wpisz cała wartosc do tego rejestru, gdyz nie widze gdzie ustawiasz ISC11, a jezeli zakladasz...
Napisane na szybko nie sprawdzałem ale chyba powinno działać. [syntax=basic4gl] $regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) '*************************************WA... 'Pamiętać o podłączeniu...
Witam. Kolego pawel26021995 do wyjścia z pętli while() {..} powinieneś zastosować rozkaz break a nie continue .
Nie znam działania programatora HV ani jego sposobu programowania więc ciężko mi stwierdzić co jest nie tak z kodem od strony funkcyjnej. Podeślij jakiś link dot. działania tego programatora to zobaczymy co dalej. A co do samego sposobu pisania to masz kilka kwiatków w kodzie które nie są mistrzostwem w programowaniu: ldi r29,0b01000000 a to co Ty wpisałeś...
No to jak mówia starzy pijacy na drugą nóżkę. Czyli zdublować rozkazy i spiąć dwie nózki razem. Ale widze za kolege to trzeba również przetrawić i wydalić.
Dlaczego komentarze w twoim przypadku są konieczne to wyjaśniałem wyżej, ale powtórze prościej. Musisz skomentować każdą linię tak aby czytający wiedział co kazdy rozkaz ma zrobić według cebie a czytający dopiero skontroluje czy to prawda.
Witam AvrStudio do pobrania http://www.atmel.com/dyn/products/tools_... Pozdrawiam
[syntax=c]void czysc_LCD(void){ PORT_LCD |= (1<<EN_LCD); //sygnalizujemy wazny transfer danych PORT_LCD &= ~(1<<RS_LCD); //zerujemy RS (rozkaz)[/syntax] Mówisz o tej linijce ? Już poprawiłem ale dalej jest ten sam problem
No nie do końca :) ponieważ to zależy czy te rozkazy będą przed czy po : I wklej cały kod po zmianach.
ale LCD pod I2C to nie dość , że przeważnie rozkazy są zgodne z HD44780 to jeszcze musisz opanować komunikację po magistrali I2C. Czyli dwa tematy na raz. A to źle?
Jaki skok do 0x00 ? jaki skok do miejsca w którym przerwanie nastąpiło ? ;) A po co ci rozkaz RETI ???? to on robi za ciebie wszystko co potrzeba czyli wraca dokładnie do miejsca w kodzie programu gdzie został on przerwany.
Paweł Es. < Czy tak długa instrukcja w ISR(TIMER1_COMPA_vect) nie sprawi, że czas jej wykonania wydłuży się? Ciekawy pomysł z tą pętlą co minute. Akurat to wydłużenie nic nie czyni złego, bo ten fragment programu jest wywoływany raz na sekundę czyli co czas wielokrotnie dłuższy niż czas wykonania nawet pełnej sekwencji rozkazów (o 23:59:59)
Z tym LPM to różnie bywa. Samo LPM bez parametru zadziała na pewno i kompilator też przyjmie. Nowe LPM z dowolnym rejestrem to dobra sprawa ale ja z tego nie korzystam, nie chcę niespodzianek. ??????? OMG!!! Sugerujesz że Atmel tak sobie powrzucał rozkazy na listę nie sprawdzając ich działania? Zalecam na wszelki wypadek nie korzystać z większej liczby...
A gdzie rozwijać wiedzę na te tematy poza czytaniem bibliotek? W dokumentacji procesora. Ilości bitów na szynach (strzałkach) można się zazwyczaj domyślać choć czasem opis architektury w dokumentacji podaje takie informacje. Dokumentacja zawiera także spis rozkazów wraz z ich kodami i opisem co robi każdy z nich. Często nie jest to jeden dokument PDF...
chwila , chwila akcja przypisana do przycisku (buttona) wykonuje się dopiero w momencie puszczenia go... właśnie to sprawdziłem. Pomysł TZOK-a jest najlepszy, bo znacznie ułatwia zaprogramowanie tez mikrokontrolera. Za pomocą onClick można poradzic sobie z przesłaniem rozkazu do wykonania czynności, ale za pomocą czego można przypisać akcję resetu dla...
Witam To może odnośnie ilości pamięci programu w Atmega8. Tak właściwie, to ten mikrokontroler ma 8[Kb] pamięci programu :D. Ile zajmuje jeden rozkaz nie świadczy o wielkości pamięci w [Kb]. Sorry za off topic, ale jeżeli tak nie jest, to proszę mnie poprawić (zawsze chętnie się dowiem czegoś nowego). :D Pozdrawiam Sanwa
Są jeszcze rozkazy Asemblera: ROL - przesuniecie bitu w lewo ROR - przesuniecie bitu w prawo STS - bezpośrednie załadowanie danej do rejestru
A więc. Chciałbym zauważyć że ja chciałem uzyskać pomoc w wyjaśnieniu komend lub bezpośrednią odpowiedz jak mam zrobić i czy da się tak zrobić aby µC zapamiętał zmienną odczytaną z wejścia jako jakąś liczbę. Z tego co widzicie nie dostałem żadnej odp na ten temat. Dlaczego ATmega8 i Attiny2313? może dlatego że dostane je gratis z programatorem...
Czysto informacyjnie - licznik domyślnie liczy w górę, stad odejmowanie wartości CTC(właściwa wartość do odliczenia przez licznik) od 65535. PS: LordBlick czyli w końcu twierdzisz (nie używam CTC),że powinna być wartość 49910? Nie twierdzę nic w tej kwestii, ponieważ obsługa tego przerwania w Bascom nie jest dokładna i nie nadaje się do odliczania sekund...
Dla mnie przesiadka z 8051 na AVR było czystą przyjemnością, można by rzec rozwinąłem skrzydła. Te ciągłe przepisywanie danych z pamięci do akumulatora i na odwrót bardzo mi zbrzydły, ale niektórych rozkazów mi brak :cry: . Jak autor tematu określi dokładnie co mu jest potrzebne to na pewno uda się wspólnymi siłami rozwiązać problem.
Nic samo nie przyjdzie, poszukaj w sieci jakiegoś przykładu i zacznij studiować z notą katalogową procesorka (zawiera listę rozkazów) "co autor miał na myśli"... ;) Jeśli chcesz obsługiwać I²C to zainteresuj się TWI, oczywiście opisy I²C wymienione w FAQ masz przeczytane ?
Polecam przeczytać choćby pobieżnie dokumentację do T6963 - np. [url=http://www.lcd-module.de/eng/pdf/zu... (strona 25. w szczególności), a później poszukać biblioteki do jego obsługi i dołączyć ją do programu. Dopóki nie zainicjujesz sterownika, to nic nie wyświetli. W Twoim programie jest tylko przygotowanie portów uC, a przecież...
Tak jak kolega wyżej napisał. Po uśpieniu procesor już nic nie robi i nie wykonuje żadnych rozkazów. Są jednak zdarzenia opisane we wspomnianej tabelce (Table 14) które ten procesor mogą wybudzić. W Twoim przypadku po prostu nastąpiło takie zdarzenie - przerwanie od zegara T2, które nastąpiło ułamek sekundy po tym jak procesor uśpiłeś i go wybudziło...
Programator to atmega8 + trzy zatrzaski 74hc574 (aby procesorowi starczyło wyjść). Do tego gniazdo ZIF aby ułatwić wkładanie i wyjmowanie pamięci. Do tego zaprojektowany przezemnie protokół przesyłu danych - pc wysyła do mikrokontrolera po r232 paczki danych (po 255 bajtów każda) z sumą kontrolną. Jeśli suma się nie zgadza - atmega żąda przesłania paczki...
Jeśli już, to nie trzy stronicowa tabelka zbiorcza, tylko pełna dokumentacja: Atmel AVR 8-bit Instruction Set Przepraszam, nie wszystkie mikro konrolery posiadają takie rejestry jak RAMPZ , RAMPY itd. W temacie jest mowa o ATmega8 , więc piszę jedynie o tym typie MK. Sugerujesz uczyć się assemblera bez szczegółowej dokumentacji, dając jedynie 3 strony...
Wywal oba wewnętrzne rozkazy do loop, bo się na nich zatrzymuje gdy masz wciśniety klawisz, chyba dlatego mryga. A tak, doda lub odejmie wartość i pętla główna leci dalej... Niepotrzebne będą goto.
1. Nie, trzeba jeszcze ograniczyć działanie instrulcji LPM. Te bity zabezpieczają tylko CPU przed odczytem pamięci przez interfejsy programowania (ISP, parallel). 2. Nie. Instnieje teoretyczna możliwość wgrania kodu, który odczyta pamięć i wyśle jej zawartość. Ale to oczywiście wymagałoby użycia bootloadera, gdyż dalsze programowanie przez ISP będzie...
a może w podprogramie wywoływanym przy pomocy któregoś z timerów? Tak nie wolno robić, bo nawet jak się procesor zapętli to przerwania będą wykonywane i całość straci sens. Bo jeśli umieścimy reset Watchdog w miejscu gdzie program się zapętlił to okaże się że mimo błędu procek się nie zrestartuje. Niestety trzeba podejść do tego zdroworozsądkowo, czasem...
Jak dla mnie to powstanie rozbudowany kompilator asm z builderem i będzie szybko pisane i szybko działać :P. Składni ani rozkazów asemblera nie trzeba się uczyć na pamięć, wystarczy mieć pod nosem je wydrukowane, dla np. ATmega8 to raptem 2.1 strony z pdf-a... Aż tyle wiedzy wejdzie samo już po pierwszym programie.
Do tego co napisał tadzik85 zauważ, że wszystkie rozkazy skoku wskazują na __bad_interrupt , który wygląda np. tak: [syntax=asm]00000036 <__bad_interrupt>: 36:e4 cf rjmp.-56 ; 0x0 <__vectors>[/syntax] a jak to działa zrozumiesz analizując swój plik lss.
Thx Light-I, twoja wersja działa, mam tylko pytanie dlaczego moja nie działa? Bo brak Tobie cierpliwości... Jeśli chcesz pisać w asemblerze, to przede wszystkim obowiązkową lekturą jest nota katalogowa : http://www.atmel.com/dyn/resources/prod_... Jak już się zapoznasz, to możemy kontynuować... Skoro mój program działa, to się wysil...
Ale to właśnie jest komplikowanie sobie życia! Nie wykorzystujesz podstawowej cechy 1-wire, mianowicie możliwości swobodnej komunikacji przy wykorzystaniu tylko jednej linii portu uC. Gratis masz kontrolę numerów układów, ich ilości, stanu itp. Programując "po okrężnej" wolniej rozwijasz swoje umiejętności! DS18B20 mają unikalny, 64 bitowy numer ID...
Nie będę używał pamięci ani przerwań, wszystko musi zmieścić się w rejestrach. Po odebraniu 9 bitów z RS będę sprawdzał ten 9 i gdy będzie ustawiony to znaczy że pierwszy PWM (taka synchronizacja). Zapisywać do rejestrów będę za pomocą rozkazu st Z+,Rodebrany. W rejestrze Z będzie adres dolnych rejestrów. Może jeszcze coś wymyślę żeby przyspieszyć pętlę.
Z tego co mi wiadomo nie ma takiej możliwości bo nie ma takiego rozkazu w asemblerze AVR. Też kiedyś z tym walczyłem i ostatecznie wymyśliłem rozwiązanie sprzętowe polegające na podłączeniu pinu reset do jakiegoś innego pinu procesora :)
witam wiem ze juz duzo bylo na ten temat jednak tego co mnie interesuje nie znalazlem, mianowicie chce podlaczyc cc1000 atmege8535L (wiem ze to moge zasilac napieciem 3,3V), jednak chce jeszcze podlaczyc wyswietlacz lcd (2x16) i max232 i teraz pytanie. czy moge podlaczyc zasilanie wyswietlacza do 3,3V (czy to bedzie dzialac), ewentualnie zasilanie do...
Zamierzam zrobić coś w rodzaju systemu sterowania i akwizycji danych (termometry, przepływomierze, elektrozawory). Mam taki pomysł, żeby urządzenia podpinać do serca układu (Atmega8) przez I2C. Procek musi mieć możliwość wysłania rozkazów do odpowiedniego urządzenia i pobierania danych z urządzeń pomiarowych. Osobiście wolałbym jednak zrezygnować z...
Jasne. Ale robi to tak (fragment pliku *.lst) : SIGNAL(SIG_INTERRUPT0) {//-AUX_RD : patrz schemat!!! 82:1f 92 pushr1 84:0f 92 pushr0 86:0f b6 inr0, 0x3f; 63 88:0f 92 pushr0 8a:11 24 eorr1, r1 8c:8f 93 pushr24 8e:9f 93 pushr25 outb(ADDirPort,0xff); //brama jako wyjście //---właściwa reakcja na int 90:8f ef ldir24, 0xFF; 255 92:8a bb out0x1a, r24; 26...
OK, a czy ma znaczenie format pliku który przesyłany jest do pamięci flash i eeprom uC, czy uC jest w stanie rozpoznac i zrozumieć niezaleznie czy jest to format hex, bin, motorola, dziesiętny etc? Przecież to nie MCU interpretuje te pliki. To co jest wysyłane do MCU to interpretacja tych plików wyknana przez oprogramowanie sterujące programatorem....
witam ! Czyli jak wg was żeby było prościej dać przyciski, do GND czy VCC ? Jeśli do VCC to jaki i gdzie dać rezystor podciągający ? Zwieraj przyciski do masy, a podciąganie do +5V zrób programowe, w Bascomie AVR wystarczy napisać taki rozkaz: Portd.0 = 1 i to cała filozofia podciągania ! nie potrzeba stosować fizycznego rezystora. Pozdrawiam. Stefan
Odwróciłem reakcje na zbocza, tam gdzie było opadające jest teraz narastające i odwrotnie, czyli tak jak było zamierzone, ale nadal nic. To tajemnicze urządzenie to modelarski 7 kanałowy odbiornik na pasmo 35MHz i to on generuje te impulsy. Co oznacza (1<<ISC01)? Bo jeszcze tego nie wiem. A wnioskuje, że problem jest z przerwaniami, ponieważ impuls...
Czy ktos mi powie czy jak w procedurze obslugi od przerwania timera umieszcze rozkaz sleep .... to już go na pewno nie obudzisz bo system przerwań jest w tym momencie wyłączony (I=0) chyba że świadomie ustawisz I=1
Mam prośbę. Po pierwsze zrób małą zmianę. w pętli Do Loop napisz zamiast tamtego kodu ( który wyrzucił zumek) następujący kod[syntax=basic4gl] wait 1 TCCR1B=&B00000000 'Zatrzymanie Timera wait 1 TCCR1B=&B00000010 'Uruchomienie Timera [/syntax] Jeśli zadziała to sprawdź czy działa instrukcja if. Wstaw w jej wnętrze po if załączanie diody na jakimś wyjściu...
Nie wiem czy jest sens ciągnąć dalej tą dyskuję. Widzę, że tu zatwiardziali zwolennicy aseblera tylko mają prawo się wypowiedzieć. Co nie przeszkodziło zatwardziałemu zwolennikowi C obstawać przy swoim i wielokrotnie wyrazić własne zdanie. Nie jesteśmy przeciwko, a wręcz popieramy. Osobiście nie mam nic przeciwko asemblerowi. Jeśli ktoś chce się męczyć...
A jeżeli wybrana jest druga opcja to jaki sygnał trzeba podać? 1MHz? I jeszcze jedno pytanie. Zczytałem fusy z nieruszanej attiny2313 i pokazuje że ustawiony jest wewnętrzny oscylator 8MHz. Jak w takim razie mają się te rozkazy dla kompilatora $crystal = 1000000 Jak oscylator jest niby na 8MHz a zdefiniowane w BASCOMIE na 1MHZ to jak właściwie działa...
To jezeli tylko ze wzgledu na zmiane zegar to akutrat atmel tez to umozliwia. Proponuje ci zrobic cos w trybie power save bo widze ze wyliczeniw oczywiste oraz pomiary rzeczywiste cie nie przekonują. Jak już chcesz faktycznei sie wgłebic w minimalizacje poboru prądu to zauważ ze nawet sposób pisania programu mówie o ASM chociaz ponieważ C tez jes jaby...
rozkaz wyświetlacz licznik rozkaz rozkaz komputerowy
radio fabryczny toyota corolla bosch sterownik silnika koszt naprawa telewizor samsung
stacja parowa odkamienianie ofiarowanie punktow
Akumulator do Audi A4 B8 2.0 TDI 143 KM: Wybór i Specyfikacje Jak wymienić baterię w kluczyku Range Rover Evoque 2013 L538