Po dłuższej przerwie, wziąłem się za pisanie kodu. I mam problem z widocznością zmiennej "volatile" w plikach. Nie wiem, czy czytelnie to opisałem w poniższym wyrywkowym kodzie. Może Ktoś zerknie i udzieli jakiejś rady Generalnie chodzi o zmienną - bool przerw_KL [syntax=c]Pilik nr...
Wygenerowany jest bezpośrednio z CooCoxa Linkera tutaj nie ma chyba jest zaszyty w środowisku. Wersja CoIDE to: Version: 1.7.8 [syntax=c] /** ****************************************... * (at)file startup_coide.c * (at)author Coocox * (at)version...
W przypadku zmiennych extern oznacza deklarację, czyli mówisz kompilatorowi tylko tyle ze ta zmienna istnieje nie tworząc jej. Definicja czyli bez extern Tworzy tą zmienną. Podobnie jest z funkcjami ale tam extern ma trochę inne zastosowanie. Deklaracja - mówisz kompilatorowi jak dany twór...
Kolega BlueDraco ma rację. Lepiej zrobić tak, że definiujesz zmienną w pliku *.c a w plikach *.c, z których chcesz do niej dostępować deklarujesz ją z kwalifikatorem extern. Dzięki temu panujesz nad tym, które moduły mają do niej dostęp. To, co zaproponowałem wcześniej spowoduje zaciemnienie...
Dla jednego segmenmentu pamięci. Powtórzyć dla innych Czy wystarczy deklaracja typu: Nie zawsze. O ile jej nie użyjesz to pewnie zostanie wyoptymalizowana (zakładam włączenie jakiś optymalizacji). Przywróciłem. Może komuś się przyda. ---- Skasowano z tematu: [url=][STM32H743II][C][gcc][Eclipse]...
W programie C++ deklarujesz zmienną w specjalny sposób: extern "C" int wynik=0; extern "C" powoduje że zmienna ma nazwę taką jak podałeś, ale z dodatkowym prefiksem: _wynik. Bez tego zmienna będzie zawierała w nazwie typ zmiennej plus różne dziwaczne znaki, a całość będzie...
Kurs: C mamy typy: -podstawowe: typy znakowe, całkowite i rzeczywiste -pochodne: wskaźnikowe, tablice, struktury, unie. Typy i zmienne całkowite Rozmiary zmiennych danego typu Użycie powyższych typów w połączeniu z signed, unsigneddaje, short i long...
Jeśli chodzi o zmienną to musisz dodać do okna głównego zmienną globalną a w nowym oknie też musisz dodać zmienną globalną tylko że przed zmienna musisz dodać słowo kluczowe extern: [syntax=cpp]//okno glowne int twojaZmienna=0; //nowe okno extern int twojaZmienna; //nie można inicjalizować...
Pytanie jest o deklaracje main.c Kod: unsigned int *msg; oraz w spi.h Kod: static unsigned int *msg; Czy ja dobrze rozumiem, że są to dwie zmienne, z czego pierwsza widziana jest tylko w pliku main.c a druga tylko i wyłącznie w pliku spi.c? Mylisz się. Pierwsza zmienna...
Wszystkie funkcje korzystają z globalnie zadeklarowanej struktury i kilku zmiennych pomocniczych. Zadeklarowałem je w pliku nagłówkowym (zmienne.h) ale kompletnie nie radzę sobie z includowaniem i makefile. Albo wyskakuje brak definicji zmiennej albo redefinicja. Mógłbym prosić o przykładowy...
Taki zapis ( definicja )powinien być w jednym pliku C (zmienna globalna) volatile unsigned char stan = CZEKAJ; w pliku headera (chyba sensor.h) tylko deklaracja extern volatile unsigned char stan; w żadnym wypadku nie można dawać w headerze (pliku *.h) includowanym do wielu plików...
mam plik main i w nim deklaracje zmiennych itd... w main mam kilka includow mniejszych plikow (np. odbior.c )w ktorych mam zapisane jakies funkcje... problem pojawia sie gdy w tych includowanych plikach probuje uzywac zmiennych zadeklarowanych w main... na poczatku dopisywalem te zmienne do dolaczanym...
Nie, to nie dyskusja polityczna. Chodzi o to, by wyjaśnić to w miarę dokładnie. Wiele błędów programowych, które z wielką cierpliwością wyjaśnia mirekk36, Freddie Chopin i wielu innych bierze się z niezrozumienia jak zmienne funkcjonują. A do mirekk36. Pisząc "obojętnie gdzie" miałem...
Sprawdzilem wszystkie pliki i w zadnym niema wykozystanej zmiennej sstatus, zmiienialem jej nazwe aby czegos nieprzeoczyc niestety bez powodzenia. Podaje caly plik main .[syntax=cpp] *------------------------... "AT91SAM7X256.h" #include...
Zmienne globalne są sztywne, czyli może się okazać że zrobiłeś kilka bibliotek zaś nie możesz je użyć razem ponieważ mają zmienną globalną o tej samej nazwie. W C++ jest na to kilka prostych tryków, zaś w C - nie Tu chyba nie masz racji, ponieważ zmienna zdefiniowana zewnętrznie,...
Środowisko Microchip Studio (dawniej Atmel Studio7) Kompilator: XC8 Procesor ATMEGA328PB Próbuję umieścić zmienną w jednym z dostępnych rejestrów GPIOR, pozwalających na dostęp poprzez IN i OUT oraz operacje SBI, CBI W kompilatorze IARa miałem to zrobione tak: 4.3.10.5 Io Attribute Objects...
No ale zrozum, że w każdym module w którym includujesz ten plik tworzy się kolejna kopia tej zmiennej a linker podczas linkowania próbuje ustalić adres takiej zmiennej i stwierdza, że ma kilka o takiej samej nazwie więc zgłasza błąd. Do tego co ty chcesz uzyskać służy słowo kluczowe ...
Witam, Pozwolę sobie opisać całą historię, może ktoś znajdzie sposób na lepsze zorganizowanie mojego projektu. Na lekcję programowania mamy stworzyć w Visual C++ 2010 ciekawy program. Niektórzy robią kółko krzyżyk, niektórzy tetris itp. itd. Ja wybrałem grę planszową Monopol. Stworzyłem...
Witam Mam następujący problem przy płytce STM32F0Discovery. Celem programu jest na poziomie obsługi przerwania ustawienie globalnej zmiennej, a następnie po powrocie do maina sprawdzenie zmiennej i wykonanie instrukcji. Kod pliku main.c [syntax=c] #include "stm32f0xx.h" #include "setup.h" volatile...
Napisz może jeszcze gdzie masz zadeklarowaną tą zmienną i w jaki sposób. Może w funkcji trzeba zadeklarować jako extern?
gcc zmienne globalne i statyczne przypisuje do zera. Jest to zdefiniowane w standardzie :) Optymalizator przypisanie do 0 oleje (w sensie nie zrobi go), ale jeżeli jest wyłączony to marnuje to nieco pamięć programu. I jak napisał sulfur, czy jest to char czy uint8_t, czy jest też volatile czy...
Masz jakiś moduł, np od i2c - plik i2c.c zawiera funkcje i zmienne, plik i2c.h zawiera prototypy funkcji i zmienne globalne z "extern". Tak też zrobiłem, program faktycznie stał się bardziej przejrzysty i kompiluje się bezbłędnie :-) Dzięki.
tak w pliku *.h tej biblioteki daj DEKLARACJĘ tej zmiennej: zrobiłem mały błąd (przepraszam) - już się poprawiam: [syntax=c]extern char8x8 font6x8[];[/syntax] bo z tym = to wyszła DEFINICJA a nie deklaracja, ale sens/idea pozostaje ta sama, tzn utworzenie deklaracji w *.h
Witam! Są następujące przypadki: - Jeśli np zmienna zewnętrzna została zadeklarowana w innym pliku, wówczas w bieżącym pliku musi wystąpić potwierdzenie tejże deklaracji poprzedzone klasą pamięci extern. - dotyczy funkcji w starszych wersjach języka C (K&R). Jeśli definicja funkcji...
nie rozumiem dlaczego kompilator drugi raz ładuje plik secondFile.c chociaż ja tego nie zleciłem? Jak to nie?: [syntax=c]#include "secondFile.c"[/syntax] Inkludujemy tylko pliki nagłówkowe .h W plikach nagłówkowych funkcje używane w innych plikach .c należy zaznaczyć jako extern....
Do tego w kazdym pliku w ktorym nie jest zadeklarowana "normalnie" a chcesz jej tam uzyc musisz dodac extern przed deklaracja.
Ręce opadają tylko z tego że to gdzie definiujesz extern i wogóle to że korzystasz z takiego słowa kluczowego wynika jedynie od Twojej inwencji i tego jak piszesz algorytm, gdzie są jakie zmienne i po co.
W jednym deklarujesz normalnie, na przykład: int moja_zmienna; a w innym pliku piszesz taka deklaracje: extern int moja_zmienna; Całość zostanie połączona dopiero przez linker.
Nie no jeżeli zadeklarujesz zmienna w pliku interrupt tak: volatile TFrame Frame; a w main-e dasz informacje kompilatorowi w ten sposób: extern volatile TFrame Frame; to niemożliwe żeby kompilator pominął tą zmienną. Sprawdź jeszcze czy dobrze ustawiana jest flaga Frame.state &...
Problemem nie były akurat jednostki kompilacji ale po prostu przekazywanie przez wartość - twoja funkcja zmieniała lokalne kopie, a nie zmienne globalne. Jeśli zamierzasz mieć więcej regulatorów to rozwiązanie jest z wskaźnikami jest w porządku, jeśli masz tylko jeden, prościej będzie w...
Po poprawkach w nagłówkowym jest: extern unsigned char wysw_bufor[9]; w źródłowym: #include "wyswietlacz.h" unsigned char wysw_bufor[9] = {1,2,3,4,5,6,7,8,9}; void wyswietlacz_inicjuj(void){ ... wysw_bufor[1] = 45; ... }...
Wskazuje na funkcje które dostępne są w bibliotekach (nie mylić z "bibliotekami" czyli modułami kodu). W sumie to nawet tam jest to chyba zbędne. 4\/3!! Jest zbędne, linker połączy symbole. extern jest niezbędne dla funkcji chyba tylko w przypadku kiedy korzystamy z tego samego pliku...
W każdym pliku gdzie używasz zmiennej z innego pliku należy się odwołać do jej deklaracji np. extern struct Time...
No i nie udało mi się tego zrobić na Timer0- on sie kręci bez przerwy a ja potrzebuję włączyć i wyłączyć timer. Tak że na razie na Timer1- szkoda bo 16 bitów- ale zrobię na Timer2. Spokojnie użyj Timer0, który będzie zgłaszał przerwanie np. co 1ms. W procedurze obsługi tego...
Skoro masz debugger, to w czym problem, żeby sobie podejrzeć w którym miejscu się wysypuje? A zamiast sprintf() polecam itoa() (np na mojej stronce do pobrania) - wielokrotnie mniejsze, wielokrotnie szybsze, nie wymaga 10000x innych rzeczy. Jeśli komuś nie potrzebne liczby zmiennoprzecinkowe...
Ktoś bardzo chce aby usunąć ten post ;P Wracając do tematu: Jak są dwie deklaracje extern, dotyczące tej samej zmiennej, to się linker pogubi. Kombinowałem tak i nic. Nawet przerwanie INT0 dałem do main.c i nic tonie zmienia.. Problem musi tkwić w zmiennej "freq" i przerwaniu INT0
robisz w main: volatile int i=0; w stm32f4xx_it.h (czy jak tam się nazywa ten header z funkcjami przerwań): extern volatile int i; Zrobiłem jak kazałeś Struktura projektu została wygenerowana przez Atollic'a. To, że z błędu nic nie wynika to właśnie mój problem. Z tego co...
to nie biblioteka a plik nagłówkowy będący odwołaniem do biblioteki. Nie zaciekawiło cię extern? czy też brak definicji tychże funkcji? Wiadomo, że chodzi o bibliotekę. I co ma do tego extern jak i tak nie była używana. Biblioteka nie jest linkowana. Na próbę ją dodałem i kompilator...
Nie musisz tworzyć pliku .h, chociaż takie rozwiązanie jest eleganckie. Jeśli rzecz dotyczy niewielkiej liczby zmiennych lub funkcji używanych tylko w jednym pliku poza tym, w którym są zdefiniowane, możesz ich deklaracje jako zewnętrznych zapisać po prostu w pliku .c, w którym mają być...
Nie tak. W pliku .h najpierw zadeklaruj unię, a potem daną tego typu jako extern [syntax=c]union st_pracy_ { // tu zawartość unii }; // koniec deklaracji extern union st_pracy_ stan pracy; [/syntax]A w jednym pliku C [syntax=c]union st_pracy_ stan pracy;[/syntax]
Bo może wektor przerwań dla tego akurat kanału DMA się nazywa inaczej? Porównaj nazwę Twojej funkcji z zawartością tablicy wektorów. Jeśli masz w projekcie pliki C++, to trzeba przerwania deklarować jako extern "C". 4\/3!!
Zmienna static w pliku nagłówkowym? WOW. extern poczytaj...
W pgmspace są zawarte definicje chyba wszystkich funkcji (jako inline) więc raczej nie ma nic więcej. W eeprom funkcje są zadeklarowane jako extern, więc źródła funkcji będą w źródłach biblioteki (avr-libc), do pobrania z internetu. Nie ma ani wymagania, ani praktyki, aby jednemu plikowi...
W c++ przed funkcjami obsługi przerwań dodaj extern "C" np.: extern "C" void DMA2_Stream0_IRQHandler(void) { ... } Inaczej nie będą wywoływane. Nie mam przekonania. W ARM, i to widać w tym kodzie wektory przerwań są wprowadzane po identyfikatorze C/C++ (czyli po kompilacji po adresie)...
Generalnie na początku chodziło tylko o przekazywanie zmiennych ale w między czasie dyskusja rozgorzała :). Napisałem sobie taki oto kod: [syntax=avrasm]#define __SFR_OFFSET 0 #define _SFR_ASM_COMPAT 1 #include "inc.h" #include "nRF24L01.h" .data licznik: .byte 1 .extern SPInumByte .extern...
Można przez sekcję w linkerze, ale można też taki banał: [syntax=c] #define FIXEDLOCVAR (*((unsigned int*) 0x10000000)) [/syntax] Można też w linker skrypcie dopisać sobie co się chce: adres, stałą ... [syntax=c] .debug (NOLOAD): { FIXEDLOCVAR = .; } >SRAM [/syntax] [syntax=c] ...
(at)slawkok Widzisz, jesteś ZNÓW jednym z użytkowników Arduino, którzy nigdy nie zetknęli się z programowaniem na platformach np. pecetowskich Gdyby tak było, byś miał koncepcję nie "zakładki" a "jednostki kompilacji" albo jednego z (większej ilości) plików źródłowych tego...
Czyli jak wyżej nadmieniono: 1. Można 2. "extern" nie ma wpływu na definicje struktury. Więc należy zadbać aby nie było podwójnej definicji. .
Wstęp Poradniki pomagające w tworzeniu oprogramowania na mikrokontrolery skupiają się głównie na wykorzystaniu peryferiów samego mikrokontrolera, co jest zrozumiałe, ale niestety rzadko skncentrują się na części programu, która wykonuje się przed funkcją main. Poniższy poradnik...
Witam, Pojawił się ostatnio u mnie taki problem. Otóż odczytuję z przetwornika ADC ATmegi16, z kanału ADC0 wartość napięcia (od 0 do 5VDC). Wyświetlam sobie wynik konwersji na LCD i wszystko ładnie działa (liczba na LCD zmienia się w zakresie od 0 do 1023, jak kręcę potencjometrem)....
Dobra. Kod prezentuje się następująco: to jest program w którym wszystko działa jak potrzeba: [syntax=cpp]//Data utworzenie: 20-09-2014 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/pgmspace.h> #include "MYUART/myuart.h" #include...
Siemka. Prosze bardzo o pomoc. Mam zrobić na zajęcia sprawozdanie i odpowiedzieć na pytanie. " jaką najniższą częstotliwość przerwań może generować timer TC0? " Odpowiedz chyba 0,27Hz. Ale skąd się to bierze. Poniżej podam dokładne polecenie i rozwiązanie. Prosze o odpowiedzenie na...
Witam, od pewnego czasu nie mogę poradzić sobie z problemem sterowania PWM w mikrokontrolerze LPC1768 (dokładnie jest to płytka LandTiger). Próbowałem setek różnych kombinacji aby to poprawnie uruchomić, jednak niestety bezskutecznie. Dodam, że jestem początkującym programistą i na pewno...
Cześć Coś mi kod do obsługi wyświetlacza LED niedziała. Czy moglibyście rzucić na to okiem. [syntax=c] #ifndef DISPLAY_LED_H_ #define DISPLAY_LED_H_ //Załączenie plików bibliotecznych #include<avr/io.h>...
z gory zaznaczam ze to moj pierwszy program! mam atmege 128 i wysw. 7segm. i za zadanie mam jakikolwiek prosty zegarek/stoper napisac cos tam napisalam ale niestety zle mi wyswietla tzn wgl nie realizuje kodu teoretycznie algorytm jest dobrze napisany, ale jak zmieniam liczby tutaj : [syntax=c]TCCR0...
Cześć, napisałem program, który miał za zadanie po wykryciu odpowiedniego znaku wysterować pin nr. 2. Program działa powiedzmy średnio, o ile w terminalu wystarczy wpisać jedną "1" aby pin został ustawiony w stan wysoki, o tyle żeby go wyłączyć trzeba wpisać trzy razy "0", aby program...
Witam ponownie, Nie pokazałem całego kodu nie ze względu na to że ktoś mi go może ukraść jak to napisał kolega ale właśnie z racji tego że jest on napisany przez amatora. Jest to mój pierwszy projekt z mikro kontrolerem oraz językiem C. Wcześniej trochę bawiłem się z PHP oraz HTML...
-funsigned-char -funsigned-bitfields -DF_CPU=8000000 -O0 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -mmcu=atmega8 Linkera: -mmcu=atmega8 Co wypluwa: ------ Build started: Project: stacja, Configuration: Debug AVR ------ Build started. Project "stacja.avrgccproj"...
Witam Od kilku dni próbuję odpalić wyświetlacz graficzny 122x32 oparty na dwóch sterownikach nju6450. Napisałem sobie kilka funkcji aby odpalić ten wyświetlacz niestety to nie działa podejrzewam że zrobiłem jakiś błąd w sposobie podpięcia bibliotek niestety nie wiem jaki. Program się...
To nie żaden problem z kompilatorem/debugerem tylko niestety problem ze zrozumieniem co i jak powinno działać. Po pierwsze nie wyłączaj żadnej optymalizacji bo po co??? Chyba, że tobisz ten program, żeby działał po wsze czasy tylko w symulatorze to wtedy możesz się bawić w takie tam. Analizując...
Witam, mam problem z odbiorem kodów rc6 a mianowicie sprawdziłem specyfikacje mojego pilota na stronie lirc/remotes i jest to kodowanie właśnie rc6 szukałem po internecie i niewiele się mówi o tym i innych kodowaniach niż rc5. Znam czasy między bitami i z czego się składa ramka danych w rc6....
Okej, ogólnie to działa, wielkie dzięki za tamto. Mam jednak dalszy problem troszkę. Ogólnie chcę osiągnąć coś takiego, że wysyłam najpierw z Matlaba liczbę - jakąś flagę, po której uC wejdzie do odpowiedniej pętli. Po wejściu do tej pętli dopiero w niej ma odbierać wysłaną z Matlaba...
Witajcie moi drodzy Oto druga część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie omówię podstawowe operacje cyfrowego IO na prostych przykładach. Spis części (osobnych tematów) tutoriala Tutorial...
Jakiś fizyczny sposób załączenia przerwania timera przerwaniem od INT0 . Szukam i nie mogę znaleźć żadnych przykładów ani bardziej szczegółowego opisu jak to ugryźć , we wcześniejszych odpowiedziach nikt nie napisał dlaczego nie można używać delay w przerwaniu a w prostej wersji programu...
Mam trochę problemów z tą platformą a szczególnie z jedną rzeczą która mnie mocno denerwuje - brak jakiegokolwiek wsparcia !!! Czekam na odpowiedź z Propoxu i wiem że niedługo się doczekam, ale dzisiaj poruszę to na forum. Mam nadzieję że ktoś rozwiązał problem , który mnie dręczy...
Pisałeś w temacie: I zastosowałem się do tego w taki sposób: Plik: main.h extern unsigned char reset_MCUCSR ; // zapamiętanie flag powodu restartu systemu extern unsigned char DDT_stan ; // flagi stanu urządzenia #define DDT_ON_OFF 0 // bit 0 - włączone / wyłączone extern...
Witam, Jestem w trakcie przerabiania kursu z EdW Pracuje na zestawie startowym ZL3AVR Zamieszczam kod programu: //////////////////////////////////////... main.c - testowanie zaawansowanej obsługi alfanumerycznego wyświetlacza...
michalko12: Zmieniłem xHandleTaskLED1, xHandleTaskLED2 na static, ale nic to nie pomogło. xLastFlashTime nie można: error "initializer element is not constant". W keilu żadnej tej zmiennej nie miałem jako static a program działał więc podejrzewam, że nie tu jest problem. Dodano po...
Cześć, chciałem przeportować kod do odbioru RC5 autorstwa Dondu za ATMega8 na ATTiny13 - REzystory diod 470Ω, nie zmieniłem na schemacie. Pilot samoróbka, ale 100% pewniak. No więc w czym problem? Uruchomiłem przykład na ATMega8, wszystko pięknie śmiga. Program kompiluje się...
[syntax=c] /* extern bit RS; extern bit EN; extern bit D0; nie dziala ! extern bit D1; extern bit D2; extern bit D3; extern bit D4; extern bit D5; extern bit D6; extern bit D7; */ // LCD Podpiecie portów magistrali #define RS P3_6 #define EN P3_7 #define D0 P1_0 #define...
Witam, na wstępie dodam że jestem bardzo początkujący w programowaniu. Staram się stworzyć program który by włączał i wyłączał funkcję RGB, poprzez pilot RC5. Staram się to zrobić po kolei i najpierw próbuję gasić i zapalać pilotem diodę. Problemem jest to, że program reaguje na...
Witam, ostatnio przesiadam się z Bascoma na C i przy kolejnym "ćwiczeniu" mam problem z wyświetlaczem ABG128064H05-YHY-R-01, zgodnym ze sterownikiem KS0108. Program napisany w C z użyciem biblioteki od Radzia w Atmel Studio 6.2 pod atmega8. Problemem jest wyświetlenie na wyświetlaczu tekstu,...
Drogi kolego , popełniłeś szkolny błąd :D W procedurze obsługi przerwania Timer0 masz ... SIGNAL(SIG_OVERFLOW0) //obs... multipleksowania wyswietlaczy { //extern unsigned char wyswietl[7]; unsigned char licznik;//<-- ********** błąd !!!!!!!!!!! ... zmienną...
NIGDY nie inkludujesz nigdzie plikow C. w pliku naglowkowym danego modulu dodajesz po prostu deklaracje funkcji w postaci (na przyklad) int uart_init(void); pliki h dolaczasz do swoich modulow c tak, aby byly one autonomiczne. zmienne robisz globalne za posrednictwem 'extern' w pliku c jakiegos...
Postanowilem podzielic sie z wami moimi doswiadczeniami wykorzystania interfejsu USB we wlasnych projektach. Jak wiadomo interfejs USB jest juz powszechnie dolaczanym interfejsem do mikrokontrolerow wiekszosci producentow na rynku. Sama obsluga USB zarowno po stronie mikrokontrolera jak i pc (a wlasciwie...
Witajcie Znalazłem program taki jak poniżej. Chciałbym go przerobić w taki sposób aby móc go zastosować na SL45i i przy wykorzystaniu Atmega128. Kochani powiedzcie laikowi jak.... Wymienione biblioteki posiadam: siemens35.h, eeprom8252.h Mam także pytania: 1. Dodam, że nieinteresuje...
:arrow: zumek Myślałem, że to najlepsza metoda na przekazywanie zmiennych do funkcji, tak, żeby funkcja mogła je modyfikować. :arrow: tmf Rozumiem, mam nadzieję, że nie przesadziłem teraz w "drugą stronę" ;) Czy teraz jest lepiej? main.c: [syntax=c]#include <avr/io.h> #include...
Witam, Jestem początkujący jeśli chodzi o programowanie ARM wiec proszę o wyrozumiałość. Mam problem z procesorem LPC 1768, konkretnie jest to płytka Mini DK-2. Od pewnego czasu walczę z problemami w przerwaniach i nie mogę sobie poradzić. Przewertowałem setki tematów na forach polskich...
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...
Slowko kluczowe extern przed deklaracja obiektu najczesciej stosowane jest w plikach naglowkowych programu. Powoduje ono, ze w tym konkretnym miejscu nie jest przydzielana pamiec dla obiektu, a wiec nie mozna w jednej linijce zdefiniowac tej zmiennej [przypisac wartosci poczatkowej] //naglowek extern...
Słowo kluczowe extern nie oznacza ze coś będzie widoczne w innym pliku, tylko ze pamięć na to będzie zadeklarowana w innym pliku. W pliku .h powinieneś zdefiniować strukturę, natomiast w pliku .c powinieneś dołączyć plik .h i zadeklarować pamięć na nią plik.h ////////////////////////////////////////...
Zasadniczo właśnie o to chodzi, że jeśli zmiennym przypiszesz wartości początkowe, to musisz dokonać inicjalizacji. Jeśli zmienne wartości początkowej nie mają, to standard zakłada, że powinny być równe zero, niemniej jednak nie jest to obowiązek. Gorzej jeśli kiedyś będziesz chciał...
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ąć...
Aktualnie najważniejsze pliki programu wyglądają następująco: main.c: [syntax=c]#... "main.h" //definicje stalych #define LINENUM 0x15 #define FONTSIZE Font12x12 #define LED1 GPIO_Pin_13 #define LED2 GPIO_Pin_14 #define PRZYCISK GPIO_Pin_0 //zmienne - definicje void...
Wiem że zostanę pewnie wyklnięty ze społeczności za ponowne poruszanie tematu 1-wire ale przerobiłem trochę działający kod który sam kiedyś popełniłem na armie na potrzeby atmegi i kurcze nie chce to działać... siedzę i myślę co może być nie tak i szczerze nie mam już pomysłów,...
Korzystam z GuiBuildera i emWin na STM32F429i DISC1. Chciałbym automatycznie odświeżać napis (zmienna array) na polu TEXT. Tekst odświeża się po kliknięciu przycisku ale już automatycznie nie wiem jak zrobić. Kod z obsługą zdarzeń od kliknięcia itd. [syntax=c]/***********************...
Na sam początek to trzeba by było sobie poczytać co to jest definicja funkcji a co to jest deklaracja - bo to są dwie różne rzeczy, a po opisach które widać w tych przedstawionych plikach widać, że kolega miesza pojęcia a to właśnie m.in się mści przy prawidłowym includowaniu plików. Zasada...
Jeśli zmienna counter jest typu volatile, jest to dla kompilatora informacja, że każde odwołanie musi się odwoływać do pamięci, co spowoduje wielokrotne przeładowanie zmiennej mimo, że nie ulega ona zmianie: można zrobić kopię lokalną na czas przerwania. Ciągłe odwołania do PORTB i PORTD...
Niniejszy artykuł przedstawia programową obsługę enkodera kwadraturowego przy użyciu mikrokontrolera Atmel AVR. Zajmowałem się tutaj enkoderem pochodzącym z drukarki HP. Obrazek niżej przedstawia wyprowadzenia enkodera : Podłączamy oscyloskop i patrzymy co się dzieje: Automat...
Dyrektywa EXTERN zawsze chodzi w parze z PUBLIC, są nierozłączne. Jeżeli w pliku A masz napisane "PUBLIC JakaśEtykieta" to w innym pliku (lub plikach) masz napisane "EXTERN JakaśEtykieta". Linijka "PUBLIC JakaśEtykieta" może być tylko jedna w całym projekcie, a linijek "EXTERN JakaśEtykieta"...
Witam, Przepisuję właśnie swój projekt z Bascom'a na C, a właściwie jestem na etapie rozbudowywania programu i mam ostatnio problem ze skompilowaniem kodu. Cały układ to ATMega32 + ADC ADS1100 + LCD NOKIA3310 + MMC Card (na razie tyle ;-)). Jeszcze kilka dni temu program kompilował się prawidłowo...
Witam Mam ogromna prośbę. Potrzebuje przeanalizować 2 programy które niestety nie działają poprawnie. Programy pisałem sam lecz niestety sa w nich pewne błędy które niestety nie mogę znaleźć. Po asemblacji działają jednak w programie symulacyjnym nie wyświetlają tego co powinny, wiec...
Witam ponownie, Wracam tutaj z potrzebą skonsultowania pewnego problemu. Mianowicie po uruchomieniu USB postanowiłem dokładać kolejne bloki urządzenia i tak też pojawiła się obsługa DMA, ADC wyzwalanego timerem 2. No niestety projekt po kompilacji i wgraniu w ogóle nie działa :/ - Na terminalu...
U mnie (Katowice) z DCF77 nie ma problemu, oczywiście zdarza się, że przez jakiś czas nie działa, ale przecież nie musi - wystarczy że złapie sygnał od czasu do czasu. Z tego co zauważyłem, to strasznie przeszkadza w odbiorze DCF77 komputer. Kiedy miałem zasilane układy przez USB to generalnie...
Widzę, że zadałem trudne albo głupie pytanie. Pewnie GCC jest tak toporne, że nie podoła zadaniu. Akurat GCC nie jest tak toporne jak narzedzia komercyjne ;). Wiec: Na czym polega mój problem? Jak zmusić gcc, aby w module: - program zaczynał się od zdefiniowanego adresu Ustawiasz...
Taki kod jest po prostu bezsensowny i tyle. Kod z inicjalizacji _jest_ sensowny i _działa_. Jak napiszesz: #define STALA 12345 char* ptr=&STALA; to wydaje Ci się, że to jest poprawne? To nie jest poprawne i nie skompiluje się z prostego powodu - twoja stała jest dyrektywą...
Udało się zrobić, że aplikacja w trybie debug jest przenośna i działa na drugim kompie. W tym celu ustawiłem w trybie debug we właściwościach Incremental Linking na NO. Następnie nie dawałem żadnych optymalizacji. No i pokopiowałem z katalogu Visuala biblioteki z katalogu Debug_NonRedist...
Tzn, że program może działać dalej poprawnie a debuger wskazuje na to, że jesteśmy w np HardFaultHandlerze ? Mógłbyś nieco rozwinąć myśl ? Czasem może być jakiś problem sprzętowy/programowy/systemowy, który może spowodować wywalenie się debuggera, który będzie np. uparcie twierdził,...
Witam mam problem z multipleksowaniem wyświetlacza 7 segmentowego. Wydaje mi się że program jest napisany poprawnie, a wyświetlacz nie daje oznak życia. Sprawdzałem go już chyba ze sto razy. Jestem początkujący jeśli chodzi o programowanie.Aha najważniejsze wyświetlacze są ze wspólną anodą.Anody...
Proponuję NIE umieszczać NIGDY kodu czy zmiennych w nagłówkach .h - miejsce na nie jest w plikach z kodem, czyli .c, .cpp, itd. W nagłówku powinno być jedynie wyexportowanie zmiennych poprzez "extern" i prototypy funkcji. W pliku c: const unsigned short name[] = { ... }; w pliku h: extern...
Witam, mam problem z obsługą popularnego wyświetlacza ze sterownikiem HD44780. Nie działa on zgodnie z moimi oczekiwaniami, po wyłączeniu i włączeniu zasilania albo nic nie wyświetla albo wyświetla zadany tekst gubiąc przy okazji litery, tutaj podam przykład: do wyświetlenia napis "Test",...
OK, oto kod: Plik EEP.h [syntax=c] /* * EEP.h * * Created on: 29 maj 2016 * Author: MaS */ #ifndef EEP_H_ #define EEP_H_ #define DEF_ADSR0 800 #define DEF_ADSR1 500 #define DEF_ADSR2 3000 #define DEF_ADSR3 48 #define DEF_ADSR4 300 #define DEF_ADSR5 500 #define DEF_ADSR6...
Mam jednak znowu problem:( Borykam się z jednym błędem i jednym warrningiem. Wygląda to tak: plik main.c [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "rejestr.h" int main(void) { InitSpi();/*...
Cześć! Poszukuję wsparci gdyż powstał mętlik w głowie. Mam program, który komunikuję się z modułem GSM, używa wielu globalnych tablic, funkcji operujących na strumieniach typu strcpy, str n cpy, strstr, strtok, poniżej wklejam większość deklaracji dużych zmiennych: Dodano po 1 Przeniosłem...
Witam Robie budzik na bazie ukladow jak w temacie. Na razie jest to wstepna wersja, w ktorej odczytuje tylko rejestry z sekundami i minutami, a nastepnie wyswietlam je (po odpowiedniej konwersji) na czterech mulipleksowanych wyswietlaczach siedmiosegmetnowych. Ale niestety czasami (srednio raz na 15...
a tu przesyłam zawartość pliku który mi działa (i to musi być w oddzielnym pliku zapisane właśnie): /***** RAM FUNCTIONS ****/ #include <stdio.h> /* I/O Functions */ #include <AT91SAM7S256.H> /* AT91SAM7S256 definitions */ #include...
Wracając do przerwań, zgodnie z obietnicą wrzucam przykładowe definicje interfejsu klas opartych na przerwaniach. Pierwsza obsługuje timer i umożliwia wywoływanie z opóźnieniem lub cyklicznie podanej funkcji, lub wywoływanie jakiejś akcji: 1 #ifndef _TMFTIMER_H 2 #define _TMFTIMER_H ...
Witam Was. Mam taką prośbę. Otóż chciałem uruchomić czujnik temperatury, ponieważ LCD udało mi się uruchomić tak więc postanowiłem iść dalej za ciosem :>. Niestety układ nie działa. Przedstawię kod i opiszę co i jak. led.c <- tak się nazywa tymczasowo główny plik. Kod: ...
Witajcie, dziękuję za wszystkie posty. Większość okazała się bardzo pomocna. Swoją modyfikację chciałam zacząć od najprostszej zmiany, tj. zmiany konfiguracji modułu bluetooth poprzez komendy AT. Najpierw jednak chciałam przetestować odbiór danych z terminala. Znalazłam program i...
Witam, Mam problem z nawiązaniem komunikacji między dwoma zestawami STM32F103ZET6+nRF24L01. Bazowałem na informacjach z tej strony: "[url=]RF24Network". Ściągnąłem odpowiednie pliki z klasami RF24 i RF24Network, oraz klasą SPI(wykorzystywana przez poprzednie klasy), przerobiłem je...
Witam Trochę bawię się uP PIC, z większym lub mniejszym sukcesem. Chciałem zrobić sobie taki układ. Program "rysuję" w programie Flowcode5. Problem polega na tym ze w symulacji w programie Flowcode to działa. Po zaprogramowaniu rzeczywistego układu efekt jest zupełnie różny...
Witam, mam jakiś błąd w sofcie, który powoduje, że po odłączeniu i włączeniu zasilania program nie działa prawidłowo. Zresetowanie atmegi bez odłączenia zasilania powoduje że wszystko chodzi już dobrze. Próbowałem różne ustawienia fuse'ów, kwarc 12MHz, CKOPT włączony, ustawiony...
Witam. Próbuję swych sił z arduino mega2560 i wyświetlaczem ILI9481. Co ciekawe wyświetlenie tekstu nie stanowi problemu. Natomiast przy próbie wyrzucenia jakiejś zmiennej mam krzaczek albo kwadracik. Program ma na celu zmierzenie na wejściu A5 napięcia i wyświetleniu na wyświetlaczu. Pod...
Tamtego joya po wielu bojach ukończyłem. Teraz chciałem zrobić coś innego i niestety utknąłem :( Niby sprawdzanie pinów jest ok (na symulatorze) jednak w rzeczywistości nie działa. Dlaczego? [syntax=c] /... oparty na przykładzie myszki USB autora: Christiana Starkohanna na...
No to radziłbym się zaznajomić z tego typu pojęciami bo są to podstawy. Otóż w języku C mamy cztery klasy pamięci. Określają one widoczność zmiennych oraz czas ich życia. Są to: auto , register , static oraz extern . Wszystkie zmienne deklarowane w funkcji (bez słowa kluczowego static)...
W nagłówku taki trick: [syntax=c] #ifdef __THIS_IS_MAIN #define Extern #else #define Extern extern #endif ... Extern czas nastawy;[/syntax] w wybranym module *.C, nazwijmy go główny, robisz tak [syntax=c]#define __THIS_IS_MAIN 1 #include "tenheader.h" [/syntax] Nie wymyśliłem...
I tak zrobiłem. Każdą komendę kończę znakiem pustym (ascii: 0x0). W programie głównym mam zadeklarowana zmienną globalną "ko_tr" ustawioną jako extern, której wartość informuje o zakończeniu transmisji. W obsłudze przerwania RXNE odpieram znaki i wpisuję do zmiennej tablicowej "odczyt",...
Jeżeli w funkcji deklarujesz zmienną o takiej samej nazwie jak zmienna globalna, to automatycznie przysłaniasz widoczność tej zmiennej globalnej. W czym problem aby definicję wyrzucić w miejscu, w którym masz zmienną globalną? Możesz też użyć extern, ale to też wymusi definicję zmiennej...
Z zasady w plikach .h nie umieszcz się kodu, a jedynie deklaracje i makra. W pliku .h zadeklaruj zmienne globalne jako extern. Zrób dwa pliki .c, w obu zainclude'uj plik .h a w jednym z nich umiesc definicję zmiennej globalnej, ale już bez extern. W pliku .h powinny znaleźć się także prototypy...
Naprawdę kopiowane są wszystkie funkcje a nie tylko to, które są wykorzystywane? Może to kwestia włączenia optymalizacji? Trochę OT, ale wyjaśnię. W uproszczeniu, w standardowym kompilatorze (np. gcc :wink:), wytworzenie programu wykonywalnego składa sie z dwóch faz: 1. fazy kompilacji...
Witam! Próbowałem napisać jakiś prosty program wykorzystujący zmienne dynamiczne, niestety program przestawał działać w momencie wywoływania funkcji malloc bądź sprintf. Podobne przypadki były już tu omawiane, jednak ten jest trochę inny: syscalls.c #include <sys/types.h> #include...
1. Biorę przykład projektu ARM (akurat ten dla STM32, bo posiadane przezemnie LPC2103 ma za mało pamięci flash na te okrutne funkcje printf()) z mojej strony - 2. Wrzucam do main() następujący kod: #include <stdio.h> #include <math.h> #include <errno.h> #include <sys/types.h> caddr_t...
Może zacznę od opisu konfiguracji. Mam czujnik TSOP1736 podłączony do zasilania 5V, zaś jego wyjście do wejścia P0.16 mikrokontrolera LPC2148. Pozostałe połączenia (zasilanie, JTAG itp.) są OK, gdyż jest to zestaw ewaluacyjny Propoxu - EVBlpc213x\4x. Napisałem sobie bibliotekę do odbioru...
Witaj Freddie, szczerze mówiąc czytałem wiele Twoich postów i liczyłem na Ciebie - cieszę się, że się nie pomyliłem ;). A więc działa, dla potomności załączam kod, banalny, ale na początku zabaw z każdym prockiem pewnie i taki się komuś przyda. Na Forum Microchipa odbyła się...
Witam kolegów znowu (niestety). Mam, nie ukrywam, rozpaczliwe pytanie. Ostatnio coś się popsuło w moim programie na projekt z informatyki, chodzi mi dokładnie o funkcję które odpowiedzialne są za odczyt i zapis tablicy struktur stanowiącej bazę danych do pliku. Nie ukrywam że jest to ewidentnie...
Tak wszystko ładnie pięknie, tylko masz potem milion linii kodu z nazwami typu khtok, sonq, zonq, duponq, kradsfj, adsnliaysg przeplatającymi się nawzajem. Przesadziłeś ;] Tak nazywam z reguły tylko i wyłącznie iteratory, bo samo 'i' jest zbyt nudne; lub zmienne lokalne zyjące tylko przez...
Czy zmienna "flaga_timer0" dalej musi byc jako volatile ? Oczywiście - skoro używasz jej w przerwaniu i jeszcze gdzieś indziej. Czyli, jak w moim przypadku, powinien wyglądać plik timer0.h? Co do zmiennych - deklarujesz je normalnie w nagłówkach, z tym, że obowiązkowo...
Poprawiłem tak: flagi.h //**************************************... struct wire{unsigned char fc; // uint8_t serial[6]; // nr serial char text[9]; // opis urz. unsigned char tC;}; extern struct wire one_wire[8]; config.h...
Chcę napisać prosty program na Mikrokontroler MC68HC908QB8. Program ma pod wpływem wzrostu temperatury zwiększać obroty silniczka poprzez wypełnienie PWM. Na wejście przetwornika A/C wpiąłem LM 35 ( nóżka PTA0/AD0), a wyjście PWM na nóżce PTA1/TCH1. Kod kompilowałem w CodeWarior-ze....
No masz błąd - bo np w pliku nagłówkowym *.h DEFINIUJESZ zmienną strukturalną :( a tak się nie robi, w nagłówkowych powinny być SAME DEKLARACJE a nie definicje (no może poza funkcjami inline - ale to inna sprawa) Zrób sobie tak w *.h Dodano po 1 zresztą jeśli to jest prosty...
Wersja skompilowana dla Win znajduje się [url=]TUTAJ. KamilCWK: tworzenie pliku obiektowego [syntax=bash]objcopy -I binary -O elf32-little -B arm plik.bin plik.o[/syntax] Podejrzenie symboli, a tym samym nazwy zmiennych [syntax=bash]objdump -t plik.o plik.o: file format elf32-little SYMBOL...
O jedno pytasz, odrugim piszesz. extern nie jest konieczne przy funkcjach. Jezeli chodzi o drugą część pytania nie rozumiem o co Ci chodzi - myślę że więcej poczytaj o kompilacji linkowaniu, po co są te pliki .h itd itd, bo całkowicie tego nie rozumiesz. Jak masz wszystko w jednym pliku...
No i rozwiązaliście, znalazłem byka przy pisaniu odpowiedzi na Wasze pytania. Wypada więc napisać po kolei. Struktura siedzi w pliku globals.h (dla przykłądu wklejam ją okrojoną do dwóch zmiennych): typedef struct Par { uint16_t PosAct; //aktua... pozycja z enkodera uint16_t PosActBuf; //bufor....
PS Przy okazji podejrzyj sobie implementacje _sbrk bo tam było sprawdzenie: if (heap_end + incr > stack_ptr) co w przypadku akurat uC i Twojego przypadku zawsze spowoduje brak jakiejkolwiek alokacji pameci bo uzna że jej po prostu nie ma.. implementacja zakłada że stos i heap rosną "do...
Musisz niestety troszkę się pouczyć C. Includuje się pliki .h, które zawierają: [syntax=c]/* definicje i makra */ #define STRSIZE 50 /* deklaracje typów */ typedef struct { int a; float f; double d; char c[STRSIZE]; }mytype; /* deklaracje funkcji ale bez...
Mam problem z połączeniem jak w temacie, moduł ESP2266 ma być jednocześnie modbus master i przesyłać dane do serwisu cayenne. Problem w tym, że modbus działa, tzn pobiera dane, zapisuje je do zmiennej i wyświetla na zewnętrznym wyświetlaczu, ale tylko dotąd, dokąd nie dodam obsługi cayenne....
Temat ucichł i pozostały pytania bez odpowiedzi, to może przybliżę kolegom działanie espnow z wifi. I przytoczę działający przykład takiego połączenia. Nigdzie w oficjalnych źródłach nie doczytałem, że espnow nie działa z wifi. Spotkałem się tylko z opiniami, że transmisja espnow...
Witam. Kupiłem kiedyś płytki do budowy myszy laserowej do komputera Amiga według projektu niejakiego Eins'a i postanowiłem podjąć się złożenia tej myszy w całość ale jest kilka problemów po drodze ponieważ autor oprócz płytki nie udostępnił niczego więcej, nawet lista elementów...
Witam, przy próbie kompilacji wyrzuca mi błąd jak w tytule tematu, proszę o pomoc czego ten błąd dotyczy. Plik main.cpp [syntax=cpp]#include <iostream> #include <conio.h> #include "game.h" int main(void) { StartGry(); for (;;) { RysujPlansze(); ...
Jeśli pragniesz posłużyć się zmienną globalną widzianą w innych modułach możesz to zrobić na przykład tak: 1) z menu "Project" wybierz opcję "View Source" - w nowej zakładce pojawi się kod źródłowy modułu zawierającego główną funkcję WinMain 2) w w/w pliku zdefiniuj swoją...
Tak wiec plik glowny wyglada to nastepujaco #include <at89c5131.h> #include "zmienne.h" #include "funkcje_lib.h" extern GET_KEY(); BYTE Tablica[10]; //Tablica[0] sekundy //Tablica[1] minuty //Tablica[2] godziny //Tablica[3]....
Hmmm....u mnie przy starcie mikroprocesora cała sekcja .bss jest zerowana, więc przeniesienie tego do sekcji .data raczej niczego nie zmieni. Fakt ja korzystam z wlasnego kodu startowego i tez powinienem dopisac taki kawalek bo inaczej znajduja sie tam przypadkowe dane. Nie jestem pewien, ale...
Witam To jeden z pierwszych moich programow pisanych w C a kompilowanych w keilu. Procek to ds89c420. Timer2 uzywany do odmierzania czasu (odbieranie rc5). Problem tkwi w tym ze owszem, przechodzi poprawnie do procedury przerwania int0 ale timer2 albo nie startuje lub program osblugi przerwania...
...Deklarację robiłem na różne sposoby np. volatile unsigned char znacznik; i cóż... efekt jest taki, że ewentualna modyfikacja wartości tej zmiennej jest widoczna tylko w danym segmencie kodu... Wytłumaczenie jest proste - źle zbudowałeś projekt :( Przykład: system.h //... volatile...
Volatile oznacza, iż zmienna może być modyfikowana asynchronicznie w różnych miejscach kodu. Czyli jeżeli jest to zmienna globalna i ustawiasz ją np gdzieś w przerwaniach to powinna być zadeklarowana jako volatile. Wprawdzie w przypadku avr często działa bez tego ale raczej trzeba o tym pamiętać. Pamiętaj,...
Nie mam żadnego pomysłu na to aby zmusić kompilator AVR GCC(+AVRstudio) aby procedurę obsługi przerwania całkowicie zrealizować jako procedurę napisaną w assemblerze reszta jest w C... Utwórz sobie plik z rozszerzeniem "S", umieść w nim np. coś takiego i dołącz go do projektu :) #include...
Projekt składa się z dwóch plików: - Unit1 - forma główna - Unit2 - TThread Pierwszy plik ma zadeklarowany nagłówek drugiego a drugi pierwszego za pomocą kreatora buildera. #include "Unit2.h" #include "Unit1.h" W pliku Unit1.h jest sobie funkcja public: //...
Probowalem zrobic jak mowiles, dalem wysylanie nawet zaraz po sprawdzeniu zmiennej odebrano_polecenie. Wyglada na to ze ta instrukcja warunkowa nigdy nie wykonuje sie poprawnie. Zmienna odebrano_polecenie jest zadeklarowana na poczatku pliku main jako int odebrano_polecenie = 0; Natomiast w pliku...
Witam Mam funkcje napisana w asemblerze i wykorzystuje ją w pliku "C". funkcja używa dwóch argumentów, są to zmienne GLOBAL w asemblerze "x1" i "x2", w pliku h mam zadeklarowane extern do tych zmiennych i funkcji "test" Program wygląda tak: main(void) { x1=2; x...
Szukasz pojedynczych bajtów poprzez porównywanie dword'ów, w ten sposób algorytm nie ma szans nic znaleźć poprawnie. Proponuję nieco mniejszy i taki, który korzysta z odpowiednich instrukcji pętli, aby zmniejszych ilość labeli na ekranie: 00000000 <_xstrstr(at)8>: 0:...