http://obrazki.elektroda.pl/4553573800_1... Przy tworzeniu projektów z mikrokontrolerami, oprócz uniwersalnych płytek stykowych, często przydają się gotowe moduły testowe, które można szybko podłączyć. Można kupić takie w wielu sklepach, ale ich ceny są na ogół absurdalne, np. w Kamami sprzedają płytkę z ATmega128 za 109 zł! Poniżej...
Tablica zadeklarowana bez słowa const zawiera zmienne. Tobie prawdopodobnie chodzi o to, że chcesz mieć w tablicy adresy zmiennych, czyli wskaźniki na zmienne. Proste - przeczytaj odpowiedni fragment odpowiedniej książki o programowaniu w C, zrozum wskaźniki, a potem pisz. Z drugiej strony - na atmega niekoniecznie to będzie sensowne. Równie dobrze...
1. Korzystanie z gotowców prawie nigdy dobrze się nie kończy. Szkoda czasu i energii na poprawianie nie swoich kodów ;) 2. Nie definiuj F_CPU w kodzie programu - to lub podobne zdanie pojawia się tu średnio kilka razy w tygodniu, więc uzasadnienie znajdziesz bez problemu. 3. Unikaj "magicznych" liczb w kodzie programu. Zapis: n++ ? 6. Jakiś schemat?...
...niestety nie znam asemblera. Nie musisz znać. Jak przeczytasz uważnie i zrozumiesz zasadę, to sam napiszesz procedurę obsługi przerwania w C. Dla częstotliwości PWM rzędu kilkunastu kiloherców i zegara CPU 8MHz przerwanie występuje co ponad 500 taktów, więc nawet procedura napisana w C nie będzie za długa (myślę, że nie powinna przekroczyć 100 taktów)....
Mam problem z przełączaniem bitów Założenia programu są następujące Program przez określony czas ma włączyć 2 diody oznaczone Pompka1 i Pompka2 oraz wyłączyć Napowietrzacz po upływie czasu ma przełączyć tz: wyłączyć Pompka1 i Pompka2 oraz włączyć Napowietrzacz po upływie drugiego czasu znowu ma przełączyć. Niestety program nie działa dobrze Diody działają...
Ok teraz chyba rozumiem, czyli np: [syntax=c]void fun( uint16_t * zm ); fun( &zmienna_flash );[/syntax] tak by wyglądała deklaracja funkcji w której argumentem jest wskaźnik a niżej jej wywołanie w programie. Gdyby chodziło o tablicę w pamięci flash to np: [syntax=c]uint16_t tablica[] PROGMEM = {512,3,1333}; void fun( uint16_t * tb );[/syntax] a potem...
Moim zdaniem zdecydowanie lepiej, niesądzisz? Przede wszystkim zysk jest taki, że multipleksowanie robi się "samo" i w main sobie piszesz co chcesz. Popracuj jeszcze nad jedną kwestią, która zmniejsza czytelność kodu - zasięg zmiennych. Zastanów się, które zmienne naprawdę muszą być globalne, a które nie. Te, które nie muszą zrób jako zmienne lokalne....
Witam. Mam gorącą prośbę. Naprawiam znajomemu tablice polskiej firmy ledmaster, która już nie istnieje. Wieszały się przy starcie ale z tym sobie poradziłem. W pewnym momencie ( po zaniku prądu podczas wgrywania nowej animacji ) jedna z nich przestała cokolwiek wyświetlać, zapala na początku co drugą kolumnę, czyli prawidłowy start a potem zamiast wyświetlać...
Polecenie w skrócie brzmi: Napisz program w asemblerze i w C, który wczytuje z tablicy kolejne liczby (bajty) i wyświetla je na diodach bit po bicie. Po każdym kolejnym bicie należy odczekać 5ms, dodatkowo po każdym bajcie należy odczekać 50ms. Wykorzystać przerwania licznika (timera). W asemblerze już napisałem i działa, natomiast w C zdziwiło mnie...
skoro ma być wywołane tylko raz, tzn, że ma być przed pętlą główną programu. Z resztą już napisałem przykład, razem z generowaniem liczb do tablicy int main(){ srand(time(0)); while(1){ //generacja nowych liczb pseudolosowych for(int i = 0 ; i < vec_length; i++) vec[i] = rand()%324234+4397134;...
Witam Mam problem z działaniem atmegi328P gdy zajętość pamięci data jest powyżej 90%. Czy jest jakiś bufor, który ma być wolny dla operacji wewnętrznych uC ? Podczas kompilacji w AVR Studio programu otrzymuje zajętości pamięci: Program: 52% Data: 89% Program działa ale jak przekroczę 90% zajętości data to atmega dziwnie działa, np nie wchodzi do konstrukcji...
Witam. Chciałbym podjąć temat mający za zadanie poprawne uruchomienie wyświetlacza graficznego, gdyż mam z nim nie mały kłopot. > ATmega8 > LCD 132x65 LT13264 - kontroler SPLC501C http://www.densitron.com/uploadedFiles/D... Proszę jeżeli ktoś posiada program, który działa o podesłanie lub wytknięcie błędów w poniższym...
Tomq podpowiem Ci, że nie mając debuggera możesz sobie znacząco zabawę z uP ułatwić robiąc "debug" przy użyciu np. wyświetlacza albo uart. Po prostu wyświetlasz sobie wartość zmiennej jaka Cię interesuje i porównujesz jej wartość z założeniami działania danego fragmentu kodu. Oczywiście, już zanim napisałem temat na forum pomyślałem "łatwiej by było...
Wprawdzie ... to nie humanitarnie z mojej strony dawać niemalże gotowca ... :D [syntax=basic4gl]$regfile = "m2560def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $include "Config_PCF8583.bas" Declare Sub Displaytime() Declare Sub Settime() Declare Sub Cancel() Declare Sub Plus() Declare Sub Minus() Declare Sub Saveandexit() Declare...
Nie udało mi się rozwiązać problemu z komunikacją z zegarem rtc więc, postanowiłem skorzystac z gotowego rozwiązania z książki Mirosława Kardasia, w której co prawda jest opisany PCF8583, ale w zasadzie jest on bardzo podobny do mojego PCF8563P. Po wgraniu programu, na wyśw. LCD i w terminalu nic się wyświetla... Pomyślałem że skoro ciągle nic się nie...
[syntax=arduino] void loop() { // ------------------- jeszcze na LCD ... //-------------------- jeszcze 8 pomia... //-------------------- jakaś pamięc do... switch (key) ... } [/syntax] To Ci działa? Bo on chyba nie bardzo wie co to "key". Nie widzę ani deklaracji, ani żeby się cośtam wpisywało....
Przy załączeniu napięcia atmedze na wyświetlaczu zamiast oczekiwanego napisu pojawiają się randomowe śmieci. Przy zwyczajnym resecie wszystko jest ok. Z resztą najlepie to widać na filmiku: //MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MA... portSHORT main(void) { //Inicjalizacja...
Ten artykuł ma raczej cel edukacyjny. Jednak na podstawie tej wiedzy można opracować retro komputer, np. ZX Spectrum. Każdy, kto miał do czynienia z pierwszymi 8-bitowcami na początku ery komputerowej, chyba pamięta, że budowa takiego sprzętu własnymi siłami wiązała się z poważnym problemem — koniecznością zaprogramowania pamięci ROM. Był potrzebny...
Więc aktualnie sprawa wygląda tak: Na PC mam coś takiego: [syntax=c] ... tablicaWyjsciowa = new byte[720]; ... portSzeregowy.Write(tablicaWyjsciowa, 0, tablicaWyjsciowa.Length); ... [/syntax] Natomiast na AVR mamy coś takiego: [syntax=c] ... uint8_t USART_vReceiveByte() { while((UCSRA&(1<<RXC)) == 0); return UDR; } ... int main() { ... volatile...
czasem problemem okazuje się niestała stała - tablice stałych można przypuszczać, że będą tylko w pamięci flash - przeważnie okazuje się, że kompilator owszem zapisuje sobie tablicę w pamięci flash, ale z początku programu kopiuje sobie ją do ramu - w ten sposób można się odwoływać do komórek takiej tablicy jak do zwykłej pamięci ram (przestrzeń). Może...
Wiesz 5 lat, nie 5 lat. Atmega8 to proc. który wg noty katalogowej pierwsze wydania miał w latach 2001-2002, więc posiadanie kompilatora z 8 letnim stażem i uaktualnieniami powinno być zdecydowanie bezpieczne, zwłaszcza, że atmega, czy attiny to nie kombajny posiadające takie perełki jak wsparcie dla zewnętrznych pamięci SDRAM, wsparcie dla wielowątkowości,...
Pojawił się kolejny problem z odliczaniem czasu :/ .. Spróbuję uchwycić istotę problemu nie wrzucając całości kodu: 1. Wykożystuje licznik T0 i T1; licznik T1 zlicza impulsy a T0 odmierza czas = 1s, po wystąpieniu 31 przerwania (overflow0) od T0 (tj. 1s) wartośc licznika T1 jest wyświetlana na LCD, na czas obsługi przerwana zatrzymuje oba liczniki aby...
http://obrazki.elektroda.pl/7995180000_1... Witam! Jakiś czas temu rozpocząłem naukę pisania programów na mikrokontrolery AVR w języku C++. Przeczytałem wiele tutoriali, poradników, itp., aż w końcu doszedłem do pisania własnych, prostych programów. Po kilku takich „pseudoprogramach” zdecydowałem, że teraz czas napisać coś...
Na początek oszacowanie parametrów czasowych. Cykl pracy = 2,5 ms. W ramach tego cyklu chcesz sterować wyjściem proporcjonalnie do pewnego parametru w. Podałeś że dla w=187 impuls wyjściowy ma trwać 1,5 ms (dlaczego nie 1,87 ms?) Przyjmijmy dla uproszczenia, że w=0..250 ma odpowiadać impuls o czasie trwania t = 0..2,5 ms. Przy zmianie w o 1, t ma zmienić...
Witam Szanownych kolegów. Nie dawno zacząłem przygode z programowaniem. Zapoznałem się z kursami na wkrętaku, oraz z kursem na Hobby Robot. Narazie wszystko opiera się na symulacji w proteusie, umiem już multipleksować cyfry na wyświetlaczu, lecz nie rozumiem funkcji bin2bcd, i nie umiem tego połączyć z następującym kodem tak, aby to jakoś działało....
Witam Jako ze to moj pierwszy post chcialbym z gory napisac ze jestem laikiem jesli chodzi o uC. Bawie sie tym od 2 tygodni, probowalem programowac w C ale niestety za wysokie progi. 2 dni temu zabralem sie za bascoma i wymodzilem programik do sterowania solarami, na dwoch czujkach ds1820. Mam prosbe do Was, czy jest cos w kodzie co mozna poprawic (zapewne...
Okazało się ze atmega chodziła na 1MHz...wewnętrznym oscylatorze... Ale teraz mam kolejny problem Dodano po 16 Więc jest tak, dzięki odpowiedniemu ustawieniu Fusebitów ustawiłem Atmegę na 8Mhz. Przeliczyłem tablicę stałych dla 8Mhz. I teraz mam pytanko: Uruchamiając ten program widać jak diody migają.. #define F_CPU 800000L #include <avr/io.h>...
w kodzie programu jedyne niepokojące jest to, że F_CPU jest deklarowane PO dołączeniu delay.h (ja to deklaruję na poziomie pliku Makefile "-D F_CPU=$(F_CPU)"). Sprawdź też, czy plik jest kompilowany na atmega8, bo jeśli wybierzesz inny, to kompilator nie zaprotestuje, a wektory przerwań mogą się różnić, tudzież wywołanie przerwania bez kodu obsługi...
Mam kolejne pytanie. Z uwagi na to że będę (a właściwie już mam) bardzo dużą ilość grafik jakie ładuję na LCD jest problem z szybkim zużywaniem się ramu jeśli podaję za każdym razem do funkcji ładującej grafiki nazwę pliku do otwarcia np: [syntax=c]gfx("menu_gl"); [/syntax] Funkcja wygląda tak: [syntax=c]void gfx( char *plik ) { strcat(plik,".gfx");...
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...
Mam sobie taką o to tablicę w epromie: P.S. Wiem, że pisze się uŻytkownik, ale chcę wiedzieć czy prowadzący przeglądają kody programów w raporcie:P
Raczej za długa. ATMega8 ma 1kB RAM. A Ty do niego ładujesz dwie wielkie tablice: FontTable[97][8] czyli 776B napis[161] czyli 161B razem: 937B tylko na te dwie tablice!!!. Zostaje 87B na pozostałe zmienne i stos. Jeżeli dobrze pamiętam stos w ATMegach zajmuje pamięć od "góry" więc pewnie nadpisuje ci tablice napis. A z tego co widzę to jeszcze w programie...
Standard 5V, czytnik wysyła kod ciągle po zbliżeniu transpondera i przestaje wysyłać po oddaleniu go, "wpisać na sztywno" miałem na myśli spisać w program jeden transponder (zmienna, może jakaś tablica) i porównywać to z odczytem, o do zamieszczenia kodu lub schematu to wolał bym napisać na nowo cały program, atmega działa na 100%, Kwarc mi nie robi...
http://obrazki.elektroda.pl/6101342600_1... Autor niniejszego opisu planował testować swego czasu tagi RFID na częstotliwość 150 kHz, jednak nie posiadał własnego generatora sygnałowego – dlatego postanowił wykorzystać w tym celu mikroprocesor ATMega88 i bezpośrednią syntezę cyfrową sygnału. Zamiast jednak sięgnąć po gotowe rozwiązanie...
Witam! Od pewnego czasu usiłuje napisać program do obsługi zegara na pcf8583 i wyświetlaczach siedmiosegmentowych lecz bez efektu. Jest sporo tematów tego typu, ale większość zegarów realizowana jest na LCD. Główny problem polega na wyświetleniu czasu na wyświetlaczach 7segmentowych. Proszę o jakąkolwiek pomoc i podpowiedzi. Schemat układu: http://obrazki.elektroda.net/13_12708371...
Witam. Mam problem z zegarem na wyświetlaczach 7-segmentowych. Minuty po 09 wyświetla 16 zamiast 10, sekundy tak samo. Zawsze tak się dzieje, więc musi to być błąd w programie, ale ja już się poddałem, co może być nie tak. Config PortA = Output PortA = &HFF Config Portd = Output Portd = &Hff Config Portb = Output config portc.0 = output config...
Witam Jestem początkującym w dziedzinie programowania mikrokontrolerów ATMEGA przy pomocy C/C++, więc proszę starszych kolegów z forum o pomoc. Użytkownik VSS (10 Lut 2006) zamieścił na forum w dziale DOWNLOAD swój projekt zegarka wraz z programem w C do ATMega8, jednak kompilator (WinAVR-20040720) zgłasza błąd (czy raczej ostrzeżenie) podczas kompilacji...
Przeanalizowałem dokładniej Twoje posty. Wygląda na to, że sygnał wychodzący z odbiornika IR jest precyzyjny (wskazują na to wykresy analizatora logicznego i oscyloskopu w #1). Biblioteka, której użyłeś w #1 pogubiła się w odczycie kodu Twojego pilota. Dane wskazują na częściowo poprawne rozpoznanie sygnału. rawData[18]: -3276750 - czas...
Patrzę na kod od godziny, nie mogąc znaleźć przyczyny problemu. Pewnie winny jest jakiś drobiazg, którego nie jestem w stanie dostrzec. Zapewne ktoś z większym doświadczeniem wychwyci go natychmiast. Na początek trochę o projekcie . Jest to moje pierwsze "większe" przedsięwzięcie w ramach nauki programowania AVR-ów w języku C. Krótko mówiąc jakiś czas...
po pierwsze są 2 atmelowskie assemblery, na '51 i AVR. Chciałem się dowiedzieć w jaki sposób piszecie programy w asemblerze udostępnionym przez firmę atmel. Jak go uruchomić, jak zapisać program i inne rzeczy. ja pisze w Avr Studio 4. w jaki sposób?w kolejności w kodzie: skoki do przerwań, procedury obsługi przerwań, właściwy kod, dodatkowe procedury(w...
Niestety nic nie da rady już zrobić - kod po skompilowaniu zajmuje 2046 bajtów. Widać że nazwy są poskracane. Bascom nie oszczędza drogocennej pamięci :( Musiałem się mocno natrudzić aby upchnąć te wszystkie nazwy rozkazów i pilotów. Standardowo napisane zajmowało z 1kB więcej!Być może zrobię i nadajnik ale potrzeba 4kB flusha. Gdybyś odrobinę skomplikował...
ad.1 dyrektywa dla kompilatora avr-as-gcc, że następne linie dotyczą pamięci programu. ad.2 Cyfry po komentarzach to jest ilość cykli procesora, przypadających na wykonanie danego rozkazu. lpm - load program memory - za pomocą rejestru Z (ZL-r30:ZH-r31), służącego do adresowania, pobierana jest wartość z pamięci programu do rejestru r0 , w tym przypadku...
Czy nie jesteś czasem z tych co chcą wyświetlać animacje na LCD :?: ;-) Teraz poważnie. W AT89s8252 bezpośrednio adresuje się tylko pierwsze 128 bajtów, jeżeli zaadresujesz bezpośrednio górne 128 bajtów, to działasz na SFRach, żeby dostać się do RAMu powyżej 07Fh musisz adresować pośrednio przez (at)R0 -(at)R7. Czy jesteś pewien, że twój kompilator...
Alez jest komentarz, ze liczby sa nieprawidlowe. Wklepalem byle co, zeby pozniej sobie dokladne wartosci obliczyc, a nie zawracac sobie glowy duperelami w tamtym czasie. Co masz na mysli piszac "chlapniesz"? Chlapanie tutaj na forum czy w swoim kodzie? :) Hm skoro widzisz jeszce jakies kwiatki, to bede wdzieczny, jesli sie nimi podzielisz ze mna. :)...
Cześć, Przejrzałem kod, który załączyłeś w #1. Uruchomiłem program z #21 na płytce stykowej (Atmega8 + wyświetlacz 7-segmentowy + emulator MCP7940). Pierwsza rzecz, jaką sprawdziłem, to próba reprodukcji błędu. Ustawiając datę na 10. i 30. dzień miesiąca, nie udało się odtworzyć problemu. Przegląd kodu również nie wykazał tego, aby błąd został celowo...
Witam, w ramach wyzwania postanowiłem napisać program do kitu Jabel J-89 (timer mikroprocesorowy). Znalazłem na elektrodzie temat na którym ktoś się postanowił podzielić fajną bo prostą procedurą na sterowanie wyśiwietlaczy 7 segmentowych za pomocą rejestru przesuwnego 74164, https://www.elektroda.pl/rtvforum/topic4... przepisałem program,...
Witam, Jestem w trakcie budowy komputera pokładowego na procesorze AtMega8 oraz na wyświetlaczu LCD LS020. Program który tworzę ma zrealizować podstawowe funkcję komputera pokładowego, takie rzeczy jak menu i możliwość nastawienia parametrów odpuszczam a jedynie chcę prawidłowo obsłużyć wejścia i pomiary sygnałów. W trakcie pisania programu natknąłem...
Hej (at)And! Do uruchomienia użyłem prawdziwej żywej atmegi8 podpiętej do "portu szeregowego" po USB z FTDI (chiński klon chyba arduino nano). Chciałem być fair i nie zaglądać do środka jako że to miał być BlackBox ;) Co do mojej specjalizacji :D Wszystkie 3 etapy dało się przejść bez jakiejś szczególnej wiedzy na temat elektroniki, assemblera i budowy...
https://obrazki.elektroda.pl/4950580000_... 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...
Witam Chciałem wykonać małą centralkę alarmową (o ile można to tak nazwać) na początek chciałem uruchomić odczyt klawiatury matrycowej i wyświetlanie postępu wpisywania kodu. Wzorując się kursem języka C z jednej ze stron internetowych przerobiłem zamieszczony tam kod pod mojego Attiny2313 po skompilowaniu i wgraniu programu do uC program się uruchomił...
Witam serdecznie, pisze program na aTmega 128, mam już napisaną zdecydowanie wieksza czesc kodu ale gubie sie przy operacjach na tablicach. Otoz, dostaje pomiary z 5 czujnikow. Kazda paczka danych od jednego czujnika sklada sie z 2 bajtow- starszego oraz mlodszego. Po wyborze odpowiedneigo czujnika, z ktorego chce czytac dane nastepuje ich zczytanie...
W kodzie masz skonfigurowane SDI jako wyjście, a SDO jako wejście, przy czym też zapisujesz do SDI, a czytasz z SDO. Aby na pewno tak powinno być? Bo generalnie powinno być odwrotnie, a na płytce łączy się te sygnały "na krzyż", czyli SDI - SDO. Tak, tak powinno być. Piny SDO i SDI są oznaczone od strony radyjka. Wrzucam kod nadajnika, który działa...
http://obrazki.elektroda.pl/7831510000_1... Witam, w końcu i ja postanowiłem zaprezentować swoje dokonania na elektrodzie. To mój pierwszy post w DIY, proszę o wyrozumiałość. :-) 1.Pomysł Dla mnie, człowieka urodzonego pod koniec lat 70, zawsze wzorem zegara był zegar Teleexpressu. Te 60 diod sekundnika były dla mnie magnesem. Jednak...
Witam, Piszę na Atmedze odczyt danych z BMP085 i dodatkowo zapis danych na kartę SD. Wszystko wydaje się działać poprawnie, a jednak coś jest nie tak. Do obsługi BMP085 wykorzystałem kod z tego tematu: http://www.elektroda.pl/rtvforum/topic18... Oto wykres z odebranych danych, czas pomiaru to około 10min http://obrazki.elektroda.pl/4498963800_1...
Celem projektu było zbudowanie prostego altimetru, który zapisywałby tylko największą wysokość i sygnalizował to przy pomocy buczka. W projekcie zastosowano następujące podzespoły: Czujnik ciśnienia bezwzględnego MPX4101A firmy Freescale (poprzednio Motorola) Mikrokontroler Atmel ATtiny45 Buczek Bateria 12V typu "N" Sprzęt Konstrukcja urządzenia jest...
atmega tablica pisanie programu atmega odczyt programu atmega
zatkany wydech kamera unifi znajduje filtr oleju
kamera cofania alternator rozładowuje akumulator
Ford Duratec czujnik cieczy chłodzącej nr 2 (CHT) – lokalizacja, diagnostyka, objawy Windows 10/11: Usługa profilów użytkowników – błąd logowania, nie można załadować profilu