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...
Dobrze kombinujesz z tym że wcześniej musisz włączyć zewnętrzną magistralę danych i adresową (ustawić odpowiednie bity). To jeden ze sposobów. Jednak koniecznie potrzebujesz ażeby ta zmienna była w zewnętrznej pamięci ?? Bo jeżeli nie to może zmieści się w wewnętrznej ? Magistralę w GCC włącza się tak: void xram(void) __attribute__ ((naked)) __attribute__...
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). http://obrazki.elektroda.net/21_12497604... http://obrazki.elektroda.net/58_12497606... http://obrazki.elektroda.net/95_12497605...
Czyli zbyt późno, bo segmenty danych są inicjowane wcześniej, w .init4, czyli bez dostępu do pamięci zewnętrznej... O doprawdy? Czy o tym jakiś standard mówi? I czym to grozi jak będą nie w init4? Jakiś tajemny kod zainicjalizuje tę sekcję albo odwoła się do tej niewłączonej pamięci? Skąd ten kod się weźmie? Odpowiedź jest prosta. Ten kod trzeba napisać....
Ja już opykałem sprawe. Trzeba w rejestrze MCUCR włączyć dodatkową pamięć Ram. A potem : unsigned char *command = (unsigned char *) 0xFF04; unsigned char *data = (unsigned char *) 0xFF05; void write_command(char x) { *command = x; _delay_ms(10); } void write_char(char x) { *data =x; _delay_ms(10);...
Nie wiem dlaczego to chcesz napisać w Asm, ale musisz wiedzieć, że Bascom generuje plik OBJ który mozesz załadować do Atmel Studio i podejrzeć wygenerowany kod Asm. Mój program NoSave Tool także potrafi te dane wyciągać z pliku OBJ tyle że szybciej i przyjemniej - jednym klikiem. Proszę to zdeasemblowany kawałek (nie cały) kodu wraz z opisami która...
Witam. Mam problemik i bardzo prosze o pomoc. Robie projekt, w którym za pomocą USARTA chce zapisywać i oczytywać rejestry układu Wiznet (traktowany jako pamięć zewnętrzna). Problem polega na tym, że interfejs pamięci zewnętrznej działa ok do momentu, kiedy układ nie obsługuje przerwania. Po powrocie z przerwania pamięć zewnętrzna się nie chce zapisywać....
Witam. Robię obsługę czujnika przyspieszenia firmy MEMSIC MXD7202 (równoważnik ADXL202) przy użyciu mikrokontrolera ATmega8(kwarc zewnetrzny 8MHz). Czujnik mam z wyjściami cyfrowymi i pomiar dwóch wyjść tego czujnika polega na pomiarze współczynniku wypełnienia tego sygnału. Np. 50% współczynnik wypełnienia odpowiada przyspieszeniu 0g (g-przysp.ziemskie)....
Być może coś jest nie tak z twoją pamięcią lub może być to wina złego podłączenia jej do procesora... podaj jaka to pamięć podaj nazwę oraz jak podłączyłeś ją pod adresowanie z procesorem czyli adres oraz cs . Czy dałeś też układ zatrzaskujący adres a0-a7 przez 'ALE'? Spróbuj też wpisać przed pętlą : MCUCR |= (1 << SRE); // włączenie RAM'u co...
Witam. Jako że jestem początkujący w programowaniu pod AVR zwracam się do was z kilkoma pytaniami. Na początku napisze jak przedstawia się sytuacja: Robię projekt na propox'owej płytce EVBNet03 z minimodułem MMnet104. Projekt wymaga zainstalowania systemu czasu rzeczywistego FreeTROS + Specjalna maszyna wirtualna + komunikacja poprzez Ethernet. Postawiłem...
Ok dzięki te operacje na bitach (a w zasadzie bajtach) już rozumiem. Ta linia do masy układu rzeczywiście nie jest konieczna. 1. Co do wiatraczka to rzeczywiście pomyliłem kierunek strzałki. Czy tranzystor BD139 byłby ok? Może macie lepszy pomysł. Nad wygładzeniem zasilania dla wiatraczka też się zastanawiałem ale w tym układzie chyba nieda się tego...
W twojej książce znalazłem również zapis równy temu MCUCR |= (1<<SM1) czy jest on równoznaczny z MCUCR = (1<<SM1) czy używa się ich w zależności od czegoś ? :) Mam nadzieję, że po przeczytaniu książki znasz już operatory dwuargumentowe i wiesz co to oznacza |= ??? Ja z przyzwyczajenia wszędzie przy inicjalizacji bitów w rejestrach konfiguracyjnych...
[syntax=c]#include <avr/io.h> // Biblioteka wejść/wyjść #include <avr/interrupt.h> // Biblioteka przerwań #include <rc5.h> // Biblioteka ustawień RC5 #include <avr/eeprom.h> // Biblioteka pamięci EEPROM ////////////////////////////////////////... // // // PROGRAM DEKODOWANIA SYGNAŁU RC5 dla AVR // // ATtiny2313 // // //...
Bardzo często pisząc programy posługujemy się zmiennymi lokalnymi, które teoretycznie zwalniają pamięć jeśli nie są używane... ale dlaczego przestawiając podział pamięci na zewn. SRAM (kostka 62256), zmienne te jakby się nie inicjowały i program się wywala? Przykład: dodałem do makefile LDFLAGS += -Wl,--section-start,.data=0x801100,--def...
Witam Napisałem program i mam z nim problem. Po skompilowaniu zajmuje mi prawie całą pamięć 1724bytes (84,2%). Przyczyną jest zmienna opuzgrzew w _delay_us( ). Gdy zamiast tej zmiennej wstawię wartość stałą, program zajmuje mi tylko 400bytes (19,5 %). Czy ktoś ma pomysł jak zmniejszyć objętość programu? Zależy mi na tym ponieważ chciałbym dołożyć jeszcze...
Witam, mam problem z oprogramowaniem do regulatora modelarskiego na atmedze8, nie mogę poprawnie odebrać sygnału z odbiornika. Wiem że takich tematów było dużo, wszystkie które udało mi się znaleźć znam już prawie na pamięć i nadal nic. Teoretycznie odbiornik wysyła wygnały dodatnie co około 20ms trwające w zależności od wychylenia drążka około 1-2ms(mój...
Chętnie. Czegoś więcej się nauczę. plik H: [syntax=c] #ifndefLCDHD44780_H_ #defineLCDHD44780_H_ /* #defineLCD_HD_5X8 // Polskie znaki czcionką 5x8 a nie 5x7 //#defineLCD_ONLY_PL // Definicje w FLASH tylko znaków PL (mniejsze zużycie FLASH) //#defineLCDMIROR // Użycie tworzy w RAM kopię treści wyświetlacza #defineLCDLINE4 // Liczba wierszy #defineLCDROW20...
Dzięki wszystkim za opinie. Oddałem dziś projekt został oceniony na 5;] Dokonałem kilku zmian w programie więc wrzucam nową wersję: http://obrazki.elektroda.pl/8149391200_1... Jeśli już eliminujesz drgania styków programowo i w dodatku z użyciem timera, to mogłeś się pokusić o tak samo zrealizowane opóźnienia. Mnóstwo pamięci pożera...
Witam, Do pamięci zewnętrznej odwołujesz się przez zwykły wskażnik o adresie większym niż wewnętrzna przestrzeń adresowa RAM'u Więc aby stworzyć tablice musisz odwołać się przez wskażnik char* bufor = (char*)0x8000; // deklaracja adresu początkowego tablicy //--------------------------------------...
Zamień "in r24, MCUCR" na "in r24, 0x35" ... to wskazanie na adres w pamięci rejestru MCUCR. Wyeliminuje ewentualną pomyłkę w pliku deklaracji mikrokontrolera ;)
aby używać pamięci rozszeżonej ram musisz mieć ustawiony bit SRE w rejestrze MCUCR. Linii nietrzeba konfigurować.. Pierwszy bajt pamięci rozszeżonej znajduje sie za ostatnim bajtem pamięci podstawowej (zakres pamięci od 0x260 do 0x825F)
jeśli ustawisz bit sre znajdujący sie w rejestrze mcucr, a pamięć zew ram masz podpiętą do portów a i c, i pinów ale/wr/re to całość masz mapowaną w sprzęcie.. (na google.pl znajdziesz jak podpiąć ram) pamięć wewnętrzna znajduje sie w adresach od 0x60 do 0x25f, a zewnętrzna tuż za tz. od 0x260 do 0x825f (dla 32KB ramu), odczyt i zapis wyglądają tak...
Co do pierwszych dwóch uwag - zgadzam się, dodałem konkretne cytaty w odpowiednie miejsca. Co do ostatniej, tak, wyjaśniam już, że zwykle jest to początek pamięci flash, jednak w specyficznych przypadkach (konkretnie przy ustawieniu bitu IVSEL w rejestrze MCUCR w procesorach, w których ten bit jest dostępny) przenosi początek tej tablicy pod adres w...
No jeśli chcę używać przerwań to z dokumentacji wynika że powinienem na początku kodu botladera umiećcić:[syntax=c]/* Umożliwienie zmiany wektorów */ GICR = (1<<IVCE); /* Wektory przerwań na początku obszaru botlaoadera */ GICR = (1<<IVSEL);[/syntax] natomiast na końcu analogicznie:[syntax=c]//wyjscie i ustawienie przerwań na początku pamięci...
Program chodzi doskonale na Mega32. Ale kod jest na tyle mały, że zmieścił się do bliźniaczej Mega16. Na pierwszy rzut oka identyczne oprócz wielkości pamięci. Różnice są głębsze niż tylko pamięć: - zupełnie inaczej ułożona tablica wektorów przerwań. - inne umiejscowienie bitów w rejestrze MCUCR. choć przy ponownej kompilacji programu pisanego etykietami...
polecam Atmega128. 128KB pamięci flash na program - pomieścisz wszystko a nawet więcej, 16MHz przy 16Mips, sterowalnych pinów jest 53 więc można sie spokojnie bawić. pamięć danych - spokojnie można podłączyć do mikrokontrolera zewnętrzną kość ram (do 64KB), ustawić odpowiednie rejestry (mcucr itp) i już jest pamięć mapowana w przestrzeni adresowej,...
Witam, Nie zakładałem nowego tematu, gdyż szukam pomocy własnie odnosnie pamiec zewnętrznej SRAM i atmegi128L. Otórz mam atmege128L(8MHz) i pamiec SRAM: BS62LV1027 i zatrzask 74HC573. Wszystko mam juz połączone i teraz piszę kod na tą pamiec. Czytałem o podłaczeniu pamieci w dokumentacji zarówno procka jak i pamieci i nie rozumiem do konca jak wygląda...
...ta funkcja nie jest całkiem niepotrzebna - ten odczyt z zewnetrznej pamięci ustawia "przy okazji" zewnętrzny zatrzask, którego zawartość jest następnie wykorzystywana do adresowania rejestów ATA/IDE. To jest %100 racji , pisałem o tym wcześniej. Autor projektu 'cd_free' bazował na schemacie i kodzie yampp3 też to pisałem, została tylko usunięta...
Avrdude chyba sam to robi. Dodano po 1 Zmieniłem kwarc i kondensatory przy nim, bez rezultatu. Dodano po 8 Podejrzałem też fusy innym programatorem dla pewności (STK200) pod bascomem i wszystko jest tak jak powinno. Jtag wyłączony, tryb zgodności wyłączony i kwarc zewnętrzny a mega pracuje jak chce. Dodano po 45 Portc odblokowany. Winowajcą jest obsługa...
Program bootloadrera jest ładowany na końcu pamięci. W chwili uruchomienia programu użytkownika wykonywany jest skok z boot'a do adresu zero (czyli na początek pamięci) (albo gdzie tam chcesz - zależy tylko od własnych preferencji i ustawień w linkerze). Największa zabawa z boot'em polega na jednoczesnym czytaniem i pisaniem do pamięci flash - i tu...
Widzę, że temat nie dotyczy tylko mnie. Mi osobiście nie udało się jak narazie jeszcze wyeliminowac tych zakłóceń, także nie udziele pewnie pomocnej rady. Korowiow83: Nie napisałes jakiego zatrzasku używasz, spróbuj wersję AC573, mi osobiście to nie pomogło ale .... Kody wydają sie poprawne i skoro sprawdziłeś połączenia to ja więcej nie pomogę. Candle:...
Witam, doczytalem ze nie wystarczy wlaczyc XMEMa w MCUCR aby obslugiwac zewnetrzny ram,ustawiam sobie ze bedzie jeden sektor pamieci. Tym samym trace 4KB wewnetrznego RAMU ale zyskuje zewnetrzny. Pamiec strobuje z uzyciem A15 wiec interesuja mnie adresy 0x8000 - 0xFFFF. Trzeba jeszcze powiadomic o tym kompilator. Uzywam WinAVR i jest tam sekcja w makefilu...
Panowie, czy któryś z was używał VUSB z pamięcią zewnętrzną RAM ? Ja mam 64k na mojej płytce z atmega128 i niestety gdy dodaje: [syntax=c] void before_main(void) __attribute__((naked)) __attribute__((section(".init3"))) { MCUCR = 1<<SRE; SFIOR = 1<<XMBK | 1<<XMM0; DDRC = 0x80; PORTC &= ~(1<<7); SP = 0xffff; } [/syntax] do...
cześć. odgrzewam temat, ponieważ problemu nie udało się rozwiązać. Płytke procesora osłoniłem 1mm stalową blachą. low esr 1000u obok procesora. nic to nie dało, albo nie wiele. Procesor dalej się resetuje przy włączeniu stycznika. Program nie idzie w krzaki i zawartość pamięci nie ulega uszkodzeniu dzięki ustawieniu odpowiednich fusebitów zegara, zasilania....
To taki nawyk z C i asemblera :D . A poza tym to łatwiej manipulować rozmiarem stosu mając te informacje w programie, zamiast cały czas wchodzić w to okienko, gdzie to się zmienia. Jak podasz te informacje w programie to mają one priorytet nad tymi z okienka i tyle. Wgrywałeś ten program z moimi poprawkami do uC :?: Czy coś jest generowane na porcie...
Inicjalizacja : .def TempA=r17 InitExtSRAM: in TempA, MCUCR sbr TempA, 1<<SRE out MCUCR, TempA ret Zapis bezpośredni : DirectWriteExtSRAM: sts DataInExtSRAM, TempA ret Zapis przy po-mocy rejestru indeksowego : IndexWriteExtSRAM: ldi XL, low(DataInExtSRAM) ldi XH, high(DataInExtSRAM) st X+, TempA ;podobnie z Y(YL:YH),...
Jęsli jeszcze potrzebne:) LCD masz połączony przez dekoder adresu. Wystarczy dane podać na adres 0xFF05 – rejestr danych, a instrukcje na 0xFF04 – rejestr instrukcji. Przyklad ( sprawdzany na ATMEGA128 EVB503 - wtedy mam inne adresy danych i instrukcji. W przykładzie zmieniłem na te które są Ci potrzebne w EVB03) #define LCD_instrukcje (*(unsigned...
Stosując interfejs JTAG mamy właśnie sprzętowy dostęp do wszystkich rejestrów, jakie by one nie były. Można np. załączyć debuggowanie, potem wymusić 0 (sprzętowo - zwierając tą linię do masy) na jakieś linii portu. Będzie to widać w AVR Studio - zmieni się stan PINn. Można też zmieniać wartości pszczególnych rejestrów, flag np. słowa stanu (odpowiednik...
Cześć. Napisałem swój pierwszy program na przerwaniach, ale nie działa on do końca tak jak zamierzałem. Układ jest taki, że pod port B mam podpiętą diodę/diody, a pod wejście wywołujące przerwanie PD3 (INT1) mam podłączony oscylator o zmiennej częstotliwości w zakresie od 0 do +/- 30Hz. Program miał polegać na tym, że powyżej granicznej częstotliwości...
Witam wszystkich, robię mały projekt do którego używałem Atmegę8. Zaczyna mi brakować pamięci więc stwierdziłem, że wymienię ją na Atmegę328. Niestety jest trochę zabawy z przerobieniem kodu, po pierwsze w Atmega328 nie można używać PD0 itp, tylko PORTD0. Po drugie timery ustawia się innymi rejestrami. Ogólnie program sobie przerobiłem, niestety została...
Witam, Napisalem gdzie zaczyna sie problem, uk wywołuje przerwanie samoistnie, zaraz po globalnym zezwoleniu na przerwania sei() sam przechodzi do przerwania i je wykonuje. Chce mieć możliwość przerwania pętli while w jakimkolwiek momencie. Sposób jaki zastosowałem uważam za mało efektywny ale nie wiem jak inaczej się za to zabrać. Pozdrawiam #define...
witam wszystkich, Mam moduł MMnet03, który zawiera atmege128, mam problem z uruchomieniem LCD w interfejsie 8bitowym, chce to zrobic jak jak jest w dokumentacji rys18 http://www.propox.com/download/docs/MMne... Tzn, tak jak podłącze sie bezpośrednio do portów uC które są wyprowadzone na płycie,to wyświetlacz w interfejsie 4bitowym mi działa odpowiednio...
Postanowiłem na moment uprościć sobie zadanie - użyłem przerwań przepełnienia Timera1 zamiast przerwania porównania. Nie wiem czy program jest napisany efektywnie, ale za to działa. Wrzucam jego kod: INT0 znajduje się również instrukcja zapalenia diody. 3. Licznik mrugnięć zmniejszyłem do 19. Dzięki temu ostatnie przełączenie powoduje zgaszenie diody...
Witam, Próbując zaprogramować Attiny13 do kitu AVT2929 (Sterownik LED mocy do latarek) programem pobranym z elportalu napotykam błąd Załączniki ogólnodostępne w sieci - usunięto. Poprawiono tytuł. LordBlick
Eh, opornie to idzie. Próbuję obsłużyć przerwanie. Że tak powiem - moje pierwsze w życiu :P Póki co nie idzie za bardzo. Przypuszczam, że coś źle robię z ustawieniami pamięci (.org coś tam). W każdym razie - mam podłączony klawisz do pinu INT0 (ATmega16). Program ogólnie komunikuje się z Delphi, ale chciałem, aby przy naciśnięciu tego klawisza wyszło...
Funkcje zadeklarowałem jako inline, ponieważ są one wywoływane tylko raz w całym programie. Bez inline kompilator nie domyślił się tego i tworzył normalne wywołania, co było widoczne w listingu i w rozmiarze programu. Stosując inline zaoszczędziłem naprawdę sporo pamięci. Przeniesienie definicji funkcji do pliku nagłówkowego obecnie niby działa. Poniżej...
Program przekopiowałem już toczka w toczkę z płyty dołączonej do książki, oczywiście zmieniłem pod moje podłączneie do procesora ukłądu pcf8583 ale nadal nie wywołuje przerwania ten układ i nic nie mogę z niego zczytać. Jak sprawdzić czy czasem w jakiś sposób nie uszkodziłem tego układu? Jedyna różnica przy podłączniu odbiegająca od książki to nie podłączone...
Wszystko uwzględniłem. Przetestowałem funkcję dummy_timer, ale po chwili zastanowienia użyłem zwykłych opóźnień. Więcej wolnego miejsca w pamięci uC. Przełączanie stanów przerwania działa idealnie. Problem pojawia się przy dłuższym przytrzymaniu przycisku, uC jest w stanie uśpienia i nie reaguje już na wybudzenie. [syntax=c] #include "LCD.h" /*plik...
Poniżej źródło w którym mam: -pomiar ADC -pomiar szerokości impulsu PWM wysterowanie przekaźnika -USART Mikrokontroler ma spełniać funkcję sterownika do ledów jako oświetlenie samolotu z wyróżnieniem wszystkich etapów startu jak kołowanie włączenie silników itp. [syntax=c] #include <avr/io.h> #include <inttypes.h> #include <util/delay.h>...
Witam. Po przerwie wracam do tematu gdyż nadal nie mogę poradzić sobie z obsługą karty Compact Flash za pomocą mikrokonrolera. Sprawa wygląda w ten sposób że wykonałem układ do obsługi karty CF jak na poniższym schemacie. Poniższy schemat jest zaczerpnięty z Elektroniki Praktycznej z rocznika 2/2004 http://obrazki.elektroda.net/39_12252239...
bascom mcucr atmega8 mcucr rezystor pamięć pamięć
hasło netia pralka siemens grzeje stare kable olejowe
układ gasikowy stycznika politechnika poznańska
Regulacja napędu bramy przesuwnej - kluczowe kroki Unox XVC305P nie włącza się po zaniku napięcia