Wydaje mi sie ze to calkowicie wyczerpuje problem. #include <stack> int main() { stack<int> Stos; //deklaracja stosu liczb calkowitych S.push(8); // odlozenie na stos liczby 8 S.push(7); // i 7 S.push(4); // i 4 assert(S.size() == 3); //dlugosc stosu wynosi 3 inty assert(S.top()...
1. Zmieniasz tę deklarację z int. na char. 2. Zmieniasz procedury zapisu i odczytu: PROCEDURE na_stos (VAR wstosu: wsk; d: Integer); na: PROCEDURE na_stos (VAR wstosu: wsk; d: char); 3. Zapisujesz na stos: for x:=1 to length(slowo) do na_stos(wskaznik,slowo[x]... 4. Odczyt ze stosu: repeat ze_stosu(wskaznik,literka);...
Otwierasz plik startup_xxxxx.s, klikasz poniżej okna edytora w zakładkę Configuration Wizard i ustawiasz rozmiar stosu. Radziłbym jednyk przemyśleć deklaracje danych. To na ogół nie jest dobry pomysł, żeby mieć zmienne lokalne procdury o objętości setek bajtów lub więcej.
(at)m_misek Z ciekawości wrzuciłem Twój program do Atmel Studio i sprawdziłem jego wykonanie w symulatorze. Nie widzę żadnych błędów. Więcej, ciąg znaków najpierw jest kopiowany z Flash do RAM, a następnie na stos. To co widzisz jako 21 FF, to jest zawartość stosu bezpośrednio za tablica znaków wrzuconą na stos. Proponuje sprawdzić: 1. Jaki układ masz...
Nie ma tutorialu C do ARM. Jest po prostu C i musisz sie nauczyc nowej architektury (np ARM), i jak sie pewne rzeczy ustawia, stosuje.
Witam! Uczę się programowania mikrokontrolerów STM32 (aktualnie męczę STM32F103). Programy piszę w C, ale co jakiś czas zerkam w to co spłodził kompilator - w celach edukacyjno-poznawczych. Napisałem prostą funkcję obsługi przerwania od SysTicka. Deklaracja funkcji ma postać: [syntax=c]void SysTick_Handler(void) __attribute__((interrupt));[/syntax]...
Od pewnego czasu uczę się tworzyć oprogramowanie pod Azure RTOS. Platforma sprzętowa to STM32H743IIxx. Początkowo korzystałem z materiałów STMicroelectronics, np. Azure RTOS workshop (w załczniku), ale to źródło wiedzy dość szybko się wyczerpało. Później korzystałem z materiałów on-line ze strony Microsoftu - , ale i tutaj dokumentacja, choć szczegółowa,...
#lit1 jest z tego co pamietam oznaczeniem numeru bitu, czyli cyfra od 0 do 15. takie operacje realizowane sa na normalnych zmiennych/rejestrach o wiekszym rozmiarze. warto chyba jeszcze dodac, ze powyzsza deklaracja stworzy ci zmienna STATYCZNA, to znaczy bedzie ona zajmowac miejsce w pamieci przez caly czas. zmienne lokalne dla dsPIC sa tworzone albo...
W jaki sposób dokładnie określić rozmiar __main_stack_size i __process_stack_size w skrypcie linkera? Nie da się - nawet jak sobie to sprawdzisz metodami o których piszesz to i tak jest to wartość "na oko". Co do wypełnienia stałymi danymi i podglądania, to samo podglądanie można wykonać przy użyciu zakładki Memory, a wypełnianie najlepiej zrobić w...
Lepiej wykorzystaj do tego celu pamiec programu , ewentualnie eeprom. Sposob deklaracji tablic dla winavr : dla eeprom : #include <avr/eeprom.h> #define EEPROM __attribute__ ((section (".eeprom"))) unsigned char temp [20] EEPROM ={1,2,3,4,}; dla pamieci programu : #include <avr/pgmspace.h> static unsigned char temp_1 [2] PROGMEM = {1,2,3,4};
Nie wiem czy w dobrym poście piszę? Kolega powiedział że nie ma możliwości w 2051 ale jak wyczytałem w opisie tego procesora to po wyłączeniu zasilania bądź resecie jest możliwość zapisania zmiennych na stosie lub w pamięci ROM/Flash? nie mogłem się doczytać? Proszę o pomoc. Mam szczeże mówiąc niemiecki obrotomierz na wyświetlaczu LED i gdy odłączę...
Po błędach które ci się pojawiły wnioskuje że grzebałeś w kodzie. W wielkim skrócie kompilatorowi chodzi o brak deklaracji struktur w których jest zakodowana treść strony. W oryginale rozwiązano to poprzez zainkludowanie do pewnego pliku c (niestety nie pamiętam którego) pliku fsdata.c Ponieważ taka konstrukcja powodowała błędy w Eclipsie (wielokrotne...
dobra uporałem się z jednym problemem, trzeba było ustawić tablicę c globalną. Już tak robiłem ale miałem jeszcze inny błąd. Chyba chodzi o ustawienia stosów w linkerze? Czyli teraz moje przerwanie wygląda tak: void TIM1_CC_IRQHandler(void) { if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET) { ADC_ExternalTrigConvCmd(ADC1,...
Zgaduję, że w tym przypadku w pliku startupxxx.s masz ręcznie zmienić rozmiar stosu. Lepiej jednak i prościej będzie zwyczajnie nie deklarować dużych tablic w procedurach, bo to fatalny nawyk w przypadku mikrokontrolerów, zwłaszcza, kiedy programista jest początkujący i nie wie, gdzie się zmienia rozmiar stosu... ;).
W urządzeniu część kodu jest wymienna a część stała. To co ma być w tej stałej części mam udzielnym pliku i dołączam do każdej wersji projektu. Kod wynikowy tej części jest wpisywany do wydzielonego obszaru pamięci. Muszę jeszcze zadbać aby nie zależał on od tej wymiennej części. Z tym mam problem. Na początku jednej z funkcji znajduje się deklaracja...
Reasumując wszystkie lampy do jazdy dziennej nie posiadające oznakowania RL i tylko DRL są w myśl przepisów nie dopuszczone do ruchu w Polsce. Ps: Gdyby tylko stosowne organa w Polsce wzięły się za to konkretnie to był bym w stanie podjąć szybkie starania aby uruchomić/kupić stację kontroli pojazdów (przynajmniej w moim regionie) a koszta zwróciły by...
W XC8 niby działa zarówno __flash, __mmx oraz atrybut programem jak i same const: . Jeśli chodzi o GCC to potrzebna jest stosunkowo nowsza wersja, 4.9 czy tam 4.7 w górę. Co tam trzeba włączyć w Microchip Studio nie wiem, nie używam. Wracając do kodu -funkcja bez _SFR_IO bo jest już w nazwach rejestrów void SFR(volatile uint8_t *sfx) { *sfx = 0x55;...
->Yes2mike: AM jest w lotnictwie, gdyż powyżej pewnej prędkości obiektu FM "głupieje" (może wyjaśni to ktoś bardziej znający się na fizyce); nie pamiętam prędkości, ale w transporcie lądowym tak dużych się nie stosuje... Efekt Dopplera działa, ale nie jest on wcale taki duży. Przy prędkości ok. 1000km/h i częstotliwości ok. 100MHz mamy ok. 100Hz różnicy....
dano po 4 A sugestia, że w plikach nagłówkowych dokonujesz zapis, to już zupełny banzai To nie jest "dokonanie" zapisu, a jedynie sugestia, że po wykorzystaniu funkcji w innej części programu taki zapis zostanie wykonany. W C++ definicje funkcji dość często występują w plikach nagłówkowych np. jeżeli są inline, szablonowe czy też zdefiniowane wewnątrz...
W przypadku serwisów AGD i RTV istnieje obowiązek rejestrowania się w GIOŚ i składania deklaracji co pół roku, ponieważ przepisy nakładają na punkty serwisowe obowiązek przyjmowania od klientów sprzętu, którego nie da się naprawić, lub jest to nieopłacalne. W efekcie punkty serwisowe zostają uznane za punkty przyjmowania złomu elektronicznego. Istnieje...
Zaczynam zabawę z programowaniem µC więc robię przykłady z książki :) Gdy wywołuję program w symulatorze AVR(jeszcze nie zmontowałem płytki uruchomieniowej :-/ ) to gdy wywołuję podprocedurę procedurą CALL i na końcu tej podprocedury jest RET to po wywołaniu RET następuje RESET. Nazwa błędu w symulatorze(z 8 lub 9 na końcu ... różnie ... teraz...
A gdzie masz deklaracje STOSU.
Task w którym jest strtok() nie jest przerywany w trakcie wykonywania tej funkcji, żadnym innym używającym strtok(). Druga sprawa, że z strtok i tak wskakuje do __strtok_r() a więc reentrant i pod Yagarto to działało. Jednak rzeczywiście wymiana na strtok_r() poprawia sytuacje. Nie jestem w stanie sprawdzić całego kodu czy działa, bo wywołań tej funkcji...
Witam, próbowałem przeanalizować ten kodzik ale naprawdę , uwierz - jest to baardzo ciężkie. Robisz narazie wszystko niezgodnie z zasadami programowania. Rozumiem oczywiście, że dopiero się uczysz ale postaraj się przestrzegać kilku zasad o których za chwilę a będzie nie tylko tobie łatwiej analizować napisany kod ale co najważniejsze szukać błędów....
Witam serdecznie, mam banalny problem heh siedzę od paru dni i nie mogę go rozwiązać , a mianowicie gdy wykorzystuję przerwanie zewnętrzne INT_0 ustawiam sei gimsk oraz mcucr na stan niski i wywołuje przerwanie lecz program nie chce z niego wyjsc , nie wiem o co chodzi , program praz pętle czasowe sa na 100% napisane dobrze bo dgy używam warunków sbic...
Hey prawidłowo program w asm dla t2313 powinien się zaczynac od adresy 0x0013, adresy od 1 do 0x0012 zarezerwowane są dla wektorów przerwań. W adresie 0x0013 powinna być deklaracja stosu, zgodnie z notą: RESET: ldi r16, low(RAMEND); Main program start out SPL,r16; Set Stack Pointer to top of RAM Czyli program powinien wyglądać tak, że pod adresem 0x0000...
Nie wiem, co miałeś na myśli pisząc: (jedyne co zmieniam to wielkość bufora danych we flashu) Dla mnie taka sprawa ewidentnie "pachnie" nakładaniem się segmentów zmiennych globalnych ze stosem danych lokalnych oraz stosem powrotów z wywoływanych funkcji. Generalnie kompilatory nie radzą sobie z automatycznym wyznaczaniem niezbędnych rozmiarów stosów...
Oczywiście że masz błąd w programie, bo do podprogramów skaczesz (LJMP) zamiast je wywołać LCALL I dlatego stos "leci". To raczej nie to. Jezeli skaczemy z podprogramu JMP i konczy sie on unstrukcją RET to tak jakbysmy wykonali podprogram glowny. Często stosowana sztuczka w celu zaoszczedzenia 2 lub wiecej bajtow. Nie widze deklaracji poczatku stosu...
Witam, Dyrektywa: $Crystal = 1000000 nic nie daje. Nie zależy mi na odliczaniu idealnych odstępów czasu, mają być to odstępy między "uderzeniami przekaźnika". Jednak w tej sytuacji, nieraz "waitms" zadziała tak że przekaźnik nie zdąży się załączyć, a nieraz czekam dobrych kilka sekund (waitms 500). Zgadza się, procesor ma mało SRAM-u, ale jednak ją...
teraz tak na starej wyskakuje mi ten błąd, a na nowej nie czyta mi w ogóle cipa . hahahahah :D odpal combofixa. Moze pomoze i dodaj jeszcze deklaracje programowego stosu i ramki. Narazie zwiekszyles tylko stos sprzetowy. Moim zdaniem jest to typowy blad z kompem a nie z kodem. Ja bym poazadnie go przeczyscil. A w tej nowej wersji co ci nie czyta chipa,...
Przepraszam za grzebologię, ale postanowiłem to umieścić na forum, żeby był pożytek :] ( W związku z mailem, jaki otrzymałem :], Był on opatrzony tym tematem :] ) Kod programu na 8051 wysyłającego komunikat powitalny "AT89C51 ver. 1.0", a następnie odbierającego to, co wysyła komp i wyświetlającego na LCD. Prędkość transmisji 2400 b/s. ;------------------------------------...
No, niedociągnięć to trochę jest. Przede wszystkim zaraz przed pierwszym rozkazem asemblera (u Ciebie deklaracja stosu) powinieneś dać .cseg .org 0 - tak dla pewności. Po drugie, źle ustawiasz port LCD. (out DDRD). Powtarzasz to polecenie dwa razy i w efekcie tylko PD0 zostaje ustawiony jako wyjście - reszta linii portu D jest jako wejście. W twoim...
Jako ciekawostę wrzucę Ci prosty sterowniczek do RS-a na PC mojego autorstwa. Możesz go lekko przerobić i używać na PC do wysyłania określonych sekwencji ;) ;---------------------------------------... ;Sekcja dyrektyw kompilatora ;.model tiny = program i dane musza sie zmiecic w obrebie ; 1 segmentu pamieci (64 kB) ;.stack 100h...
start: ldi r16,ramend out sp,r16 ;deklaracja dna stosu ..............
Porocesor 90s8535, pod pin6 portu D podpięty DS1820 na 3 kabelkach podciągnięty 4,7k. Problem: nie chce zwrócić ID układu DS resetuje się dobrze bo podaje 0 w procedurze resetu, ale za nic nie chce zczytać id. Timingi są ustawione tak jak na stronie maxima. program bit czytany z z DS zapisuje do rejestru r22 i podprogram "rej" wyświetla w hex zawartość...
#include <avr/io.h> #include <avr/interrupt.h> volatile int a,b; SIGNAL(TIMER2_OVF_vect) { TCNT2 = 0xCD; a++; if(a == 148) //milisekunda { a = 0; b++; } if(b == 1000) //sekunda { b = 0; PORTD &= ~_BV(PD3); } if(b == 25) PORTD |= _BV(PD3); } int main (void)...
Witam! Generowanie obrazu za pomocą AVR w polskim internecie to temat tabu. Zdaję sobie oczywiście sprawę, że wyważam otwarte drzwi, gdyż są już odpowiednie procedury obsługi wyświetlania. Niemniej każdy pisze pod siebie, a raz napisana dobre procedura np. do obsługi LCD, czy jakiejś magistrali jest bezcenna. Nie jestem zawodowcem w programowaniu, wiec...
Witam Zacznę od tego, że chciałbym zrobić grę tv, ale wszystkie kody tych gier ,na jeden uc, są w asm, na którym się nie znam. Moja prośba jest taka, czy ktoś mógłby przetłumaczyć mi ten kod. Oto on: .nolist .include "/home/maro/include/m8def.inc" .list ; .listmac .cseg .equ video=7 ; pin obrazu video .equ sync=0 ; pin synchronizacji .equ...
A gdzie deklaracja stosu :> Teraz ludzie zaczna wklejac programy ktore zapalaja co drugi pin na co drugim porcie, co drugi pin na co rzecim porcie itp ;)
To kod, który u mnie na STMF107 działa - może znajdziesz jakieś róznice... W przerwaniu mam obsługę klawiatury 4x4 + kilka liczników, ale to tutaj nieistotne, więc nie zamieszczam. [syntax=c] //--------------------------------------... // Inicjalizacja TIM2 //--------------------------------------...
Napisałem już obsługę wyświetlacza LCD na ARMa po rejestrach, ale robiłem to na „gotowcu” z bibliotek z ksiązki pana Galewskiego. Niestety mam problem ze zrobieniem tego od zera. W Keilu 5 tworzę goły projekt, który zawiera tylko wbudowany plik z deklaracjami stosu itp i dopisuję swój program np. migający diodą. W ogóle nic nie rusza. Czy...
Kliknij sobie kolego słowo Select i naciśnij klawisz F1, dowiesz się wtedy jak wygląda instrukcja Select Case. Wywal też 2 ostatnie End If i wstaw je w odpowiednich miejscach, Jeśli nie wiesz gdzie, to ponownie skorzystaj z klawisza F1. Dorzuć jeszcze deklaracje wielkości stosu i ramki i powinno się skompilować. I jeszcze jedna rada na przyszłość nawet...
(at)funak Z ciekawości zainstalowałem najnowsze AS 7 i potwierdzam obserwację. Wygląda to na jakiś gruby błąd w Atmel Studio. (at)Freddie Chopin Funkcja SystemInit() jest trywialna. (at)Piotrus_999 Skrypt linkera jest o tyle interesujący, że przy braku innych deklaracji wielkości stosu (przez #define STACK_SIZE) na stos rezerwuje 0x10000, czyli 1MiB....
Zerknij tutaj: script.sct to skrypt linkera. W pliku startup.h przy deklaracji stosów jest wykorzystany atrybut zero_init .
Mam problem z prawidłowymi deklaracjami stosów pamięci. Żeby obliczyć zapotrzebowanie próbowałem zastosować rozwiązanie z $HWCHECK opisane w helpie, ale niestety nie działa prawidłowa na M2561 - zmienna _hw_lowest jest stale równa zero... Być może pomogła by obserwacja zawartości RAM podczas pracy programu co jakiś czas. Chyba najlepiej byłoby użyć...
(at)tmf - pozwala i jest to poprawne (w znaczeniu, że ma prawo działać, nie, że to dobra praktyka). Osobiście (jak chyba atom również) podejrzewam problemy z timingami spowodowane złą deklaracją zegara w stosunku do tego jak jest rzeczywiście. Są wyświetlacze bardzo pod tym kątem kapryśne.
Nie znam mozliwości w tym zakresie Bascoma. Jedno jednak jest pewne. Każdy program tego typu może działać sekwencyjnie. Oznacza to, że wywoływanie kolejnych procedur w procedurze działać musi. Jest jednak tzw granica zagnieżdzeń. Może ona wynika z możliwości samego kompilatora (programu tłumaczącego - w tym wypadku Twoim nie sądzę aby tak było), albo...
Po pierwsze to trzymaj się odpowiedniego szkieletu programu. Przykład poniżej. Musisz ustawić m.in. wskaźnik stosu. .INCLUDE "m16def.inc" ;plik nagłówkowy stosowanego procesora ;deklaracje .DEF, .EQU itp. .DSEG .ORG 0x0060 ;początek pamięci SRAM procesora .CSEG .ORG 0x0000 ;wektor zerowania - inicjalizacja µC. rjmp reset reset: ldi...
Widzę że dosyć cich. dorzucam jeszcze skrypt linkera i startup. nawet mam brakepointa w void Reset_Handler(void) i w niego nie wchodzi. ale na brakepointa w Default_Handler reaguje. Zanaczam że jak wgram program na mikrokontlorer to działa bez zarzutu... [syntax=c]/* Procedura startowa dla STM32 connectivity line devices */ /* NastÄ™pujÄ…ce...
W Zmienne globalne — wiedz, kiedy są modyfikowane Zmienne globalne muszą być ostrożnie obsługiwane, gdy są używane z przerwaniami, ponieważ te są generalnie asynchroniczne. I jeżeli zmienna globalna jest modyfikowana przez ISR, może zostać zmieniona w dowolnym momencie. Musimy mieć na uwadze następujące aspekty: Odczyt/zapis zmiennych globalnych...
Właśnie chcę to dokładnie zrozumieć by nawet bez kalkulatora móc to wyliczyć :) choć on bardzo ułatwia i nie trzeba za bardzo wysilać szarych komórek :) Kalkulatory jak najbardziej się przydadzą i za nie wielkie BÓG ZAPŁAĆ :) Z pierwszego kalkulatora zauważyłem, że Timer0 i Timer2 są 8 bitowe natomiast Timer1 i Timer3 16 bitowe Attiny13 ma tylko jeden...
Pamiętaj, że program nie zaczyna się od main. Wcześniej jest jeszcze odpowiedni kod biblioteczny - zwykle nazywa się crt/crt0 itp. Zarówno w mikrokontrolerach jak i w PC, a nawet w większych maszynach plik binarny rozpoczyna swoje wykonanie od ustalonego adresu. Linker umieszcza tam właśnie moduł crt, i dopiero z tego modułu wołany jest main - po przygotowaniu...
Można jeszcze inaczej, jeżeli zależy Ci na przerwaniach, to przy deklaracji, na końcu parametr NOSAVE On Timer1 Gen NOSAVE Durny BASCOM wrzuca na stos prawie wszystkie rejestry po wejściu do przerwania (w sumie 29 sztuk w AVR), a przed wyjściem z przerwania zdejmuje rejestry ze stosu. Stąd niesamowite opóźnienie. Oczywiście po zastosowania NOSAVE rejestrami...
Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c itd.) a linker odwali resztę roboty. Zostało...
OJ kolego ! Podstawy jezyka C sie klaniaja. W przypdku deklaracji zmiennej: uint16_t [480] kompilator wyrzuci blad bo nie wie o jaka zmienna chodzi. Poprawna deklaracja zmiennej tablicowej wyglada tak: typ zmiennej nazwa zmiennej ilosc elementow, wiec poprawny zapis to uint8_t hexek[480] Moze przyczyna jest brak pamieci stosu. Dla uint8_t hexek[480]...
Masz trochę namieszane, nie bardzo wiem skąd zacząć... I druga wstępna uwaga - to chyba IAR? Nie znam, więc musisz się upewnić, że moje domniemania odnośnie kompilatora są słuszne... 1. Jak masz skonfigurowane przerwanie INT0 - wyzwalane zboczem/poziomem? 2. Po co Ci cli na początku obsługi przerwania? AVR blokuje (sprzętowo) przerwania automatycznie...
Nie tyle musi być zadeklarowana jako reentrant, bo takiej deklaracji nie ma:) co musi być tak napisana, aby była reentrant. Co do zmiennych statycznych to mogą one być wykorzystywane - w końcu taka jest idea zmiennych statycznych, żeby były dzielone przez wszystkie instancje/wywołania funkcji. Co do innych zmiennych to dopóki się używa zmiennych lokalnych...
Witam Mam program, który wyświetla na LCD współrzędne oraz prędkość ( prędkości jeszcze nie sprawdzałem w terenie ) oraz zapisuje na karcie SD. Na razie zapis na SD jest ręczny, przez przycisk. Chciałbym żeby zapis dokonywał się ze zmienną częstotliwością zależną od szybkości, (szybkość mam jako String i Integer), np: 0 km/h - co 30 minut 0- 10 km/h...
Nie pokazałeś najważniejszego, czyli deklaracji tych zmiennych adc_result/prev_adc_result. Niech zgadnę - zmienne automatyczne? Jeżeli tak, to zagaduję dalej, że brakuje stosu.
============ Odcinek 2 ============ BITWA Ferrus zamierzał przejść do podania o trzech Arkach, gdy do Sali Rady wpadł zdyszany gwardzista. Podszedł wprost do Ferrusa i podał mu meldunek na kartce papieru. Ferrus przeczytał go z uwagą i odprawił posłańca. - Jak już wspomniałem wcześniej, - podjął przerwany wątek, - transformacja nie dokona się sama....
Koledzy Sundayman i Pandy wybaczcie ale dla mnie wasze deklaracje co do szybkości budowy analizatora widma o podobnych parametrach pozostają tylko deklaracjami i niczym więcej w zestawieniu z realnie działającym urządzeniem. Ja zawsze jestem za działającymi, nawet niedoskonałymi, rozwiązanie a nie deklaracjami, że da się zrobić super hiper. Super hiprer...
Słowo kluczowe extern się stosuje wyłącznie do zmiennych które są zdefiniowane W INNYM MODULE tzn, będą połączone dopiero na etapie linkowania a nie na etapie kompilacji. Czytaj są w zupełnie innym pliku źródłowym. Pliki nagłówkowe (.h) możliwość zapowiedź zadeklarowania danej struktury zanim ona zostanie zdefiniowana w danym module (deklaracja wyprzedzająca)...
pisałem w CodeVisonAVR i bascomie i w zasadzie nie widzę różnicy jeżeli chodzi o zajetość programu i szybkość. Wszystko zależy od programisty jak pokieruje swój program i podejdzie do sprawy. Oba języki działają na podobnej zasadzie, czesto różniąc się tylko samym sposobem zapisu instrukcji, bo w zasadzie kod się pisze na podobnym poziomie abstrakcji....
Witam !!! Timer 89C2051 Chciałem napisać program timer sterujący wyswietlacz led w .asm z zastosowaniem przerwań i timerów. Program ma mIerzyć czas przy stanie L P3.4 przy stanie L P3.5 zerowanie timera proszę o pomoc gdzie robię błąd. ;timer1 $mod51 ;istotne dla kompilatora asm51 (at)(at)(at)(at)(at) ; jesli p3.4 w stanie l to wejscie --[____________]--...
Witam Bardzo sensowne jest to co napisał eskwadrat, bo tu mam już napisany programik który robi pomiar ale wartość tego pomiary odrazu wyrzuca na port co mozna definiować jako formę wyswietlania wartości jednak w realu to za mało wiec spróbuję sie zastosować do w/w uwag pozdrawiam !!! KOD: $MOD51 ;istotne dla kompilatora asm51 (at)(at)(at)(at)(at) ;...
$mod51 ;istotne dla kompilatora asm51 (at)(at)(at)(at)(at) ;przerwania t0 i t1 pre0 equ 30h ; deklaracje komórek zmienne "set" pre1 equ 31h ; deklaracje komórek zmienne "des" prex equ 32h ; deklaracje komórek zmienne "jed" ax equ 40h ; deklaracje komórek zmienne 7seg "jed" xx equ 42h ; deklaracje komórek zmienne 7seg "des" yy equ 44h ; deklaracje komórek...
problem polega na tym ze wyswietla sie "- 0.1" stopnia czy jest czujnik czy go nie ma jesli odejme 4,7k od +5 to jest "0.0"stopnia program wyglada tak. co jest nie tak? $crystal = 4000000 $regfile "attiny2313.dat" Deflcdchar 1 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32 Set Portd.6 Config 1wire = Portd.5 Set Portd.6 Dim Odczyt(2) As Byte...
Teraz już sprawy idą w lepszym kierunku. Problematyczny jest jeszcze sposób deklaracji zmiennych w programie. Proponuję pobrać z internetu dowolny assembler na 8051 (np. ASEM-51), wtedy wszystkie błędy składniowe można na bieżąco sprawdzać. Struktura programu (dowolnego) może wyglądać np. tak: - deklaracja zmiennych i stałych, - instrukcja skoku do...
Witam, mam problem z programem w języku assembler. Oto jego treść: Program, który czyta z pliku tekstowego dane i wyświetla co M-ty znak z co N-tej linii. Nazwa pliku, M, N (1 lub 2 cyfrowe) są podawane w linii komend jako parametry wywołania programu. Pisząc program nie używać IO.MAC program ten ma działać na procesorach 32bit i kompilować się w NASM...
Sporo tego ( obsługa SD, PCF8563 + menu do ustawiania daty, obsługa PCF8574 w przerwaniu INT1 )- ale nie ma problemu - zmieniła się tylko zawartość podprogramu Pomiar była taka, jak w pierwszym poście oraz wyłączyłem w wyświetlanie na LCD tych wartości wskazań z DS18B20, oczywiście dostosowałem pozycje wyświetlania do LCD 4*20 - załączniku spakowany...
Bascom - wersja 1.11.95 Kod, no jest tego sporo: - zegar PCF8563 - Zapis na SD - dwa czujniki DHT11 - odczyt z PCF8574AP ( klawiatura ) - RC5 - ma być DS18B20 - ma być DCF77, ale nie doszedłem do tego momentu ( tzn testowałem na innym procesorze i działało ) Działa - zegar PCF8563 - dwa czujniki DHT11 - odczyt z PCF8574AP w przerwaniu ( klawiatura )...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
Witam Zmieniłem sposób obsługi wyświetlania. Początkowo miałem tak : [syntax=basic4gl] '************ Zegar 8 wyswietlaczy LED + 74HC595 + PCF8563 $regfile = "m8adef.dat" $crystal = 8000000 $hwstack = 32 ' rozmiar stosu sprzętowego $swstack = 32 ' rozmiar stosu programowego $framesize = 32 $baud = 9600 '************ deklaracje portow - 74HC595 Config...
Witam Do istniejącego i działającego "urządzenie" chciałem dodać możliwość odbioru, parsowania i odesłania SMS'a zwrotnego z danymi. Cały kod: Linia1 - to wyświetla Uart_numer - Linia1 Linia2 - to wyświetla Komanda - Linia2 czyli działa OK Ale jak podepnę modem GSM ( SIM900D ) to Uart_numer jest puste, a Komanda pokazuje ( czasem ) jakieś teksty z pierwszej...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
Problem ze zmianą nazwy pliku rozwiązałem - oczywiście należy pamiętać, że nazwa pliku może być ośmio znakowa. W kodzie dodałem: Plik = "temDD_MM" + ".txt" Mid(plik , 4 , 5 ) = Data_plik oraz w odczycie czasu Data_plik = Bcd(dday) + "_" + Bcd(mmonth) oraz zmieniłem wpis zapisu Open Plik For Append...
Jest taki sobie termometr - moduł ma BT222 podłączany przez złącze Wgrywam do niego kod Bascom: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000 '$baud = 9600 ' predkość transmisji $hwstack = 64 ' rozmiar stosu sprzętowego $swstack = 24 ' rozmiar stosu programowego $framesize = 48 ' rozmiar ramki Open "comd.0:9600,8,n,1" For Output As #3...
Jest tego sporo, DCF77, 7 x DS18B20 i DHT11 ( akurat jeśli chodzi o niego to mam wątpliwości, czy ten kod działa, bo jest na obydwu płytkach podpięty i zdarza się zawieszenie ) Nadajnik Atmega328p Dodano po 16 Odbiornik Atmega644P - trochę zmieniłem obsługę przerwania, wydaje mi się, że w przerwaniu nie powinno się wykonywać dużych obliczeń. [syntax=basic4gl]...
Witam Mam problem z multipleksowaniem wyświetlaczy LED. Mam gotową płytkę bazową oraz płytkę wyświetlaczy najpierw próbowałem ustalić, które segmenty mają się zapalać, aby poprawnie wyświetlać cyfrę. No i zaczyna się problem, bo chociaż cyfry zapalają się poprawnie to zapalają się wszystkie. Próbuję kodem, jak poniżej: [syntax=basic4gl] $regfile = "m32def.dat"...
Witam Po raz pierwszy ( lepiej późno niż wcale ) wykorzystałem wyjście CLKOUT układu PCF8563. Oczywiście podciągnąłem przez 10K do VCC. Dzisiaj po pierwszym kilkugodzinnym braku prądu, rano zegar był wyzerowany. Podejrzewam, że to przez podciągnięcie CLKOUT do Vcc. Jeśli to jest to, to może wystarczy włożyć diodę np. Schottky pomiędzy wyjście CLKOUT,...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
Witam Mam program, który, po dokonaniu pomiarów, wysyła dane przez RFM12 i zapisuje na karcie SD. Chcę dołożyć wysyłanie danych do Domoticz po każdym pomiarze. Problem w tym, że po dopisaniu obsługi ESP8266 i Domoticz ( zmienne miałem już wcześniej zadeklarowane ) to pojawiają się błędy w zapisie na karcie SD. No i wysyłanie do Domoticz przestaje działać,...
Witam, Jestem posiadaczem zestawu ZL3AVR dołączonym do książki Mikrokontrolery AVR w praktyce. Książka posiada gotowe przykłady, lecz działa mi poprawnie pierwszy program z diodami. Program trzeci, czyli przerwania + klawiatura już nie działa; Gdzie jest błąd? W podręczniku, czy gdzie? Ten program miał na diodach led wyświetlić odpowiednią wartość stosownie...
Kolego, C to C niezależnie, czy na mikrokontrolery, czy na PC. Więc ponowię radę - kup książkę do nauki C i ją przeczytaj, zanim zaczniesz coś pisać. Z twojego opisu wynika, że robisz babol na babolu, w dodatku bez zrozumienia co i po co się stosuje. Może to brutalne, ale prawdziwe. AVR Studio używa avr-gcc (czyli WinAVR) do kompilacji projektów w C,...
Witam Napisałem sobie programik, który w założeniu ma sterować wyjściami i informować o zmianie wejść. Na razie wyjścia. Testując go przez UART PC, podpięty przez przejściówkę na FT232 działa całkiem nieźle. Odbiór z UART w przerwaniu Niestety po podpięciu do AtMega32, LCD nic nie wyświetla. Moduł jest ustawiony w trybie tekstowym - po wysłaniu z innego...
Witam Mam układ, który mierzy dwie temperatury ( DS18B20 ), dwa napięcia ( PCF8591 ( pobiera czas ( PCF8563 ), a z powodu niedużego wyświetlacza ( 12 x 4 ) wskazania są zmieniane do 10 sekund po przepełnieniu Timer1. Układy PCF8563 i PCF8591 są podpięte z "zewnątrz" przewodami około 10 cm. Magistrala I2C ma obniżoną prędkość przez Config I2cdelay =...
Witam Wiem, że temat przycisku jest mocno nadwyrężony, ale ... Program ma jednym przyciskiem przy dłuższym przytrzymaniu zwiększać i zmniejszać wartość wyjścia PWM ( na zmianę ) lub przy krótszym włączyć/wyłączyć, czyli pwm1a = 0 lub pwm1a = 255. Każda z tych funkcji osobno działa ok, ale razem działa tylko włącz/wyłącz przy krótszym przytrzymaniu W1,...
Witam Napisałem program, który dekoduje sygnał DCF77 ( ustawia flagę ), następnie zapisuje ( przy pierwszym uruchomieniu ) wartości zmiennych do PCF8563 i cztery razy na dobę wysyła przez RS485. do tego dwa razy na dobę koryguje czas w PCF8563. I to działa bez problemu. Do celów testowych mam podłączony LCD. Chciałem dołączyć możliwość pomiaru i wysyłania...
Tak się dzieje jak stosujesz instrukcje Gosub, program idzie do procedury a tam znowu stosujesz Gosub i w tej na koncu nieszczęsne Retrurn. Program idzie w "krzaki" bo przepełniasz stosy i nadpisujesz w pamięci Ram zmienne. Poczytaj o procedurach i funkcjach w pomocy Bascoma, użyj Declare Sub a potem Sub: i END SUB. Stosuj też deklaracje ramki i stosu...
Witam Mam płytkę według schematu poniżej: dodałem tylko "ręcznie" podłączenie CLKOUT PCF8563 z INT1 i przełączyłem przycisk na inny port. Do tego podłączona jest płytka testowa z MAX7219 i wyświetlaczami 0,36 cala. Całość działa poprawnie z kodem jak poniżej: [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 $hwstack = 32 ' rozmiar stosu...
Przygotowałem specjalnie do testu [syntax=vbnet] $regfile = "m1284pdef.dat" $crystal = 8000000 $hwstack = 128 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu programowego $framesize = 128 $baud = 9600 '************ Config Timer0 = Timer , Prescale = 1024 ' 1 sekunda = 50 On Timer0 Czas0 Timer0 = 98 Enable Timer0 Enable Interrupts '*********************...
Witam Testuję moduł GSM SIM800L. Chciałem, aby po otrzymaniu komendy przez SMS odsyłał zwrotny SMS lub wysyłał email z danymi. Najpierw "na sucho" klepiąc ręcznie linia po linii przez terminal uzyskałem pozytywne wyniki testów ( tzn. otrzymywałem SMS i email ). Nieco gorzej jest w przypadku podłączenia do Atmega328. Podsłuchując terminalem odbieram:...
Jeżeli podłączasz na dwóch przewodach DSa to rezystor zmniejsz do 3,3k. Nie chcę mi się pisać więc podaję kod (bascom/asm) '***************************************... !read_temp_1w: Read_temp_1w: 'odczyt rejestrow z ds1820 'Stop Timer0 jnb {fl_pomiar},read_temp_1w_end clr {fl_pomiar} 1wreset...
Cytuję: "Ustawia się to w zależności od skomplikowania programu. (...)" O co tutaj chodzi i o jakie wartości tutaj chodzi? Dokładnie chodzi o ilość bajtów jaką początkowo zajmie każdy ze stosów. Stos jest elementem rozrastającym i kurczącym się dynamicznie. Może dojść do sytuacji gdzie jeden zajdzie na drugi - stack overleap - i kłopot gotowy. Dlatego...
Twój program ma jedną klasę główną - Kalkulator, dwie klasy pomocnicze - Stos i Wektor. Wektor jest samodzielną klasą, Stos zależy od Wektora (choć w sumie nie powinien, bo powinien być wzorcem), a Kalkulator to główna funkcjonalność. A więc tworzysz wektor.hh i stos.hh, do nich wektor.cpp i stos.cpp. Kalkulator i funkcję main zostawiasz w pliku kalkulator.cpp....
Witam. Od końca: Kwarce najlepiej użyć takie, by odchyłka prędkości transmisji była jak najmniejsza (poniżej 5% powinno być ok.). Bascom ułatwia ich dobór. Wybierz z głównego menu Options => Compiler => Communication. W okienku które się otworzy wpisz/wybierz pożądaną prędkość transmisji, oraz częstotliwość rezonatora, a poniżej możesz odczytać jaka...
Witam. Mam następujący problem: potrzebuję zastosować własną deklarację funkcji malloc, która jest wywoływana np. podczas łapania wyjątków lub używania NEW, a jednocześnie muszę "zaincludować" bibliotekę, w której malloc już jest. Nie mogę też edytować biblioteki. W jaki sposób można coś takiego osiągnąć? Dodam, że próbowałem użyć __attribute__ ((weak))...
Witam W oparciu o projekt Kolegi _Duch - rejestrator pogodowy zrobiłem swój ( na razie prosty ) rejestrator. Wykorzystałem podane w wątku pliki config_mmc.bas i Config_AVR-DOS.BAS . Na płytce testowej EVB 4.3 v.4 . Podłączenie z SD standardowe. Niestety nic się nie zapisuje na karcie SD ( próbowałem 2 Gb Kingston i 1 Gb Sandisk - formatowane na FAT...
Witam Wzorując się na jednym z przykładów chciałem wyświetlać dane z GPS. GPS działa poprawnie, wyświetla dane w oknie terminala. Podłączenie TX GPS z Rx AtMega nie powoduje żadnej reakcji $regfile = "m32def.dat" $crystal = 8000000 $baud = 9600 ' predkość transmisji $hwstack = 64 ' rozmiar stosu sprzętowego $swstack = 64 ' rozmiar stosu programowego...
Witam Zachęcony sukcesami z płytką EVB 4.3 zaprojektowałem i zamówiłem swoją - na początek z AtMega8 w DIP. Do tego pamięć 24C32 oraz układ do RS485. Wszystkie układy mają kondensatory 100 nF ( stabilizator 7805 również + jeden elektrolit ). Całość ze złączem pod wyświetlacz 2*24 ( właściwe 4*12 ) Reset przez rezystor 10 K do +5V AtMega8L ( na 8 MHz...