OMG... odpadlem [; czlowieku! liczba twoja zajmuje dwa bajty. wiec najpierw zapisz ... pierwszy, a potem... drugi. po co te kombinacje? moze zapisuj to jako ilosc wielokrotnosci jakiejs fajnej liczby pierwszej (np 23) oraz reszta - bedzie jeszcze bardziej bezsensownie. mozesz zapisywac w eepromie 16bitowo? no to w ogole po co te kombinacje? moze pokombinuj...
Różni się tym, że ten drugi jest niepoprawny, bo liczba 0x221 to dwa bajty.
Dość prosto to przeskoczysz. Definiujesz dodatkową zmienną jako znacznik wystąpienia przerwania. W przerwaniu stan tej zmiennej zwiększasz lub ustawiasz na "1". W pętli głównej badasz stan tej zmiennej, jeżeli jest niezerowa, to zmniejszasz ją o 1 i wywołujesz procedurę inkrementacji licznika. Wszystko zależy od tego, jak często przerwanie jest wywoływane...
Dobrym rozwiązaniem opóźnienia jest assemblerowa instrukcja NOP . Znając prędkość zegara można ustalić ile trwa jeden cykl uC, a wykonanie NOP 'a zajmuje właśnie jeden cykl. A potem Portx.y = Byte.z , ale to tylko wtedy gdy nie wysyłamy całego bajtu, albo jego bity w zmienionej kolejności. W komendzie Shiftout też można ustawić opóźnienie. Waitms podobno...
Mam funkcję oto: //zapisuje bajt do bufora uchar buforWrite(tsBufor * psBufor, uchar sign) { uchar eCode = 0; uchar interrupt; interrupt = ENTER_CRITICAL_SECTION(); if ((psBufor -> dataLength) < (psBufor ->size)) //czy jest miejsce { //jest miejsce w buforze *psBufor -> pWrite = sign; //zapisanie...
Musisz wiedzieć jaką prędkość transmisji jest akceptowalna (ze względu na zakłócenia) i ile bajtów informacji przesyła jedna stacja. Może być mały kłopot z oszacowaniem ilości danych, bo nie wiadomo co potrafi master (w sensie jakich funkcji potrafi używać i co oraz ile chce odczytać). Przy 16 bajtach (każdy po 10 bitów razem z kontrolnymi) i transmisji...
Witam, Napisałem program który wysyła kolejno bajty przez USART do drugiego urządzenia i jednocześnie odbiera bajty (taki powiedzmy full-duplex :)) . W zasadzie nic specjalnego program wygląda następująco: . Czy przyczyną są drgania styków? Wcześniej tą komunikacje realizowałem za pomocą DMA i przesyłałem hurtem 8 bajtów podczas jednego cyklu i ten...
Mozesz isc na latwizne i uzyc kodu ponizej. Na 100% dziala on na kwarcu 11059200 ale ten Twoj tez chyba styknie. W listingu masz petle opozniajaca 1 ms wyznaczona doswiadczalnie oscyloskopem, nie jest ona napewno dokladna co do mikrosekundy ale taka dokladnosc nie jest w tym zastosowaniu potrzebna. Wystarczy, ze Twoj hardware bedzie zgodny z ustawieniami...
Mam problem, potrzebuje wysłać do układu 3 bajty w jednej paczce przez SPI, procesor jest masterem i wysyła dane do układu. Robie to narazie na piechote, jak na ząłączonym kodzie. I właśnie: Czy jest możliwe by cała sekwencja 3 bajtów miała nie "zakłócony" cykl zegarowy - widac to na zdjęciu, te przerwy ( u góry zegar, na dole dane). Być może układ...
Chyba znalazłem choć może mi się wydawać, proszę o opinie fachowca :) jak w AVR Studio odpalę debugowanie i run, to po lewej w okienku "Procesor" jest wartość CYCLE COUNTER. Czy ta wartość podaje ile cykli procesor machnął od początku do aktualnego momentu? Jeśli tak to 8 ifów jest szybsze 282 cycle kontra 414 cykli przy użyciu pętli for i przesuwaniu...
Eclipse lub AVR Studio + GCC + Atmega8 Chciałbym zautomatyzować sobie liczenie ilości cykli zegara procesora, które wykonuje dany fragment programu. Jest to dla mnie istotne, a w czasie pisania kod często ulega zmianie i liczyć muszę od nowa ręcznie. W manual-u GCC v4.5.2 na stronie 281 rozdz. 6.3 znalazłem jedynie informacje jak policzyć objętość...
Porównaj sobie sposób, który napisałem wcześniej, spójrz do pliku *.lss i sprawdź jak wygląda to w asemblerze, porównaj sobie do dziesiątek operacji, które miałyby się wykonać w tych proponowanych przez ciebie IF'ach. Toż nie dość, że zajęłoby to więcej miejsca, więcej czasu to jeszcze z uwagi na to byłoby jeszcze bardziej narażone na zmiany w przerwaniach...
Jeżeli do 'adres' przypisujesz sztywne 0x2 to może być błąd kompilatora, już kiedyś się spotkałem z bykiem IAR gdzie 1<<16 robiło mi na 32bit zmiennej unsigned liczbę ujemną ( o zgrozo ). No nie przesadzajmy...w takim podstawowym przypisaniu błąd? W jaki sposób autor sprawdza wartość tego bajtu? Jeżeli nic dalej nie jest "robione" z tą zmienną...
Jeżeli to procedura obsługi przerwania to: # instrukcje cli i sei są zbędne, # jeśli cały program masz w asm, to może nie być konieczne odkładanie na stos użytych w przerwaniu rejestrów, ale wypadałoby chociaż odłożyć na stos SREG. Proponowałbym też użyć trybu CTC timera - nie będzie konieczności zerowania TCNT0 podczas przerwania. ...żeby analogicznie...
a co do bajtu masz bloczek move Klocek MOVE - jako output wpisujesz cały bajt np %QB0 to wyjścia od %Q0.0 Do %Q0.7 jako input wartość odpowiadającą stanowi wyjść. Dzięki, choć trochę mi zeszło by zrozumieć jak to zrobić. I, że najlepiej IN podać jako B#2#xxxxxxxx - przynajmniej dla mnie. Widzę, że jeszcze mi brakuje wiedzy. Choć mam inną zagwostkę....
Jak na mój gust, możesz spróbować coś takiego: Zakładam, że "zmienna" została zadeklarowana wcześniej i jako typ int... int zmienna; . . . . int k; for (k = 1; k <= 128; k += k) PORTB.1 = (zmienna & k) != 0; Bez większych kombinacji, zwarty zapis, mało bajtów (mam nadzieję...) Wykorzystano tu następujące właściwości: dodanie zmiennej do samej...
odczytuję z tej samej komórki w 1/4 przypadków inną wartość niż zapisałem. Natomiast, gdy hurtem zapiszę np. 256 komórek tą samą wartością, to zawsze odczytuję prawidłowe wartości. Nadmienię, iż przy hurtowym zapisywaniu nie używam metody "FAST-PAGE-MODE EARLY-WRITE CYCLE". Szereg komórek zapisuję tak jak pojedyńczą komórkę. Czy po zapisie do pamięci...
Przemek Elektro: ja zastosowałem twoją metodę w tym samym programie.. ale między sbiw r24,1 a dec r24 jest dóża różnica... mianowicie sbiw operóje na wyrazie (2 bajty) składającym sie w tym wypadku z rejestrów r25:r24, a dec r24 działa tylko na rejestrze r24 a więc różnica jest makabryczna..
Strona 6, 7 i 8 poniższego pdfa. Co to jest ten 16-bit Adress, bo moim zdaniem to powinno to być coś takiego, że po powiedzeniu układowi czy chce się sczytać czy zapisać, to ten 16-bit Adress to odpowiada za to ile bajtów chce się sczytać a ile zapisać. Niestety na stronie 6 jest nie za bardzo wytłumaczone (bo wiadomo to tłumoki amerykańskie pisały...
masz racje teraz, ma predkosc transmisji 4800, nie wzial pod uwage ze przezutnik T musi wykonac 2 cykle aby uzyskac pelen okres sygnalu na wyjsciu.
Albo jeszcze lepiej (15 cykli bodajże): ; r16 = ABCDEFGH swapr16 ; r16 = EFGHABCD movr17, r16 andir17, 0xcc ; r17 = EF00AB00 lsrr17 lsrr17 ; r17 = 00EF00AB andir16, 0x33 ; r16 = 00GH00CD lslr16 lslr16 ; r16 = GH00CD00 orr16, r17 ; r16 = GHEFCDAB movr17, r16 andir17, 0xaa ; r17 = G0E0C0A0 lsrr17 ; r17 = 0G0E0C0A andir16, 0x55 ; r16 = 0H0F0D0B lslr16...
Niedawno tu nawet dyskutowaliśmy o ilości zapisów. Problem w tym, że ciężko to przetestować. Łatwo policzyć ilość zapisów do totalnego zniszczenia komórki, ale czy np. po 200tys. zapisów EEPROM bedzie miał taki czas retencji danych jak podaje producent? Co z tego, że zapiszesz milion razy do komórki, jak np. w 60 stopniach zapis szlag trafi, albo zniknie...
AVE... Umieszczasz seed w EEPROMie, pośród losowych danych. Po otwarciu obudowy urządzenia układ nadpisuje komórki pamięci z seedem innymi danymi, a potem nadpisuje fragment kodu odpowiedzialny za pierwsze nadpisanie. Zajmie to pewno z 400-500 cykli programu. Ustawić tylko musisz układ tak, by w razie kłopotów przełączył się na wewnętrzny oscylator...
no właśnie, -O1 ma wg mnie sens, jeśli chcesz sobie ładnie móc debuggować a nie chcesz potem pod koniec musieć pamiętać o tym, żeby zmieniać na -03. Jeśli twój uC się ze wszystkim czasowo wyrabia dla -O1, a nie musisz np. minimalizowac poboru energii (bo wtedy oczywiście zależy ci na tym, żeby wszystko co trzeba wykonać jak najszybciej i pójść spać),...
Znalazłem tylko taką: Kod C - Ta funkcja zamienia dwa słowa na raz, czyli: 0x12345678 -> 0x34127856 Możesz jej użyć, ale musisz byc ostrożny. Rozmiar bufora powinien być wielokrotnością 4 bajtów i dobrze byłoby żeby był wyrównany do 4. Cortex-M4 ma unaligned access, ale dostęp do niewyrównanych danych zabiera dodatkowe cykle. Najlepiej bufor zdefiniować...
Dobry wieczór. Przepraszam za tak dużą zwłokę, ale ostatnio miałem zakuwanie na egzaminy szkoleniowe do pracy i nie miałem kompletnie czasu by myśleć o tym:( Musiałbyś pokazać przykład swojego programu. Najpewinej efekty o któych piszesz wynikają z tego, że nie korzystasz z peryferii mikrokontrolera - m.in. timerów, przerwać itd. A na siłę starasz się...
Pralka naprawiona. Z racji braku pomocy na forum jak i niepowodzenia prób samodzielnej naprawy dokonałem drobnej modyfikacji elektroniki. Dodałem procesor Attiny25 (+ 724 bajty programu) który monitoruje diodę LED obok przycisku START. Gdy ta zgaśnie (po zakończeniu prania), procesor włącza na chwilkę dodany transoptor zwierający przycisk ON/OFF, co...
No ale ma limit cykli ... 100 tys. przy retencji o ile pamiętam 25 lat! Mamy 128 bajtów EEPROM, więc można zrobić wear-leveling, co nam da co najmniej 12 mln zapisów przy maksymalnej retencji. W praktyce komórka EEPROM w AVR pada po ok. 2-4 mln zapisów, dla retencji rzędu minut-tygodni. A zasilać uśpionego procka diodą i kondensatorem ? Są na ten temat...
Dlatego też popychanie danych po SPI realizuje się z użyciem FIFOów i przerwań, w szczególności na AVR czy PIC, gdzie wejscie i wyjscie z ISRa ma prawo trwać krótko... Procki które na wejscie i wyjscie z ISRa zużywają dużo cennych cykli, przeważnie mają już DMA no i temat rozwiązuje się sam... No i tu jest ból straszny, bo AVR na SPI nie mają FIFO...
Ad 1. LD(IX+01),#23 - rozkaz 4-bajtowy: - 1 bajt - wartość DD (prefiks mówiący o tym że rozkaz dotyczy rejestru IX), - 2 bajt - wartość 36 (rodzaj operacji), - 3 bajt - wartość 01 (przesunięcie względem wartości z rejestru IX), - 4 bajt - wartość 23 (ta wartość będzie zapisana w komórce pamięci o adresie (IX+01). Rozkaz wykonywany jest w czasie 5 cykli...
1.Bajty i cykle (opis) rozkazu ORAA dla wszystkich trybów adresowania. 2.Różnica pomiędzy SWI a WAIT ( cykle) 3.Kiedy przy sekwencyjnej zmianie PC µC zapisuje na stos: a) 9 bajtów b) 1 bajt c) 0 bajtów Jeżeli ktoś wie proszę o odpowiedz.
Cześć, piszę bootloader do xmega32c4 i mam następujący problem, poprzez uart ładuje sobie bajty do buforka o rozmiarze takim jak strona pamięci, nastepnie kasuję bufor flash, pamięć aplikacji, ładuję do bufora flash a potem do pamięci flash oczywiście czekając na zwolnienie SPM. Do mojego bufora jestem w stanie zapisać bo rządanie odczytania jego zawartości...
Ja studiowałem zaocznie więc nie miałem żadnych praktyk. Na studiach uczyłem się asemblerów z różnych procesorów (łącznie z tym ile bajtów i cykli zajmuje rozkaz) i to nijak się nie przydaje, niestety nauczanie nie idzie z duchem czasu. Co do wypłaty, będąc po studiach czyli zero praktyki, to ok. 2kPLN netto można zarobić a później to do ok 3kPLN albo...
Zdawałoby się, że dostęp z poziomu rdzenia do peryferium AHB trwa dwa cykle, a dostęp z poziomu takiego DMA trwa jeden cykl... DMA jest zwykłym masterm AHB i dostęp do peryferium jest wykonywany dokładnie tak samo jak przez rdzeń. Wszystkie transfery wykonywane poprzez DMA pchane są przez AHB, które na transfer pochłania dwa cykle. Jeśli dana operacja...
Witam rcall nie przeszkadza USARTowi... i całe szczęście, bo musielibyśmy wyrzucić wszystkie AVRy do kosza ;) Problem jak zwykle tkwi w programie. W procedurze obsługi przerwania USART_TXC założyłeś, że możesz włożyć do UDR kolejny bajt, bez sprawdzania, czy jest on pusty. Poniekąd jest to założenie słuszne, ale nie w Twoim programie. A problem polega...
Od jakiegoś czasu czułem potrzebę sterowania komputerem za pomocą niestandardowej klawiatury. W wielu przypadkach, takich, jak emulatory starych komputerów i sterowanie urządzeniami za pomocą klawiatury, można przypisać funkcję programu do klawisza na klawiaturze. Na przykład komputer ZX Spectrum, czy Commodore 64 ma podobny układ QWERTY, ale większość...
Ok, 20 IO cyfrowych to 20 bitów, czyli 3 bajty. 10 wejść analogowych 16-bitowych, to 20 bajtów. Tyle chcesz odczytać. Do tego narzut protokołu - bajt adresu, masz 4 urządzenia, to dodatkowo 4 bajty. A więc jeden cykl to co najmniej 27 bajtów do przesłania. Ponieważ korzystasz z UART, więc jeden transmitowany bajt to co najmniej 10 bitów, a więc masz...
Tutaj pokażę jak można łatwo uruchomić gotowy moduł z wyświetlaczem VFD ze starego odtwarzacza DVD. Najpierw przeanalizuję jego budowę oraz zasilanie, a potem w oparciu o notę katalogową od zera zaimplementuję jego sterownik na Arduino. Ten temat będzie stanowić pierwszą część przygody z VFD i tutaj zadowolę się na uruchomieniu poprawnie kontroli indywidualnych...
Mikrokontrolery 32 bitowe zawojowały rynek, jednakże ich 8 bitowi przodkowie nadal są równie popularni na rynku, co 32 bitowe układy. Układy 32 bitowe o szerokim wachlarzu peryferiów, są idealnymi kandydatami do wielu aplikacji, co tłumaczy czemu są tak popularne wśród projektantów systemów elektronicznych. Projektanci wiedzą, że kompleksowe i skomplikowane...
Witam wszystkich, rzadko pisze bo zwykle jakoś sobie radzę, ale po trzech dniach walki jestem zdesperowany i zaczynam szukać pomocy u Was. Zrobiłem emulację odbierania RS232 na nóżce INT0. Zbocze opadające oznacza że mamy bit startu. Tak startuje odbieranie: [syntax=c] ISR(INT0_vect){ // włączenie odbierania znaku na emulowanym UART 600bps GICR&=~(1<<INT0);...
Ok ,a czy nie da sie odrazu zapisac sprawdzania przycisku pomijajac zaladowanie stanu portu do akumulatora ?? np : sprawdz: // petla sprawdania przyciskow P0-P7 jnb P2.0,wys0 // jesli P2.0 jest 0 skok do wysw0 jnb P2.1,wys1 jnb P2.2,wys2 . . . itd (...) Można sprawdzać stan linii portu 2 w ten sposób, nie trzeba wykorzystywać akumulatora. mov acc,...
Co prawda już jakiś czas po walentynkach, ale projekt jest znacznie bardziej uniwersalny i myślę, że jest godny uwagi. Nie ma nic wspanialszego niż powiedzieć ukochanej „I love you!” i wręczyć jej pudełko czekoladek. Można sobie tylko wyobrazić, jaka będzie reakcja naszej drugiej połówki, jeżeli napis „I love you!” (lub “I...
Kolejny raz widzimy to samo. Zamiast dobrać kontroler do zadania, to próbujesz na siłę dopasować zadanie do kontrolera leżącego w szufladzie. Tutaj o tyle gorzej, że nawet się nie zastanowiłeś ile zasobów potrzebujesz, tylko od razu przyjmujesz 2 albo 3(!) kontrolery do w sumie bardzo prostej aplikacji. Moim zdaniem wszystko zrobisz na jednym uC i może...
Wydaje mi się że problem rozwiązałem: 23:46:12root^serwer:0:18... -l /dev/sdb Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes głowic: 255, sektorów/ścieżkę: 63, cylindrów: 121601, w sumie sektorów: 1953525168 Jednostka = sektorów, czyli 1 * 512 = 512 bajtów Rozmiar sektora (logiczny/fizyczny)...
Dostęp do pamięci ram (wewnętrzna/zewnętrzna): 2 cykle (o ile pamięć zewnętrzna jest podłączona do dedykowanego interfejsu). Odczyt z pamięci eeprom: chyba coś koło 8 cykli (wpisanie adresu 2ck, wpisanie polecenia odczytu 1ck, wymuszone zatrzymanie procesora na 4ck, odczyt bajtu 1ck) Odczyt z pamięci flash: 3 cykle. Największa zaleta zewnętrznego ramu...
Na początku sprawdziłem, jest JMP 3-cyklowy, zapomniałem o tym wspomnieć, myśląc że komentarze w kodzie o tym mówią. Jest nawet dodatkowy NOP, aby przerwanie miało dokładnie 12 cykli, jakoś na parzystych łatwiej mi się dokonuje obliczenia. Może innym licznikiem sprawdzę ile tak naprawdę cały ten kod konsumuje cykli... Update: Wyszło na to, że cały ten...
Rzeczywiście nawet przy 20MHz dla 44100Hz na każdą próbkę pozostają ok. 453 instrukcje/cykle. O samym pogodzeniu dekompresji z resztą myślałem w ten sposób: jakieś tam operacje mniej ważne będą sobie wykonywane w nieskończonej pętli czyli np. i2s i obsługa mmc, natomiast sama dekompresja wywoływana cyklicznie przez timer i póki nie zostanie skończona...
Xmega niby jest super, ale jeżeli chcesz puścić dane przez port SPI (max. 8MHz, więc teoretycznie 200pxl), to nie masz bufora i pojawia się kwestia stabilizacji obrazu. Bufor ma tylko USART w trybie SPI, ale on pracuje z prędkością do 4MHz (100pxl/linię). Możesz użyć DMA do transferu danych na port, z którego uzyskasz kolory, ale... Prędkość DMA zależy...
Atmegi nie maja mozliwosci wykonywania programu z zewnetrznej pamieci. Chodzi o predkosc wykonywania programu. Atmega wykonuje instrukcje w jednym cyklu (wiekszosc) a ladowanie bajtu z zewnetrznej pamieci to conajmniej 3 cykle. Procesor by zwolnil kilkukrotnie a pozatym podlaczona pamiec musiala by byc szybka. Druga kwestia to fakt ze AVR maja architekture...
Opoznienia mogly sie zmienic zwlaszcza gdy samemu sie pisalo petle opozniajace typu np for... while... . Polecenia obslugi sa wtedy znacznie skracane (ponad 50%). Latwo to zaobserwowac w podgladzie disassemblera w sumulacji programu. sam tego doswiadczylem gdy musialem napisac instrukcje obslugi protokolu 1wire gdzie bez optymalizacji procedury nie...
Dziękuje koledze pandy :). Kiedyś próbowałem sprzężyć Atmegę ze stacją dyskietek, wychodziło ruszanie głowicą i silnikiem, ale na elektrodzie dowiedziałem się, że dane z głowicy są przetwarzane dopiero na płycie głównej, więc sobie darowałem... Jak jest na prawdę? Myślę, że autor musiał przejść przez ten etap... Mógłbym więc prosić o podpowiedź? Po...
Szukam mikrokontrolera, ewentualnie karty do PC, która umożliwi przetwarzanie danych dostarczanych przez liniowy sensor obrazu S10077. Element ten ma własny przetwornik A/C, który wysyła w trybie transmisji szeregowej poszczególne bity bajtów zawierających informacje o oświetleniu każdego piksela światłoczułej linijki. Szczegóły techniczne oraz wykresy...
bo operacje 8-bitowe są na ARM kosztowne eeeeee? Od kiedy? Przecież można czytać/zapisywać na ARM także pojedyncze bajty. Przejrzyj zestaw instrukcji bo bzdury gadasz. Czytać i zapisywać możesz. Ale jak wygląda mnożenie dwóch 8-bitowych zmiennych? Raczje trzeba najpierw znormalizować wartość w rejestrze. Nie wiem, czy jest w asemblerze instrukcja typu...
(at)zumek Dzięki za kod, ale nie do końca wiem jak on działa. Szkoda :( W1 to tablica wskaźników na W, przesunięta o dwa miejsca? Mylisz się :( W1 , to jakby wskaźnik na W powiększony o 1 element tablicy W , czyli 2 bajty . Natomiast tablica wskaźników , to ... nie z tej bajki ;) A dokładnie rzecz ujmując , to Bascom definiuje tablicę W1 , w obszarze...
Też nie aż tak 'znacznie'. - dsPIC marnuje mniej czasu na wejście w ISR i na wyjście z niego, więc STM32 nadrabia zegarem i wychodzi podobnie. - W dsPICu instrukcja MAC wykonuje się w jednym cyklu, w STM32 w trzech (chyba). - dsPIC ma podzieloną pamięć na X i Y, z dodatkiem, że pewne przestrzenie adresów są dwuportowe i DMA nie kradnie cykli rdzenia...
Faktycznie, niezłe. Nie ma to jak trzeźwe spojrzenie :) W zasadzie to dodatkowych 8 cykli. A może istnieje jakaś dyrektywa która umożliwiła by uzytkownikowi wpisanie w pierwszy bajt a potem drugi? Bo fizycznie właśnie się tak dzieje, np: TH0 -> R1 , TL0 -> R2 tylko, że C "widzi" long jako jedną całość czyli 4 bajty.
No wlasnie. czyli tak jak robie to ja. Timer generuje przerwanie co 1s. Zwieksza zmienna o 1. Wcisniecie jakiekolwiek klawisza jest rowniez sygnalem do wyzerowania tej zmiennej i cykl sie powtarza az do momentu, gdy zmienna osiagnie zadana wartosc. Oczywiscie reczne wychodzenie z menu jest tylko i wylacznie uwarunkowane klawiszem ESC. Ta zmiena symuluje...
W pewnym urządzeniu muszę zapisywać do 512 zdarzeń do pamięci EEPROM. Z tym urządzeniem będzie się komunikować drugie, które kolejno będzie te dane odczytywać. Potrzebuję więc dodatkowo zapisywać dwa wskaźniki zapisu i odczytu danych. EEPROM ma 1mln cykli zapisu, więc przy standardowym zapisie (dane i wskaźniki zawsze pod tym samym adresem) zapiszę...
Widać nie rozumiesz tego albo grasz wariata. Zacznę od końca - co daje koledze przywilej używania takiego języka? Skąd to zacietrzewienie - jest kolega druga osoba w tym wątku która wychodzi z założenia ze wszystko jest dozwolone - nie jest - szanujmy się bo inaczej cala ta dyskusja nie ma sensu. Rozumiem rozgoryczenie kolegi - zawiódł się kolega na...
A to ciekawe? Czy mógłbyś uzasadnić dlaczego moja jest najmniej efektywna (pod wzgledem wielkości i czasu)? A mógłbyś ją zapisać jako kod C zamiast jakichś hieroglifów? Łatwiej byłoby porównać. Domyślam się, że te czary: shift -> (LSR)pozniej shift <- z carry (ROL) to jakaś pętla? Prawdopodobnie chodziło mu o coś takiego: [syntax=avrasm] ldi...
Skoro masz odczyty po smbus, to zapisz sobie raport, najważniejsze cykle ładowań i pojemność fcc i dc. Wylutuj 93c56, odczytaj i szukaj w zawartości odczytanych danych po przeliczeniu na hex. Czasami mogą być odwrócone bajty. Z 93c56 występował do pary przeważnie m37516, może ten 01007 to jest jego klon ?
Witam , mam nadzieję iż nie zanudziłem bez reszty.. W zestawieniu z moimi "dokonaniami asm." kolega michalko12, jest najbliższy temu co ja kiedyś robiłem . Oto wersja asm z przełącznikiem kompilacji aby kompilować jako samodzielny plik - kto chce ->ten może :D ( ta wersja to 16-timerów, 16-nasto bitowych, każdy cztery tryby konfiguracji, oczywiście...
Opiszę naprawę dość rzadkiej konsoli, polegającą na odtworzeniu schematu pierwowzoru, zaprojektowaniu i wykonaniu płyty głównej i dalszych krokach niezbędnych do przywrócenia jej życia i funkcjonalności, w których zastosowałem swoją nowatorską metodę. Będzie więc coś dla miłośników retro, fanów wytrawiania płytek, maniaków programowania w asemblerze...
Wyprowadzając clk z portc można zyskać 1 cykl ( 15 cykli zamiast 16) przy okazji nie wyprowadzając zbędnej części bajtu na pozostałe piny. ld r17.50 lot: ld r16, x+ mov r18, r16 andi r16, 0x0F out PORTC, r16 ori r16, _BV(clk) out PORTC, r16 swap r18 andi r18, 0x0F out PORTC, r18 ori r18, _BV(clk) out PORTC, r18 dec r17 brne lot andi...
Sterownik włącza/wyłącza do 8 urządzeń grzewczych i chłodniczych. Stan wyjść zależy od: temperatury mierzonej w dowolnej liczbie punktów, wewnętrznego zegara czasu rzeczywistego, programu grzania i chłodzenia przechowywanego w pamięci EEPROM. Architektura sterownika Sterownik jest oparty na mikrokontrolerze AT89C2051 . Układ ten ma 2 kB pamięci flash...
Autor poniższego zestawienia jest inżynierem i konsultantem wsparcia dla systemów wbudowanych. W swojej karierze poznał on szereg różnych architektur mikrokontrolerów, różniących się wydajnością, wyborem peryferii, poborem zasilania etc. Wybór odpowiedniego układu stanowi zawsze o sukcesie projektu. Kierować się możemy różnymi kryteriami, tak subiektywnymi,...
Proszę o pomoc w rozwiązaniu zadań niżej moje rozwiązania: 1. Na wejście 8-mio bitowego przetwornika ADC podawane jest napięcie wzrastające liniowo od zera do wartości 10V z szybkością wzrostu 1 V / minutę. Proszę przyjąć, że ADC „próbkuje” sygnał co minutę i podać wartości rejestru odczytu ADC (binarnie, lub szesnastkowo) w kolejnych 10...
Nie będę pisał dwa razy, więc przekopiowałem swoją wypowiedź z innego forum... No cóż. Jak widać zainteresowanie tematem jest dość skromne, jakby nikt nigdy tego nie robił lub była to jakaś wielka tajemnica. Poradziłem sobie sam. Podziękowania dla movzx za to, że w ogóle podjął jakąkolwiek próbę i dyskusję. Postanowilem zamieścić na forum kilka uwag...
Zmieniając typ na int w oryginalnym kodzie przenosisz 40 bajtów (20*2) na każdy po 4 cykle (2 wczytanie, 2 zapis) = 160 cykli. To jest minimalny czas, poniżej którego nie da się zejść. Jeśli memcpy działa szybciej, znaczy nie kopiuje wszystkich 40 bajtów (tylko 20 bajtów - jeśli nie zmieniasz trzeciego argumentu w wywołaniu funkcji), sam kod to wtedy...
Co do rady abym zaczął od małych kroczków , to akurat robię łącząc jeden odczyt z adc i zapis do karty (Póki co Rs'a - bedzie to następny etap).Wyświetlacz mam ale on pracuje na drugim spi i na wszelki wypadek nie używam , z diodami to pomyśle, natomiast debuger jest mi obcy ( mam programator zl30prg i niepełnego keila ) Co do kolejności rozbudowywania...
Witam forumowiczów, zacząłem realizować projekt zegarka, kalendarza i termometrów z owego linku: Proszę o porady i sugestie jak można rozwiązać ten problem :P
Witajcie moi drodzy. Zapraszam na kolejną część mojego tutoriala PIC18F2550 i kompilatora SDCC . W tej części poznamy sterownik wyświetlacza LED MM5450, połączymy go z PIC18F2550 i napiszemy od 0 implementację ich komunikacji. Docelowo użyjemy MM5450 do wysterowania wyświetlacza LED 5 na 5. Cały proces powstawania układu na płytce stykowej oraz programu...
Witam. Napisałem kod na procesor jak w temacie, zaprogramowałem go (z małymi problemami, ale po zwiększeniu w programie /Dybkowski/ wartości częstotliwości kwarcu udało się), podłączam LCD i nic. W ogóle nie dochodzi do inicjacji. Podejrzewam, że może coś skopałem przy odczycie z wewnętrznej EEPROM. Proszę o sprawdzenie i/lub ewentualne sugestie. Dziękuję...
Widzisz, to jest tak - IDLE MODE jest po to, że np jeśli masz TWI SLAVE to układ master może wybudzić twój układ SLAVE właśnie poprzez nadawanie czegoś do niego po TWI (I2C) i wtedy przerwania są nieodzowne. Podobnie zewnętrzne układy mogą wybudzić za pomocą takich interfejsów jak USART czy SPI. Dzięki czemu transmisja może być dalej kontynuowana najszybciej...
Witam, Pracuję na zestawie ZL3AVR z Kamami. Kwarc mam ustawiony na wewnętrzny 8MHz. Przerabiam lekcję 15 z Kursu programowania mikrokontrolerów w języku C z EdW. Podłączyłem wyświetlacz zgodnie z kursem, ale nic się nie pojawiło na wyświetlaczu. Sprawdzałem połączenia, przylutowałem przewody do drugiego wyświetlacze i też nic. Poniż zamieszczam kod:...
Witam Czy ktoś może miał styczność z tym mikrokontrolerem? Na drugim roku studiów zaczynamy z mikrokontrolerami co mnie bardzo interesuje, ale wykładowca przedstawił PicoBlaze, który ma bardzo małe zasoby i podobno można go programować jedynie w jego własnym języku assembler. Na razie tak patrzę sobie na symilatorze do pobrania ze strony (1,45MB) i...
Konstrukcja będąca tematem wątku powstała jako projekt na zaliczenie przedmiotu na uczelni, którego celem było napisanie sterownika dla systemu Linux do jakiegoś urządzenia. Ponieważ miałem swobodę wyboru tematu sterownika, postanowiłem stworzyć jakieś urządzenie w postaci karty ISA. Złącze to nie występuje już w obecnych komputerach, ja jednak mam...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
Jest to proste urządzenie do naświetlania promieniami UVC, wyposażone w świetlówkę Osram Puritec HNS S 7W. W aktualnej sytuacji epidemicznej przyda się do dezynfekcji maseczek lub innych przedmiotów (trzeba je obracać), a elektronikom do kasowania pamięci EPROM (z okienkiem). Wymiary zewnętrzne pudełka (długość/szerokość/wysokość): 200x184x116mm. Jego...
Poniższy projekt to stacja pogodowa oparta na module z układem ESP8266. Nie byłoby w niej nic szczególnego, co wyróżnia ją na tle innych tego rodzaju konstrukcji, gdyby nie optymalizacja systemu pod kątem minimalizacji poboru prądu. Wykorzystany mikrokontroler nie jest zbyt energooszczędny, więc średnio sprawdza się w aplikacjach zasilanych bateryjnie...
Diagnostyka Common Rail, silniki Diesla Grupy zmierzonych bloków wartości. Oto dane grup w silniku CBAB: Grupa 1: 1) Prędkość obrotowa silnika, 760-940 obr / min; 2) Ilość wtryskiwanego paliwa, 3-9 mg \ stroke; 3) Wysokie ciśnienie paliwa, wartość rzeczywista, 170-350 barów; 4) Temperatura chłodziwa,> 80 ° С Grupa 2: 1) Prędkość obrotowa silnika,...
Chociaż na zdjęciu widać mini płytkę z PIC18F1220, to posłuży ona jedynie do praktycznego zaprezentowania obsługi wątków które zaimplementowałem. Obecne możliwości kodu który chce zaprezentować, to działanie równoległe 2 lub trzech wątków, w tym głównej funkcji main która jest pierwszym wątkiem. Całość wymaga kompilatora sdcc (3.6.0) oraz pakietu gputils....
Zbudowałem mały sterowniczek do kolektora na 2051, pomiar temperatury Ds1820 w zbiorniku i kolektorze , program w Bascomie, cieszyłem się że ładnie pracuje a tu po czasie ZONG!!!.Jeden z czujników pokazuje mi od czasu do czasu zero. Nie bardzo rozumiem do tej pory chodziło dobrze sterowało pompą i wyświetlało . nawet po wyłączeniu zasilania nie zawsze...
Mam podobny problem z wyswietlanym zerem , tylko ja mam dwa czujniki na jednej lini i z jednego wyswietla mi dobrze a z drugiego od czasu do czasu pokazuje zero . Czy mógłby ktoś z szanownych kolegów zerknąć na kod czy jest wszystko w porządku , nie jestem biegły w programowaniu a to mój pierwszy układ . Zbudowałem mały sterowniczek do kolektora na...
No nie to żebym od razu się domagał:) po prostu myślałem, że się ktoś zainteresuje i jak nie będzie widział tutaj potrzebnych informacji to powie mi jakich (a nie od razu zmiesza z błotem:) bo ja nie wiem co jest potrzebne żeby zdiagnozować ten błąd. Po kolei. Do tego nie robisz wcięć, przez co program jest nieczytelny. Szukałem jak wygląda na tym forum...
Witam. Ostatnio siedziałem nad kodem hamminga Pliki: hamming.h - plik nagłówkowy. hamming.c - zawiera kod napisany w C. Zdefiniowane są w nim tablica i 2 macierze. Tablica zawiera wygenerowane zakodowane wartości od 0 do 15 (w jednym bajcie przesyłamy 4 bity). Druga macierz to macierz kontroli parzystości H, dzięki której możliwe jest poprawienie jednego...
Nie 30, tylko 6 plików... No dobra, Ctrl+C, Ctrl+V: ADD A , Rn do akumulatora dodawana jest zawartość rejestru Rn A <− A + Rn gdzie Rn = R0...R7 (jeden z rejestrów roboczych) kod: 0 0 1 0 1 n2 n1 n0, gdzie n2...n0 – wskazują na R0...7 stąd: 28h−2Fh cykle: 1 bajty: 1 przykład: ADD A , R2 – ADD A , adres do akumulatora dodawana...
Mam problem z napisaniem programu do obsługi i2c w trybie slave w w/w klocku. Chciałbym aby slave odpowiadał conajmniej czterema bajtami danych, niestety korzytajac z tego co już mam nie moge wysyłać więcej niż 2 bajty ze slave do mastera ponieważ klocek przestaje odpowiadać. Aby wysyłać wiekszą ilość danych dopisywałem kolejne funkcje I2C_SendData();...
Temat sterowania napięciem sieciowym za pomocą triaka jest jednym z tych, które zapewne nigdy się nie skończą puki istnieć będzie sieć energetyczna oraz potrzeba włączania i regulacji napięcia odbiorników do niej podłączonych. Najbardziej znaną i najprostszą metodą regulacji mocy dostarczonej do odbiornika jest załączanie triaka sterującego w odpowiedniej...
Wiele różnych badań pokazało, że temperatura i wilgotność wewnątrz pomieszczeń ma znaczący wpływ na komfort pracy i produktywność. Pierwszym krokiem mającym na celu zoptymalizowanie tych parametrów jest ich wiarygodny pomiar. Niniejszy projekt omawia pomiar temperatury i wilgotności z użyciem niedrogiego czujnika DHT11. Sercem układu jest procesor...
Chciałbym na moim leciwym CA80 (z procesorem Z80 i portem 8255) wykorzystać EEPROM 24LC16 jako pamięć podręczną na pisane programy. Przesyłanie danych wg I2C. Linie SDA i SCL podciągnięte do +5V poprzez rezystory 4,7 k. Program napisany w asemblerze Z80 niestety nie działa, wszystkie odczyty są równe 0. Linią SDA podłączona do PA0, linia SCL do PC4....
HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC 11bit (12bit przed histerezą, uśrednianie dithering). 5. Zakres...
W tym artykule opiszę zmagania z odczytem nietypowej składanki, wbudowanej w konsole typu Pegasus. Projekt to pomysł + stworzenie PCB + napisanie kodu w assemblerze 6502. Motywacja Niedawno w moje ręce trafiła dość oryginalna konsola (oznaczenie BOS-2800 CONSOLE TV). Jej rzadkość polega na tym, że w jej wnętrze wchodzą cztery baterie R20. I brak możliwości...
Witam, Mam problem z napisaniem do końca kodu w środowisku Bascom, do wyświetlania odpowiednich segmentów na wyświetlaczu. Poniżej zamieszczam to co udało mi się uzyskać do tej pory, i instrukcje co powinnam uzyskać po ukończeniu kodu.
bobeer: na tym polega cały urok pagewrite że cały blok zapisuje sie w takim samym czasie jak pojedyncza komórka. najpierw sie wysyła adres (musi być podzielny przez rozmiar bloku inaczej niewejdzie cały blok [1]) potem sie wystawia sekwencje stop i układ zaczyna zapisywać - tu jest potrzebne oczekiwanie... [1]: pamięć eeprom 24c512 jest zorganizowana...
Ten procek ma troche za malo mozliwiosci arytmetycznych moim zdaniem. Do tego jest 8 bitowy. I jesli dobrze czytales datasheeta, to zobaczysz, ze movy SA 1 cyklowe jesli dotyczy to pamieci wewnetrznej, w tym takze tego RAMu, co mozesz go MOVXem dostac. Kazda inna pamiec wymaga jednak dodatkowych cykli, poniewaz: 1) adres jest 16 bitowy, wiec trzeba...
Zegar cyfrowy z termometrem Autor: marcinkk(at)wp.pl Zegar cyfrowy z termometrem Uklad zostal zmontowany i dziala. Zestaw nie zawiera zrodel programu, co niestety nie pozwala na korekcje zegarka w prosty sposob i wprowadzanie wlasnych zmian i udoskonaleniu, jezeli jednak jestes zainteresowany/a napisz do mnie, sa duze szanse, ze je dostaniesz - napisz...
Synchronizację kilku avr'ów na poziomie mikrosekundowym powinno się przeprowadzić bardzo łatwo. Używając timera 16 bitowego oraz naprzemiennie trybów pwm oraz przechwytywania: najpierw jeden układ ustawia, aby timer wygenerował zbocze w momencie kiedy jego timer się przepełni (użycie jakiegoś trybu pwm albo czegokolwiek) - inne procesory przyjmują sygnał...
Witam Mam Atmege32 połączoną z czujnikiem MMC2120MG (). Jak widać z datasheeta komunikuje się on za pomocą magistrali I2C. Próbuję napisać program w C, który umożliwi mi komunikację z tym czujnikiem, jednak nie udaje mi się uzyskać żadnych odczytów. Tak wygląda kod z którego korzystam #define F_CPU 4000000UL // 4 MHz #include <avr/io.h> #include...
Jasne ,że zdradzę ,bo nie mam nic do ukrycia . Myślałem,że problem tkwi w wiadomym miejscu :) Program jest przeze mnie modyfikowany,ponieważ na oryginalnych bibliotekach\źródłach książkowych i z forum nie działa mi z żadną kartą :/ [syntax=c] unsigned char SD_INIT(void) //Inicjalizacja karty SD { unsigned short timeout=4096; unsigned char status_R1=0;...