W twojej pierwszej deklaracji jest nieszczęście. Spróbuj tak: struct TPole{ unsigned char bit_0:1; unsigned char bit_1:1; . . unsigned char bit_7:1; } bit_field; zdefiniuj dodatkowo takie coś: #define Get_bit(adr) (*( (volatile bit_field*) (adr) ) ); Teraz chcąc wyłuskać jakiś bit piszesz: zmienna = Get_bit (i tu adres właściwy bajtu na którym ci zależy...
Wciąż nie wiem, czy to ja gdzieś robię błąd, czy też jest to wina kompilatora - pierwszy raz mam takie zjawisko, a zawsze bezboleśnie używałem różnych takich konstrukcji.... Ponieważ jest to zmienna lokalna może być przechowywana tylko w rejestrach procesora lub cos w tym rodzaju. Spróbuj ja zrobić volatile.
A czy można wiedzieć w takim razie ile do dyspozycji mam pamięci RAM (lub ile przy standardowej optymalizacji w winavr zajmuje stos)? Pozdrawiam Ja stosuje nastepujacy sposob. W dowolnym przerwaniu odczytuje wskaznik stosu do zmiennej porównując z poprzednia wartoscia i zapisuje mniejsza. Puszczam program naciskam co mam nacisnąc staram sie wykonac...
Nie bardzo rozumiem , jaki cel chciałbyś osiągnąć :( Do czego są Ci potrzebne , dane w "tab_mala" :?: A jeśli chodzi o wskaźniki , to możno z nimi robić właściwie wszystko.Ustawić na dowolny adres w pamięci , bez względu na to , czy będzie to tablica , struktura ,unia , inna zmienna , itp. Piotrek
Oki rozumiem, napisałem tak: [syntax=c]//zapis do eeprom twistart(); if ((TWSR & 0xF8) != (TWINT)) ERROR(); else { twiwrite(0b10100000); twiwrite(2); //adres twiwrite(123); //wartosc twistop(); _delay_ms(200); }[/syntax] No i wchodzi w if-a i wyrzuca komunikat o błedzie. Czyli co mam zła funkcje twistart(), tak.?? EDIT: Zauważyłem jeszcze ze przy zakomentowaniu...
Hej. Mam do Ciebie jeszcze takie pytanie przy okazji. Po kompilacji pokazuje sie komunikat o zajetości SRAM (całkowitej bo tam sa sekcje wypisane) i pokazuje 1 bytes (1,6%). Pokazuje 1 bajt mimo że deklarowane jest w sumie 11 bajtów (w tym 4 uint16_t). Jak uruchamiam symulacje i dodaje zmienne do "watch" to kazda zmienna jest pod innym adresem. Czy...
Witam, Jeszcze przy okazji niejako, może mi ktoś wyjaśni, bo spotkałem się z dwiema metodami zapisu i chciałbym zrozumieć, czym różni się taki zapis eeprom_write_byte(&zmienna, wartosc); od zapisu takiego eeprom_write_byte((uint8_t *)zmienna, wartosc); zakładając, że uint8_t to unsigned char? Jeśli używasz &zmienna, to zapisujesz...
... co do resetu to : Reset zeruje tylko zmienna globalna a zmienna lokalna pozostaje nie ruszona :) Ze tez tego nie moglem sie nigdzie doczytac... Przestrzeń w pamięci RAM na zmienne lokalne , jest przydzielana dynamicznie i dla tego nie są one zerowane , bo w czasie kompilacji ich położenie(adres w pamięci) nie jest znane. Bascom również nie zeruje...
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...
Tutaj podajesz adres (zmienna addres) int writemmc( int address ) a u Ciebie jest stały i wynoasi 0x200. (czyli 512). int writemmc(int address) { // write sector to MMC int i; DDRB |= (1<<redled); uint8_t c; // 512 byte-write-mode if (Command(0x58,0,512,0xFF) !=0) { //tu jest stała wartość a powinno być...
Operator przypisania zawsze myli mi sie z porówaniem gdy na jakis czas przestane pisac (pisze duzo w php). Hmm, trzeba zabrac sie za te dokumentacje w takim razie. Z kursu udało mi sie uruchomic timer, wiec myslałem ze jest ok. Co do wyskoczenia poza rozmiar - to program tylko do testów, udało mi sie zapisac dane do eeprom, uruchomic timer, teraz chciałem...
Twój błąd polega na błednym przekonaniu, że skoro kompilator skompilował kod bez błedu to musi działać. I działa (przypadkiem), tylko, że wprowadza niejednoznaczność i nie ma nic wspólnego z dobrym stylem programowania i znajomością języka C. Wpisujesz pod przypadkowy adres bajt. Dlaczego przypadkowy? Czy zainicjowałeś wskaźnik Frame_LCD na strukturę...
A jak sprawdzać wolną pamięć w czasie pracy programu na AVR, podaj przyklad kodu Dodano po 1 Cześć! Bardzo dobrze, że pytasz o monitorowanie wolnej pamięci w trakcie pracy programu na mikrokontrolerach AVR, ponieważ jest to ważny aspekt w projektowaniu stabilnych i efektywnych aplikacji. Istnieje kilka metod na sprawdzanie dostępnej pamięci RAM, ale...
Witam, korzystam z WinAVR oraz AVR Studio. Napisałem dwie proste funkcje: void zapisz( uint8_t pozycja, uint8_t wartosc ) { eeprom_busy_wait(); eeprom_write_byte(&pozycja,wartosc... } char odczyt(uint8_t pozycja) { eeprom_busy_wait(); return eeprom_read_byte(&pozycja); } Wiem, że ATmega...
Witam ! Tracąc dziesiątki godzin szukania w Internecie i dwa tygodnie prób i błędów z w/w LCD proszę o pomoc (i pokazanie błędu) Dołączam kod w http://obrazki.elektroda.pl/7865128700_1... [syntax=c][/syntax] // --------- sterownik LCD -> chyba NT7108/NT7107 (podobny do KS0108 ) --------------- // ATmega 128 + POWERTIP -> LCD PG12864...
Piszę program który w założeniu ma posiadać pamięć ustawień. Dokładniej jest w nim 11 zmiennych oraz 128 możliwości ich ustawień (128 banków pamięci dla tych 11 zmiennych). Każda zmienna jest 8bitowa. No i dostaje od kompilatora (WinAVR ) dziwne komunikaty: warning: pointer targets in passing argument 1 of 'eeprom_read_byte' differ in signedness W kodzie...
Witam Napisałem dość prosty program na ww płytę ewaluacyjną. Sczytuję czas (sekundy minuty i godziny) z RTC zamontowanego na płycie i po konwersji wyświetlam to sobie na moim LCD 2x16. Problem tkwi w tym że program działa raptem nie całe 5 sekund i wisi. Dołączam wszystkie pliki projektu do sprawdzenia. Korzystam z dodatkowych bibliotek TWI.h - do obsługi...
Witam! Ostatnio próbuję swoich sił z tym mikrokontrolerem i napotkałem się na dziwne zachowanie, otóż w przypadku takiego kodu [syntax=c] counter_temp =0; unsigned long temp; temp = (*(Table_temp + 4) - '0'); counter_temp += (*Table_temp - '0') * 100000000; counter_temp += (*(Table_temp + 1) - '0') * 10000000; counter_temp += (*(Table_temp + 2) - '0')...
A możesz mi powiedzieć skąd Ty bierzesz takie informacje? z dokumentacji, z internetu, z doświadczeń i prób. A czy przy okazji mogę się podpytać o taką rzecz. Mam układ ATMega162 z zewnętrzną pamięcią RAM 62256. Całość jest pisana w AVR-GCC używając AVR Studio. Potrzebuję aby ta pamięć RAM była tylko do przechowywania takich danych jak np tablica....
Witam. Próbuję stworzyć bibliotekę obsługującą wyświetlacz LCD (2x20, HD44780) podłączony do mikrokontrolera (ATmega32) poprzez TWI (I2C) i układ PCF8574AP. Kompilator to WinAVR (wersja oznaczona numerkiem a raczej datą: 20050214). Sama komunikacja z układem PCF8574 jest pewna (korzystam ze sprawdzonych bibliotek obsługujących sprzętowy interfejs TWI...
Praktycznie kazdy program który znajduje używa biblioteki ice.lib mimo, ze nie znam bascoma to widze, ze jest deklarowana zmienna np. "tekst", a później uzywana funkcja z tej biblioteki pisz_tid {tekst} więc poniżej wstawiam to co jest w bibliotece. Hmm jak tak teraz patrze to widze, ze tu praktycznie assembler jest i nasuwa mi się pytanie, czy w winavr...
Przystąpiłem do lekcji 10. Zrobiłem analogiczne poprawki, jak w lekcji 9, ale niestety również nie mogę skompilować kodu. Poświęciłem praktycznie cały dzień na szukaniu przyczyny. Pojawiają się takie błędy przy kompilacji: http://obrazki.elektroda.pl/4932303600_1... Tutaj zamieszczam kod programu po moich poprawkach: ////////////////////////////////////////...
Witam, Jestem w trakcie przerabiania kursu z EdW http://sklep.avt.pl/photo/product_info/c... Pracuje na zestawie startowym ZL3AVR http://obrazki.elektroda.pl/1437402200_1... Zamieszczam kod programu: ////////////////////////////////////////... // main.c - testowanie...
Witam! Na forum zawsze znajdowałem odpowiedzi i drążyłem każdy temat samodzielnie w myśl zasady jednego z moich wykładowców "świat dzieli się na samouków i nieuków"... lecz tym razem rozłożyłem ręce po 3-dniowej walce z TWI/i2c (w między czasie wypiłem tylko 2 bro) i postanowiłem nieśmiało założyć temat (chyba mój inauguracyjny...). Przeczytałem regulamin...
wrzucam całośc, co do Twojego rozwiązania sprawdzze jutro. Wcześniej nie wywoływałem funkcji w przerwaniu to pojawiały się 'krzaki' na LCD - przerwanie od T0 przerywało chyba funkcję wyświetl() dlatego dałem w przerwaniu. /*======================================... WinAvR wersja WinAVR-20050214 **Program obsługujący woltomierz/generator...
adres zmienna adres komórka zmienna adres komórki zmienna
regulacja zegarka android ustawienia fabryczne pralki electrolux blokada drzwi
sharp lc60le740e pralka bosch aquastop
Brak kompresji na cylindrze - koszty naprawy i przyczyny Mocniejsza wieża od Philips FW590C - porównanie modeli