volatile struct

Znaleziono około 355 wyników dla: volatile struct
  • [ARM][C/KEIL] Deklaracja struktury z polami bitowymi, jak to zrobić?

    Te deklaracje umieść w pliku irq.h [syntax=c]struct status { uint32_t adc:1; uint32_t rtc:1; }; extern volatile struct status sts;[/syntax] i plik ten dołącz do main.c i irq.c w irq.c lub main.c umieść ta definicję [syntax=c]volatile struct status sts={0,0};[/syntax]

    Mikrokontrolery ARM   04 Gru 2011 18:47 Odpowiedzi: 7    Wyświetleń: 2119
  • REKLAMA
  • volatile struct [C][AVR] Które volatile można usunąć?

    Wszystkie "wewnętrzne" wystarczą - reszta jest zbędna. 4\/3!!

    Mikrokontrolery   21 Cze 2010 06:12 Odpowiedzi: 6    Wyświetleń: 2295
  • Nie znalazłeś odpowiedzi? Zadaj pytanie Sztucznej Inteligencji

    Czekaj (1min)...
  • [gcc][winavr] przekazywanie parametru volatile struct

    Do funkcji przekazuje zmienną typu volatile za pomocą referencji. Ja tam widzę zwykły wskaźnik a nie referencję. Funkcji nieodpowiada to że to co dostaje jest typu volatile. A na czym to "nieodpowiadanie" polega? Próbowałem to zwalczyć rzutując argument ale nic to nie daje. To znaczy czego nie daje? Czy ktoś wie jak rozwiązać ten problem? Ale jaki...

    Mikrokontrolery   18 Kwi 2011 09:43 Odpowiedzi: 3    Wyświetleń: 1996
  • REKLAMA
  • [AVR] AVR C – deklaracja i obsługa zmiennej bitowej do sterowania liniami portu

    Może bitfield: volatile typedef struct{ u8 PB0:1; u8 PB1:1; u8 :6; }Bits; u8 zmienna = 0; Bits *STICK =(volatile Bits*) &zmienna; STICK->PB0 = 1;

    Mikrokontrolery AVR   09 Paź 2010 19:08 Odpowiedzi: 2    Wyświetleń: 2015
  • [ARM][C/Keil] Struktura z polami bitowymi w odniesieniu do rejestru...

    I jeszcze jedna propozycja wykorzystania pól bitowych w przykładzie Electixa bez konieczności definiowania całych struktur bitowych: [syntax=c] #define bit_Field(var, bit, len) ((*(volatile struct{uint32_t:(bit)%32;uint32_t fld:len;}*)\ ((uint32_t*)&(var)+(bit)/32)).fld) // var - nazwa zmiennej // bit - numer pierwszego bitu pola bitowego // len - długość...

    Mikrokontrolery ARM   23 Mar 2012 23:00 Odpowiedzi: 26    Wyświetleń: 3279
  • Jak bezpośrednio przypisać zmienną bitową do pinu PORTD7 w WinAVR?

    Rozwiązanie z postu powyżej jest najlepszym według mnie: if(v) PORTB |= (1<<PB3); else PORTB &=~(1<<PB3); Żeby jednak traktować pojedynczy bit portu jako osobną zmienną można wykorzystać fakt, że rejestry io posiadają swój adres w przestrzeni danych, przez co można uzyskać adres i rzutować wskaźnik na jakąś bardziej...

    Mikrokontrolery AVR   05 Kwi 2010 16:57 Odpowiedzi: 7    Wyświetleń: 1337
  • [Programowanie] Potencjalne źródła wieszania programów

    No i masz powielone definicje struktur. Zrób to tak: 1. W nagłówku zdefiniuj samą strukturę: struct cośtam { ... }; 2. Potem w pliku .c do którego dołączasz ten nagłówek zdefiniuj zmienną tego typu: volatile struct cośtam jakaśtam; 3. W nagłówku wyexportuj tą zmienną: extern volatile struct cośtam jakaśtam; Powinno działać. 4\/3!!

    Mikrokontrolery   06 Mar 2012 18:34 Odpowiedzi: 42    Wyświetleń: 2981
  • REKLAMA
  • Jak bezpiecznie modyfikować zmienne globalne w przerwaniu w C?

    Przecież przy deklaracji w pierwszym kodzie jak byk stoi volatile :) [syntax=cpp]volatile struct godzina TimeOn, TimeOff;[/syntax]

    Mikrokontrolery AVR   26 Lis 2011 11:03 Odpowiedzi: 5    Wyświetleń: 1227
  • [ATmega8][C] Termometr ATmega8, DS18B20, LCD - pokazywana temperatura 0,0

    AVE... Do wszystkich funkcji podajesz nazwę bitu w rejestrze portu i nazwę bitu w rejestrze kierunku. Przykładowo dla PICa te rejestry to PORTx i TRISx, gdzie x to nazwa portu (A, B, C, etc.). Zatem przykładowo kod dla PIC16F do sprawdzenia obecności dwóch sensorów na dwóch pierwszych pinach portu A i ustawienie stosownych flag w dedykowanej ku temu...

    Mikrokontrolery AVR   02 Maj 2019 10:56 Odpowiedzi: 19    Wyświetleń: 1008
  • STM32F103 - Jak zrealizować czterobitowy licznik na diodach LED?

    [syntax=c]#define COUNTERMAX (uint32_t)(.5*1000) volatile struct { uint8_t cnt:4; }binary_counter; volatile uint32_t counter; void SysTick_Handler (void) { counter++; if(counter >= COUNTERMAX) { counter = 0; binary_counter.cnt++; } }[/syntax]

    Mikrokontrolery Początkujący   16 Gru 2018 02:26 Odpowiedzi: 7    Wyświetleń: 735
  • Ustawianie pojedynczych bitów w strukturze w WinAVR - avr-gcc 3.4.1

    Nie wiem jak v3.4.1 ale w v3.4.3 efekt jes taki: struct biciki{ unsigned bicik1:1; unsigned bicik2:2; unsigned bicik3:1; }; struct biciki pole; ... int main(void) { pole.bicik1=1; pole.bicik2=3; pole.bicik3=1; ... //po kompilacji dla "struct biciki pole" ... 27:m128.c **** pole.bicik1=1; 148 .LM8:...

    Mikrokontrolery   15 Lip 2011 16:09 Odpowiedzi: 25    Wyświetleń: 3866
  • Eclipse - Jak ustawić kompilator gnurx dla istniejącego projektu?

    Czy ktoś wie co tu się dzieje co to za can_block_p? i co ten fragment robi. Ogólnie wiem że volatile powoduje ze to nie będzie optymizowane.. [syntax=c] volatile struct st_can __evenaccess * can_block_p; can_block_p = (struct st_can __evenaccess *) 0x90200;[/syntax]

    Mikrokontrolery Pozostałe   04 Mar 2013 22:10 Odpowiedzi: 5    Wyświetleń: 2715
  • Brak ustawiania FLAGA_CZAS w przerwaniu timera - kod w pętli głównej nie wykonuje się

    W życiu bym nie wpadł na to że kompilator zoptymalizuje program, tak że nie będzie działać. Raczej szukałem problemu w moim kodzie i logice działania. W planie procesor ma obsługiwać wyświetlacz, przerwania zewnętrzne (pomiar prędkości maszyny) oraz sterowanie PWM i przekaźnikami. Wracając do tematu powinienem zadeklarować całą strukturę jako volatile...

    Mikrokontrolery Początkujący   09 Cze 2022 09:58 Odpowiedzi: 11    Wyświetleń: 603
  • REKLAMA
  • Timer2 ISR nie wyświetla godziny przy zegarze 1MHz i prescalerze 1024

    Może są inne błędy, ale: [syntax=c]volatile struct tm* t = 0;[/syntax] raczej nie wróży nic dobrego. t będzie wskazywało na komórkę pamięci o adresie 0 - rejestr R0 mikrokontrolera. Jeśli używasz wskaźników to musisz sobie przydzielić pamięć na strukturę na którą wskazują.

    Mikrokontrolery AVR   04 Gru 2014 18:39 Odpowiedzi: 13    Wyświetleń: 1062
  • AVR C - Optymalizacja dostępu do rejestrów PORT przez struktury lub unie

    struct portb { unsigned DS:1; unsigned RW:1; unsigned AS:1; unsigned :2; unsigned LOAD:1; unsigned :1; unsigned CS:1; }; volatile struct portb* const Portb = (volatile struct portb*)&PORTB; Bez const kompilator nie ma pewności, że Portb będzie zawsze pokazywać na adres i/o i operacje bitowe będą dostępne....

    Mikrokontrolery   27 Gru 2007 11:37 Odpowiedzi: 3    Wyświetleń: 2111
  • [C][Atmega8] Uniezależnienie definicji portu i linii portu od definicji funkcji

    DDRB, PORTB i inne są rejestrami, ale co znaczące można uzyskać ich adres. Utwórz sobie strukturę, w której będziesz przechowywał wskaźniki na rejestry oraz jakąś maskę bitu nad którym chcesz operować. [syntax=C]#include <avr/io.h> #include <macro.h> #include <stdint.h> struct ow_pin { volatile uint8_t* pin; volatile uint8_t* port;...

    Mikrokontrolery   30 Cze 2011 15:38 Odpowiedzi: 8    Wyświetleń: 2057
  • [AVR-GCC] TWI sprzętowe - brak zmiany zmiennej error przy braku ACK

    "Przydomek volatile wyłącza stosowaną przez kompilator optymalizację w stosunku do zmiennej. Używa się go wtedy, gdy dana zmienna jest modyfikowana przez nieznaną kompilatorowi formę (np. funkcję przerwania, itp.)." Zawsze to ustawiam aby nie pozwolić GCC na bycie 'za mądrym'. Przykład - mój kod w poście: volatile struct Work state; volatile struct...

    Mikrokontrolery AVR   10 Sie 2009 19:08 Odpowiedzi: 7    Wyświetleń: 2281
  • STM32 - HardFault przy inicjalizacji zegara podczas zapisu na kartę SD w Keil

    Hard Fault może oznaczać włączenie przerwania do którego nie napisano obsługi. Mylisz się. Standardowa rozbiegówka definiuje "słabe" handlery przerwań zawierające puste nieskonczone pętle. To nie ma nic wspolnego z hardfault'em. Hardfault leci generalnie na 1) dostęp do nieistniejącej pamięci, 2) nierozpoznaną instrukcję rdzenia, 3) nad użycie magistral...

    Mikrokontrolery Początkujący   26 Sie 2015 19:23 Odpowiedzi: 13    Wyświetleń: 1368
  • [C++] Alokacja pamięci dla wskaźnika Cpintd_Driver i Cpintd_Device – błąd incomplete type

    #define int i32 typedef i32 (*TCpintd_InitFunction)(stru... Cpintd_Driver* instance); struct Cpintd_Driver { struct Cpintd_Device* instance; TCpintd_InitFunction init; }; struct Cpintd_Device { volatile struct Hardware* hardware; struct CSL_CpIntdCfgInfo configuration; }; Ktoś pomógłby mi zaalokować pamięć dla wskaźnika...

    Programowanie   01 Wrz 2010 15:46 Odpowiedzi: 5    Wyświetleń: 2005
  • STM32F103 - Zapis do FLASHa nie działa przy optymalizacji -Os. Co robić?

    Nie ma to jak wrzucać dokładny kod błędu... main.c:32:32: error: Roleta_EEPROM causes a section type conflict with Roleta_EEPROM2 volatile struct Roleta_offsets Roleta_EEPROM[7] __attribute__ ((section(".eeprom_mem&... __attribute__ ((aligned (32))) = ^ Jak chcesz to mieć...

    Mikrokontrolery ARM   11 Lip 2016 07:57 Odpowiedzi: 37    Wyświetleń: 2628
  • STM32F429 + RA8875 7 800x480: Podłączenie przez FMC z SDRAM?

    le nie ma tam słowa o FMC . No bo FMC po skonfigurowaniu to po prostu pamięć w przestrzeni adresowej - czyli po prostu piszesz lub czytasz do/z tego adresu. Czyli DMA memory to memory. Dla przykładu u mnie w projekcie teraz używam banku 1, 16 linii danych i szyny adresowej A2 jaki DC. Po sonfigurowaniu FMC [syntax=c]typedef struct { volatile uint16_t...

    Mikrokontrolery ARM   19 Sie 2019 08:02 Odpowiedzi: 6    Wyświetleń: 1860
  • Jak wybudzić STM32F103 z trybu Standby używając HAL i CubeMX?

    Proponuję tego tak nie robić tylko utworzyć sobie do tego celu sekcję (at).:KoSik:. Po pierwsze [syntax=c]struct NOINIT nvram __attribute__((at(0x20000000)));[/syntax... jest tylko dla Keila - czyli niezbyt często wykorzystywanego przez amatorów kompilatora. Dla gcc trzeba zrobić sobie sekcję i nie ma innej możliwości - bo musisz powiedzieć linkerowi...

    Mikrokontrolery ARM   09 Gru 2018 18:36 Odpowiedzi: 20    Wyświetleń: 1029
  • [CC++] Filtr Kalmana na AVR do akcelerometru i żyroskopu – pytania o parametry i sygnały

    Witam. Postanowiłem napisać własny filtr Kalmana ponieważ nie mogłem na trafić na konkretną i szybką implementacje filtru na mikro-kontrolery AVR dla akcelerometru i żyroskopu. Jako podstawowe źródło informacji posłużył mi ten o to PDF : [url=http://twingo.ict.pwr.wroc.pl/~kona... Mam kilka pytań i wątpliwości...

    Automatyka Przemysłowa   08 Sty 2012 13:29 Odpowiedzi: 12    Wyświetleń: 4518
  • C - jak poprawnie przypisać wartości do struktury PWM_data?

    [syntax=c] volatile struct { uint8_t pin_0; uint8_t pin_1; uint8_t pin_2; uint8_t pin_3; uint8_t pin_4; uint8_t pin_5; uint8_t pin_6; uint8_t pin_7; } PWM_data={253,250,240,220,200,180,160,1}... [/syntax] No tak- to działa. Struktura jest volatile- co do zawartości- nie mam pewności czy każdy element struktury też jest volatile. No ale- jak mi napiszesz-...

    Mikrokontrolery   03 Sty 2012 22:12 Odpowiedzi: 11    Wyświetleń: 1481
  • Jak użyć warunku if i przerwania UART do obsługi czasu w C?

    Witam volatile struct _sTime { volatile uint8_t uiHours; volatile uint8_t uiMinute; volatile uint8_t uiSecond; }; ... ... if((60*sTime.uiMinute + sTime.uiSecond)>=600) { eMAIN_AutomatState = SERVICE_accepted; } if(true==volatileEverySecondsToggle && FREE==TxBufor_0.eTxStatuss)//tylko do spr. że...

    Mikrokontrolery AVR   06 Gru 2010 15:51 Odpowiedzi: 4    Wyświetleń: 1362
  • AVR-GCC - Optymalizacja dostępu do struktury przez GCC?

    Wszystko zależy od kontekstu w jakim używa się zmienne volatile. Wezmy najprostszy przypadek: [syntax=c] struct shared { uint8_t tab[16]; uint8_t idx; }; struct shared s; void isr(void) { s.tab[s.idx] = 1; } int main(void) { s.idx = 5; irq_enable(); while(1){ while(!s.tab[s.idx]); /*Do something*/ s.tab[s.idx] = 0; } } [/syntax] Oczywiście wiadomo,...

    Mikrokontrolery AVR   12 Cze 2014 22:15 Odpowiedzi: 25    Wyświetleń: 2943
  • Wszystko o ARM (LPCxxxx) i programowaniu w asm i C.

    Jeśli masz zmienną / stałą, to możesz jej nadać wartośc początkową jak każdej innej - to w jakiej sekcji się znajduje nie ma znaczenia. No tak. Zupełnie nie pomyślałem. Bo zastanawiałem się gdzie miało by być takie przypisanie wartości początkowej. I w ogóle nie pomyślałem o inicjalizacji ;p Nie mogą się zmienić o +4. Jeśli masz np uint8_t, uint16_t,...

    Mikrokontrolery ARM   28 Lis 2009 17:35 Odpowiedzi: 141    Wyświetleń: 17212
  • WinAVR: Jak efektywnie używać tablicy pól bitowych?

    Witam, przeglądałem posty na temat pól bitowych, sam ich czasami używam, ale potrzebuje stworzyć tablice pól bitowych, a dokładnie to chcę odwoływać się do pól poprzez indeks, a nie tylko nazwe. Wydawałoby się to proste: struct TPole{ unsigned char bit:1; }; volatile struct TPole Pole[100]; i teraz odwołanie powinno wyglądać :...

    Mikrokontrolery   02 Cze 2005 17:52 Odpowiedzi: 4    Wyświetleń: 2033
  • atmegaX8 WinAVR - cli() ignorowane, program nie czeka na wprowadzenie danych

    volatile struct { unsigned char icp_int: 1; unsigned char int0_int: 1; unsigned char rx_int: 1; unsigned char spi_int: 1; unsigned char adc_int:1; } intflags; i przerwanie: SIGNAL(SIG_USART_RECV) { // USART RX interrupt uint8_t c; c = UDR0; if (bit_is_clear(UCSR0A, FE0)) { rxbuff = c;...

    Mikrokontrolery   12 Paź 2007 06:54 Odpowiedzi: 5    Wyświetleń: 1419
  • STM32F0x UART RS232 - problem z buforem w kodzie obsługi transmisji uK=>PC

    Klepnąłęm kawałek kodu na STM32F0x dla obsługi transmisji uK=>PC. Jednak pojawił się dziwny objaw. Może ja nie widzę błędu.... Warto aby ktoś zerknął w ten kod: #define TBUF_SIZE_UART2 128 struct uart2_tx_buf_st { u16_t in; /* indeks zapisu */ u16_t out; /* indeks odczytu */ u16_t dat; /* licznik danych w buforze */ char buf [TBUF_SIZE_UART2];...

    Mikrokontrolery ARM   26 Lut 2016 18:00 Odpowiedzi: 17    Wyświetleń: 1425
  • [C] Jak zapamiętać różne typy danych pod jednym identyfikatorem w C?

    Czekaj...bo nie wiem czy dobrze załapałem ideę: chcesz w jednym miejscu sobie zdefiniować powiedzmy port dla wyśw. 7-seg, a potem go przepiąc i jedyne co redefiniować to jego piny, bez przekładania tych definicji typu 7_SEG_A_PORT, 7_SEG_A_DDR itd., tak? A jakbyś ugryzł to tak np.: [syntax=c] struct port_s { volatile uint8_t * led; volatile uint8_t...

    Programowanie   30 Kwi 2016 21:48 Odpowiedzi: 19    Wyświetleń: 2779
  • [C] Programowanie mikrokontrolerów - volatile w strukturach

    Jak to jest z atrybutem volatile dla struktur? Gdy struktura ma volatile to wszystko co się znajduje w strukturze jest volatile? Czy dodatkowo każdy element struktury trzeba oznaczać jako volatile? struct nazwa_struktury { uint8_tval1; uint8_tval2; } volatile x; To mogę już używać w x.val1 i x.val2, w przerwaniach i w pętli głównej programu?...

    Mikrokontrolery   25 Sty 2011 15:26 Odpowiedzi: 2    Wyświetleń: 1403
  • [c] Jak przypisać zmiennej w strukturze adres rejestru w AVR bez wskaźników?

    Witam, przewertowałem już kilka tematów i specyfikację avr-gcc ale nie znalazłem odpowiedzi na moje pytanie. Mianowice czy da się w jakiś sposób zrobić aby zmienna (nie wskaźnik) w strukturze [syntax=c] struct _A { volatile unsigned char pa; }; [/syntax] odpowiadała adresowi np. 0x1B (PORTA w Atmega32). Wiem że taki efekt można uzyskać za pomocą wskaźników...

    Mikrokontrolery AVR   05 Gru 2011 00:50 Odpowiedzi: 3    Wyświetleń: 944
  • [C++] - Ulotność (volatile) obiektu a ulotność jego składników

    To bardzo ciekawe bo dla takiego kodu: [syntax=c]struct foo { volatile int a; int b; foo() : a(0xbc), b(0xaa) {} }; int main(){ foo bar; return 0; } [/syntax] Main jest pusty. Kompilowane na -O2.

    Programowanie Początkujący   09 Lut 2016 17:41 Odpowiedzi: 15    Wyświetleń: 1356
  • Czy zmienne volatile rozwiązują problem synchronizacji w C?

    No że mam w każdego typu strukturze jedno pole przeznaczone na semafor, potem wykonuję wyżej wypisane makro na tym polu. Dodano po 15 Jest, jest, rozkminiłem to, jednak dodanie modyfikatora volatile przy definicji pola rozwiązuje problem, wcześniej omyłkowo dodałem modyfikator do nie tego pola co trzeba. struct { volatile uint32_t semafor :...

    Mikrokontrolery AVR   29 Mar 2012 21:07 Odpowiedzi: 15    Wyświetleń: 1384
  • Nieprawidłowe zliczanie impulsów w impulsatorze - zmiana kierunku obrotu

    Hej Używam dokładnie takich samych impulsatorów. Ten kod działa u mnie na przerwaniach: #define ENCODER_PIN0_DIRDDRB #define ENCODER_PIN0_PORTPORTB #define ENCODER_PIN0 (1<<PB0) #define ENCODER_PIN0_READ PINB #define ENCODER_PIN1_DIRDDRB #define ENCODER_PIN1_PORTPORTB #define ENCODER_PIN1 (1<<PB1) #define ENCODER_PIN1_READ...

    Mikrokontrolery AVR   27 Cze 2010 21:22 Odpowiedzi: 12    Wyświetleń: 1742
  • STM32F4 - Zmienne lokalne szybsze niż zmienne globalne.

    Nie pytam, jak robi to kompilator X, tylko pytam, czy aby uczynić zadość standardowi C każdy kompilator musi zrealizować tę zmienną w pamięci. Moim zdaniem NIE musi. Musiałby tylko wtedy, gdyby w kodzie znalazło się odwołanie do jej adresu. Nie musi. Ale odnosi się to tylko do takiej funkcji jak była w pierwszym poscie. Czyli do funkcji która nie wywołuje...

    Mikrokontrolery ARM   26 Lut 2014 12:09 Odpowiedzi: 34    Wyświetleń: 4734
  • Jak zdefiniować globalną strukturę TMenuItem w C?

    Może lepiej zdefiniować typ zawierający jedną komórkę tablicy (w pliku nagłówkowym), po czym wpakować tam całą tablicę jako statyczną? dane.h: typedef struct { volatile unsigned char tekst[15]; volatile unsigned char start_x; volatile unsigned char ID; volatile unsigned char Page; volatile unsigned char Up; volatile unsigned char Down;...

    Mikrokontrolery   31 Lip 2007 13:04 Odpowiedzi: 2    Wyświetleń: 971
  • Czy struktura `FlagProtocol` w C jest automatycznie inicjalizowana do 0?

    Czy zmienna złożona typedef struct Modbus { volatile char ErrorFrame; volatile char ErrorOrder; volatile char TimeOut; volatile char Message; volatile char SendBlank; volatile char SupervisorTimer; volatile char ErrorAddress; }FlagProtocol; volatile FlagProtocol FlagModbus; zostanie zainicjowana automatycznie (do wartości 0) ?

    Mikrokontrolery AVR   12 Gru 2010 18:08 Odpowiedzi: 16    Wyświetleń: 3019
  • [STM32F0] [STM32F0][EclipseGCC] - Problem z dostępem do pamięci USB przy różnych optymalizacjach

    Cześć, próbuję zdefiniować sobie struktury, które pozwolą na dostęp do pamięci USB w bardziej cywilizowany sposób. Mniej więcej coś takiego: [syntax=c]#include <cstdint> #include <new> struct BufferDescriptionTableEntry { volatile uint16_t addr; volatile uint16_t count; } __attribute__((packed)); struct EndpointBufferDescription { BufferDescriptionTableEntry...

    Mikrokontrolery ARM   16 Sie 2017 21:24 Odpowiedzi: 3    Wyświetleń: 972
  • GDB nie wyświetla zawartości rejestrów peryferiów w projekcie STM32F103 (Bluepill)

    Może to dlatego, że GIOB to jest makro a nie zmienna. Wydłubałem trochę kodu z twoich plików źródłowych: [syntax=c]#define __IO volatile typedef struct { __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef; #define PERIPH_BASE ((uint32_t)0x40000000) #define...

    Mikrokontrolery ARM   25 Lut 2022 14:16 Odpowiedzi: 16    Wyświetleń: 630
  • [STM32][C] - Poradnik dla początkujących (bez bibliotek)

    Poradnik spoko - zauważyłem lepszą przydatność wygenerowania pojedynczego pliku nagłówkowego z rejestrami, skrojonego na miarę, w postaci struktury unii, niżeli używanie wyciętych fragmentów pliku nagłówkowego. Niestety trzeba uważać przy tworzeniu takiego pliku nagłówkowego i pilnować poprawności z dokumentacją: [syntax=c] #include <stdint.h>...

    Mikrokontrolery ARM   15 Maj 2021 12:57 Odpowiedzi: 135    Wyświetleń: 92463
  • [Atgega8][C] Obsługa impulsatora (enkodera) obrotowego

    Ja osobiście użyłem kondensatorów i następującego kodu: struct Encoder { u08 last; // Last read of encoder u08 current; // Current state of encoder int value; }; volatile struct Encoder encoder; void encoderCheck(void) { u08 v = 0; if(ENCODER_PIN0_READ & ENCODER_PIN0) { v = v + 1; } if(ENCODER_PIN1_READ &...

    Mikrokontrolery AVR   27 Lut 2010 22:28 Odpowiedzi: 17    Wyświetleń: 9802
  • STK1000 AVR32 - niestabilny obraz VGA 1024x768@60Hz bez Linuxa, jak naprawić?

    Używam 16bitowego koloru, nie mam systemu operacyjnego, problem z jakim się borykam jest raczej opisany w podanym przez Ch.M. pdfie na str.14 pod tytułem "7.2 Priority-Based Arbitration" dokładnie to zdanie "image on the screen is shifted vertically/horizontally." tak się to zachowuje. I faktycznie aby naprawić problem robię : "To resynchronize the...

    Mikrokontrolery   02 Cze 2008 13:07 Odpowiedzi: 2    Wyświetleń: 1961
  • [atmega8] USART w C - błędy przy małym rozmiarze bufora kołowego

    Różnice rzędu 2 instrukcji jakoś do mnie w tym przypadku nie trafiają. Czyli różnice czterech czy sześciu bajtów flasha (zakładam że na AVR jedna instrukcja ma 2 bajty) do Ciebie nie trafiają, ale różnica jednego bajta w RAM już trafia? Widzisz niekonsekwencję? Ja tu data race nie widzę. Czy jest coś polem bitowym czy int-em. (i abstrahujmy od tego...

    Mikrokontrolery AVR   02 Gru 2017 15:24 Odpowiedzi: 43    Wyświetleń: 4191
  • Jak napisać kod GPIO dla STM32 bez użycia bibliotek?

    Mój przebiegły umysł wypłodził coś takiego, napisałem to na luźno jako koncepcję, bez sprawdzanie tego w praktyce :P [syntax=c]/* * main.c * * Created on: May 19, 2012 * Author: tymon_x */ #include "stdint.h" #include "stdio.h" // BUTTONS ////////////////////////////////////////... typedef enum E_BUTTON_ACTION { Button_Down, Button_Release,...

    Mikrokontrolery ARM   07 Lip 2012 20:42 Odpowiedzi: 188    Wyświetleń: 18582
  • [ATmega16] Jak zaimplementować programowe PWM dla matrycy LED 8x8 na ATmega16?

    To problem podstawowy leży tutaj: line oraz index są typu char, a indeksy w tablicach powinny być typu int. Możesz to rozwiązać na dwa sposoby: Sposób 1. zmieniając typy line oraz index na int Sposób 2. zostawiając zmienne line oraz index jako char ale wymuszając jawnym rzutowaniem konwersję w każdej linii tego wymagającej [syntax=c] if (pwm_index[(int)pwm_led[(int)line][0].in...

    Mikrokontrolery AVR   23 Wrz 2012 10:29 Odpowiedzi: 27    Wyświetleń: 6714
  • AVR-GCC w Atmel Studio 7.0.948 - Makro jako argument dla makro

    Chyba mam [syntax=c]typedef struct { volatile uint8_t* Port; volatile uint8_t* Pin; volatile uint8_t* Ddr; } AVR_SFR_GPIO; const AVR_SFR_GPIO GPIO[] = { #ifdef PORTA { .Port = &PORTA, .Pin = &PINA, .Ddr = &DDRA }, #endif { .Port = &PORTB, .Pin = &PINB, .Ddr = &DDRB }, { .Port = &PORTC, .Pin = &PINC, .Ddr = &DDRC },...

    Mikrokontrolery AVR   05 Lis 2016 15:09 Odpowiedzi: 23    Wyświetleń: 1413
  • ATmega8A - Problem z przerwaniem od przetwornika ADC

    Witam. Po dość długim czasie postanowiłem powrócić do programowania AVR ze względu na mały projekt który planuję w niedalekiej przyszłości. Zaopatrzyłem się w oprogramowanie, mikrokontroler i do dzieła. Po całym dniu oprogramowywania różnych peryferiów utknąłem na ADC. Otóż mam taki problem, że nie działa mi procedura obsługi przerwania od ADC umieszczona...

    Mikrokontrolery AVR   24 Sty 2017 06:56 Odpowiedzi: 9    Wyświetleń: 993
  • Unia z polami const i zwykłymi w języku C: czy jest dozwolona? - struct, uint8_t, avr-gcc

    Czy taka unia: Powinno działać, ja tylko dodałbym volatile, żeby kompilator widząc const za bardzo nie optymalizował.

    Programowanie Początkujący   04 Wrz 2021 23:36 Odpowiedzi: 12    Wyświetleń: 423
  • 16F690 - [MPLAB X][XC8] Rejestry, składnia - problemy na starcie

    Ad 1: [syntax=c]// bitfield definitions typedef union { struct { unsigned T2CKPS :2; unsigned TMR2ON :1; unsigned TOUTPS :4; }; struct { unsigned T2CKPS0 :1; unsigned T2CKPS1 :1; unsigned :1; unsigned TOUTPS0 :1; unsigned TOUTPS1 :1; unsigned TOUTPS2 :1; unsigned TOUTPS3 :1; }; } T2CONbits_t; extern volatile T2CONbits_t T2CONbits (at) 0x012;[/syntax]...

    Mikrokontrolery PIC   18 Sie 2013 11:09 Odpowiedzi: 4    Wyświetleń: 2421
  • [C] ATmega 128: Operacje na tablicach z danymi z czujników, sumowanie i średnia

    Odpowiednie typedefy są w nagłówku stdint.h Co do podziału pomiędzy przerwanie a program główny to pewnie zapomniałeś modyfikatora volatile przy deklaracji zmiennych, które są dzielone pomiędzy przerwaniem a main(). Co do "tablicy czujników": struct czujnik { uint8_t adres; /* do wyboru czujnika na szynie */ uint8_t ileProbek; uint16_t probki[ROZMIAR];...

    Mikrokontrolery AVR   27 Maj 2010 23:11 Odpowiedzi: 18    Wyświetleń: 2115
  • [LPC17xx Cortex, CrossWorks] Durne błędy kompilacji

    W pliku LPC1768.h masz taką definicję: #define CCR (*(volatile unsigned char *)0x40024008) w pliku core_cm3.h masz taką linijkę: typedef struct { ... __IO uint32_t CCR; /*!< Configuration Control Register */ ... } SCB_Type; Definicja z pierwszego zostaje wstawiona do drugiego i powstaje chaos. Nie ma tu prostego rozwiązania, możesz spróbować...

    Mikrokontrolery ARM   22 Sty 2011 16:50 Odpowiedzi: 5    Wyświetleń: 2243
  • Cortex-M3: Jak używać bit bandingu w pamięci SRAM i rejestrach peryferyjnych?

    Przykład dla komercyjnego RealView Development Suite (RVDS): [syntax=c] typedef struct { volatile unsigned x: 1; volatile unsigned y: 1; } st __attribute__((bitband)); st s; int main() { s.x = 1; s.y = 0; for (;;); } [/syntax] Po kompilacji: [syntax=asm] 0800024c <main>: 800024c:4802 ldrr0, [pc, #8]; (8000258 <main+0xc>) 800024e:2101 movsr1,...

    Mikrokontrolery ARM   14 Maj 2013 12:45 Odpowiedzi: 30    Wyświetleń: 6393
  • AVR attiny2313A - Programowy PWM, brak automatycznego zerowania TCNT0.

    Witam. Piszę ponieważ mam problem z programowym PWM na attiny2313A. Ustawiam Timer w tryb CTC. Po zrównaniu TCNT0 z OCR0A powinno samo wyzerować rejestr TCNT0. Niestety tak się nie dzieje, jeśli sam się tym nie zajmę to serwa szaleją. Z obliczeń wynika, że przerwanie TIMER0_COMPA_vect powinno wykonywać się co 0,01ms. PWM ma działać tak: Uruchamiamy...

    Mikrokontrolery AVR   27 Lip 2015 13:14 Odpowiedzi: 9    Wyświetleń: 1077
  • Aquamat - sterownik akwariowy Open Source

    To może być napisał taki scenariusz w C... Poniżej koncepcja portów PWM napisana w "zwykłym" C #include <stdio.h> #define TAU1 10000 #define TICKS 50 #define TICKS2 2 struct PWM { int width; }; volatile int clock10ms = TICKS; volatile int clock05s = TICKS2; int i; struct PWM pwms[4]; void interrupt(void) { printf...

    DIY Konstrukcje   26 Lut 2011 19:09 Odpowiedzi: 16    Wyświetleń: 20021
  • Atmega16: Błędy kompilacji przy użyciu funkcji w przerwaniu INT0

    Jeśli chcesz gotowego rozwiązania to napiszę jak sam robię takie systemy: Deklaruję pewną strukturę globalną, koniecznie volatile, w której umieszczam flagi w zależności od tego ile ich potrzebuję, np.: [syntax=c]volatile struct sZmienna { unsigned char Pomiar :1; unsigned char Timer :1; unsigned char Odswiez_LCD :1; //itd. }Zmienna;[/syntax] Następnie...

    Mikrokontrolery AVR   12 Lip 2012 19:31 Odpowiedzi: 29    Wyświetleń: 2216
  • AVR/ATmega8 - Gdzie stosować volatile przy tablicach i strukturach?

    Witam, ostatnio pisze bibliotekę służącą do eliminacji drgań styków w przyciskach. Będzie to działało w ten sposób, że w timerze wywołujemy funkcje obniżającą czas po którym możemy wcisnąć przycisk kolejny raz. Tak samo w kodzie - używamy funkcji z biblioteki która robi wszystko za nas :) Jednak napotkałem na taki problem - gdzie zastosować volatile...

    Mikrokontrolery AVR   28 Sty 2017 07:43 Odpowiedzi: 40    Wyświetleń: 2532
  • atrybut "volatile" dla struktury danych - niezgodność

    Może mój przykład został źle dobrany, ale poprawienie ISR'a lub usunięcie powoduje generowanie identycznego kodu wynikowego, więc problem dalej występuje. Generalnie zmienne, które nie są volatile, nie powinny być używane do komunikacji program-przerwanie (mimo że wiele osób, w tym ja czasami tak robi, tyle że u mnie odnosi się to co najwyżej do tablic)....

    Mikrokontrolery   28 Sie 2011 09:32 Odpowiedzi: 23    Wyświetleń: 3667
  • 1wire SEARCH ROM (0xF0) zwraca dwie jedynki - problem z odczytem

    Na oscylogramie widać podstawę czasu przypadającą na działkę więc wrzuciłem aby ktoś porównał to z tym jak ma być, więc dlaczego twierdzisz że nie jesteś w stanie odczytać zależności czasowych? Co mi da wrzucenie przez kogoś swojego oscylogramu z działającej komunikacji? Ano to że wówczas dokonam właśnie porównania z timingami które ja mam u siebie...

    Mikrokontrolery   27 Sie 2020 23:10 Odpowiedzi: 26    Wyświetleń: 1461
  • C++: Optymalizacja stałych danych w pamięci FLASH dla STM32F10X

    Nie do końca umiem wyjaśnić, dlaczego C++ różni się tutaj od C, ale mam inną propozycję, rodem z ANSI C :) Przykładowy kod można przepisać: #include <stddef.h> typedef struct { int first; int second; int third; } type_t; #define ADDRESS 0x12345678 const int data = (ADDRESS + offsetof(type_t, second))*2; int main(void)...

    Mikrokontrolery ARM   17 Sie 2009 07:42 Odpowiedzi: 9    Wyświetleń: 2957
  • [PIC16F1513][XC8/MPLAB X] - Kompilator nie widzi struktury/unii

    AVE... Od paru dni próbuję napisać pewien program dla PIC16F1513 w XC8, którego dopiero się uczę. To ogólnie rzecz biorąc mój pierwszy poważny kontakt z C w ogólności, więc nie do końca rozumiem ten język. Mam następującą deklarację struktury/unii: Main.c:234: error: (196) struct/union required Main.c:234: error: (182)...

    Mikrokontrolery PIC   18 Paź 2015 14:29 Odpowiedzi: 2    Wyświetleń: 2010
  • [C]Wyciąganie ze stringa i wpisywanie do tabeli struktur

    Mam następujący problem: dostaję ciąg znaków z rs'a, który zapisują do jednej zmiennej i chcę z tego ciągu wyciągnąć dwa podciągi i zapisać je do jednego wiersza tabeli struktur. Definicje: //przed main: #define UART_MAXBUFF 37 char uart_rx_buffer[UART_MAXBUFF+1]; //w main: char bufor[20] = ""; volatile typedef struct...

    Mikrokontrolery AVR   03 Kwi 2009 07:21 Odpowiedzi: 3    Wyświetleń: 1348
  • UART w AT89C2051 - nie działa sprzętowy UART, kod inicjalizacji i odbioru

    Mój kod /* UART Buffer Defines */ #define UART_RX_BUFFER_SIZE 4 /* 2,4,8,16,32,64,128 or 256 bytes */ #define UART_TX_BUFFER_SIZE 16 #define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1 ) #if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK ) #error RX buffer size is not a power of 2 #endif #define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE...

    Mikrokontrolery Pozostałe   22 Mar 2017 23:31 Odpowiedzi: 7    Wyświetleń: 2514
  • 5 powodów, dla których warto budować własne środowisko do kodowania w C/C++

    AVE... We wszystkich układach, z którymi ja miałem do czynienia wartości były równane do prawej, inaczej pisząc little endian. W przypadku MCU ma to znaczenie tylko dla timerów/liczników i ADC, i tylko wtedy, gdy chcemy by to miało znaczenie. Dla przykładu weźmy PIC16F1827. Układ ma 16-bitowy Timer1, który jest inkrementowany albo przez wybrany pin,...

    Artykuły   25 Kwi 2023 11:56 Odpowiedzi: 54    Wyświetleń: 3402
  • Jak wyłączyć wyświetlanie Warningów w WinAVR przez modyfikację makefile?

    Przykład podałeś dobry ale zapewniam że nigdy nie dokonałem operacji przypisania na statycznym łańcuchu bo taka nie ma sensu. W C trzeba to robić za pomocą strcpy itp. Mam pytania dotyczące kolejnych warningów: (6) warning: array subscript is above array bounds Ten jak rozumiem dotyczy przekroczenia zakresu tablicy co w takiej funkcji: (7) warning:...

    Mikrokontrolery AVR   16 Mar 2011 13:38 Odpowiedzi: 16    Wyświetleń: 3205
  • [Attiny25,C] - Pusty wskaźnik do funkcji w strukturze.

    Wrzucę tutaj rozwiązanie problemu , może ktoś tu jeszcze trafi :D Wystarczyło przypisać adresy funkcji do wskaźników : Dodano po 1 Masz rację . Myślałem trochę inaczej , że już sama nazwa wskaźnika jak funkcji na którą ma wskazywać przypisuje mu jej adres. Jest odwrotnie to nazwa może być wskaźnikiem. Tak jak w przypadku tablic. Tzn nie jest konieczny...

    Mikrokontrolery AVR   16 Mar 2014 16:38 Odpowiedzi: 6    Wyświetleń: 942
  • [LPC1765] - [LPCXpresso] Powolne wywoływanie przerwań, wymiana na STM32F4 ?

    Od kilku dni zabawiam się kamerką OV7670, próbuję pobrać z niej obraz w formacie RGB565 i o mało ambitnej rozdzielczości QCIF(bo taki zmieści się w całości w RAM). Program, który napisałem ma za zadanie w przerwaniu pobrać obraz do pamięci, zatrzymać przerwanie i zapisać zawartość do pliku bmp. Oto mój kod : Otw. pliku 0 Init OV7670 1 System Clock 120...

    Mikrokontrolery ARM   28 Wrz 2012 19:20 Odpowiedzi: 6    Wyświetleń: 2079
  • PID na ATmega - AVR221 brak reakcji na wejściu układu

    Pomogło dodanie volatile w strukturze. Dzięki, teraz wszystko działa jak należy. [syntax=c]struct GLOBAL_FLAGS //brief Flags for status information { //! True when PID control loop should run one time volatile uint8_t pidTimer:1; volatile uint8_t dummy:7; } gFlags = {0, 0};[/syntax] Zastanawiam się tylko dlaczego nie było to zaimplementowane w kodzie...

    Mikrokontrolery   26 Lut 2014 14:17 Odpowiedzi: 8    Wyświetleń: 2172
  • Jak ustawić 10 pinów portów w stan wysoki za pomocą wskaźników?

    :arrow: sandrak24 Chcesz mieć tablicę, gdzie będziesz miał wpisane numery portów i bitów do ustawienia w programie w stan wysoki? O to chodzi? Bo, prawdę mówiąc, też nie rozumiem, co znaczy, że porty ustawione w tablicy... W każdym razie, jeżeli chodzi chodzi o to, co napisałem, to np. [syntax=C] typedef struct { volatile uint8_t *port; uint8_t bit_mask;...

    Mikrokontrolery AVR   27 Lut 2012 22:40 Odpowiedzi: 24    Wyświetleń: 2003
  • STM32F103c8t6 - malloc nie przydziela pamięci, jak rozwiązać problem?

    problem na razie nierozwiązany.. wyłączyłem przerwania w ogóle, kod (fragmenty )wygląda teraz tak: [syntax=c] extern struct message* RX_que; extern volatile uint8_t RX_que_ptr; extern volatile uint8_t RX_que_cnt; struct message { struct message* next; struct message* prev; uint8_t* content; uint16_t size; }; uint8_t add_to_que (struct message** que_ptr,...

    Mikrokontrolery ARM   31 Maj 2014 07:45 Odpowiedzi: 4    Wyświetleń: 1272
  • Jak skompilować lwIP 1.3.2 z poprawnym uwzględnieniem ścieżek do plików?

    Tak Freddie Chopin, Twoja rozbiegówka LPC2103 po zmianie rozmiaru pamięci i przydzeleniu troche dla obsługi przerwań zadziałała. MEMORY { rom (rx): org = 0x00000000, len = 512k ram (rwx): org = 0x40000000, len = 32k } __user_system_stack_size = 1024; __fiq_stack_size = 0; __irq_stack_size = 128; __supervisor_stack_size...

    Mikrokontrolery   23 Paź 2011 15:48 Odpowiedzi: 27    Wyświetleń: 3270
  • Wskaźnik do zmiennej umieszczony w strukturze w "Atmel Studio"

    Witam. Chcę stworzyć menu z różnymi elementami do wyświetlania na ekranie. Chcę w strukturze umieścić wskaźnik do zmiennej. [syntax=c]struct PozycjaMenu { uint8_t x; uint8_t y; volatile uint8_t *liczba; // wskaźnik do zmiennej uint8_t LiczbaCyfr; uint8_t MiejscePrzecinka; };[/syntax] będą tam jeszcze inne dane ale później. Stworzyć pozycję menu [syntax=c]struct...

    Mikrokontrolery AVR   15 Lip 2017 19:17 Odpowiedzi: 11    Wyświetleń: 1911
  • AVR/ATMEGA644PA: Problem z odczytem zmiennej z EEPROM poza instrukcją if

    Witam Mam pytanie dlaczego zmienna która inkrementuje się tutaj: [syntax=c] if(klawisz_wcisniety(ZAWODNIK_M)) { lcd_cls(); zawodnik_przejazdy_read(); zawodnik_przejazdy[zawodnik.numer].okraz... = 0; zawodnik_przejazdy_update(); zawodnik.numer++; zawodnik_przejazdy[zawodnik.numer].okraz... zawodnik_przejazdy_update(); } [/syntax] Inkrementuje się...

    Mikrokontrolery Początkujący   01 Sie 2013 19:50 Odpowiedzi: 1    Wyświetleń: 1179
  • Różna optymalizacja różnych fragmentów kodu. C.

    Nie podałeś kompilatora, ani jego wersji. Bo założyłem że taka optymalizacja to jakiś element języka C a więc niezależny od kompilatora. BTW, dla konkretnych funkcji pewnie o wiele więcej zyskasz stosując konkretne atrybuty związane z inlinowaniem, rozwijaniem pętli, dzieleniem typów itd. Raczej nie bo główną rzeczą którą chcę uzyskać to brak optymalizacji...

    Mikrokontrolery   16 Lis 2011 17:28 Odpowiedzi: 24    Wyświetleń: 1883
  • Framework AVR GCC do tablicowego sterowania pinami Atmegi jak w Arduino

    (...) no), może być np #define LED A3, gdzie A3 jest odpowiednikiem zarówno DDRA |= (1 << PA3), PORTA |= (1<<PA3) jak i PINA & (1<<PA3). Umożliwi to definiowanie tablic pinów (np. do sterowania wieloma ledami) jako: const uint8_t pinLED Tworzenie takiego frameworku dla AVR GCC, który pozwalałby na wygodny dostęp do poszczególnych...

    Mikrokontrolery Początkujący   07 Lut 2024 13:34 Odpowiedzi: 71    Wyświetleń: 1038
  • [STM32F0DISCOVERY/C] Konfiguracja przerwania Timera 6

    A mi się najbardziej podoba pierwsza instrukcja, która włącza HSI. Bez niej procesor w ogóle nie mógłby działać, bo nie ma źródła zegara. Ciekawe, jakim cudem w ogóle ją wykonuje... :) Kod poniżej robi to, o ci Ci chodzi - jak widać, wystarczy 9 zapisów do rejestrów, żeby skonfigurować porty i timer. Nie przezsadzaj z tymi operacjami logicznymi... [syntax=c]...

    Mikrokontrolery ARM   03 Lut 2013 15:50 Odpowiedzi: 14    Wyświetleń: 1992
  • Dekodowanie sygnału DCF77 na ATmega - synchronizacja czasu bez GPS

    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 był problem, gdy je zasilałem osobno - z sieci lub z baterii...

    Mikrokontrolery AVR   09 Mar 2023 17:01 Odpowiedzi: 27    Wyświetleń: 10116
  • Kłopoty z zarządzaniem pamięcią RAM w C++ przy użyciu struktur i klas

    Witam wszystkich, właśnie klepię się po łysinie, ponieważ wyrwałem już sobie wszystkie włosy :( Sytuacja jest następująca: Mam takie oto definicje: - this0x21e2class CMotor*{registers}(at) R07 R06 - *(this){class CMotor{registers}(at)0x21e2... CMotor{registers}(at)0x21e2 ----------------------------------------...

    Mikrokontrolery Początkujący   05 Paź 2016 10:18 Odpowiedzi: 12    Wyświetleń: 1221
  • [Zlecę] Tworzenie oprogramowania do pomiaru czasu impulsów na RPi

    Można odczytywać stan wejść w przerwaniach uzyskiwanych przy użyciu setitimer() - pewnie od systemu zależy, jakie będą odstępy czasy między nimi, można zadeklarować, jakie mają być, ale jak się zadeklaruje bardzo małe, to wychodzą większe, niż przy zadeklarowaniu nieco większych - a to dlatego, że program przestanie zdążać z obsługiwaniem przerwań....

    Projektowanie Bazar   20 Sty 2024 02:20 Odpowiedzi: 13    Wyświetleń: 630
  • ATxmega TWI - nie umiem obsłużyć tej magistrali po przesiadce z Mega

    Program na GLCD skleiłem z dwóch bibliotek - I2C Slave TMF (pierwsza książka) oraz obsługa wyświetlacza autorstwa "SunRivera" udostępnionej przez niego na Dropie. Podejrzewam, że mogłem coś namieszać w I2C - biblioteka była pisana na Atmega 88, ja skompilowałem ją na Atmega32. Kompilator protestował przeciwko obecności rejestru "TWAMR", którego 32 nie...

    Mikrokontrolery AVR   15 Lut 2014 20:15 Odpowiedzi: 10    Wyświetleń: 2547
  • Losowe błędy w pracy mikrokontrolera - jak je przyspieszyć?

    Te pola bitowe wyglądają tak: [syntax=c] struct flagi1// bity flag uzywanych w programie { volatile u08 KeysOn : 1 ; // bit wcisnietego klawisza volatile u08 I2C_trans_pending : 1 ; //bit trwajacej wlasnie transmisji I2C volatile u08 I2C_ACK_ERROR : 1 ; // bit wystapienia bledu I2C (NACK) volatile u08 MMC_ErrorWas : 1 ; // bit wskazujacy ze byl blad...

    Mikrokontrolery   29 Sty 2013 12:59 Odpowiedzi: 31    Wyświetleń: 4281
  • HY-Mini STM32 - Zaświecenie diody poprzez naciśnięcie buttona

    Ponieważ ja zawsze byłem zbyt leniwy, by pisać tak dużo instrukcji, ile potrzebują wywołania bibliotek, a jednocześnie lubię używać mikrokontrolerów z małą pamięcią, popełniłem na STM32F0 (płytka DISCOVERY) takie coś do włączania i wyłączania diod guzikiem. Program jest mało ambitny, bo ma ledwie ze 6 instrukcji w C, ale działa dobrze i może komuś się...

    Mikrokontrolery ARM   20 Gru 2012 20:12 Odpowiedzi: 6    Wyświetleń: 2964
  • Jak zdefiniować porty wyjściowe w Atmega8 dla transceivera MMcc1000?

    Jeżeli chcesz koniecznie koniecznie wykorzystać metodę, o której pisał tmf, możesz zrobić tak: [syntax=c] typedef struct _PortBits { unsigned b0 : 1; unsigned b1 : 1; unsigned b2 : 1; unsigned b3 : 1; unsigned b4 : 1; unsigned b5 : 1; unsigned b6 : 1; unsigned b7 : 1; } tPortBits; #define PORT_BITS(p) (*(volatile tPortBits*)&(p)) #define SCLK_RF_PORT...

    Mikrokontrolery AVR   05 Cze 2013 14:44 Odpowiedzi: 22    Wyświetleń: 3645
  • [Atmega328p] [C] - Żle odmierzana czas, zła konfiguracja timera?

    jedyne co mogę jeszcze dołożyć to definicja struktury [syntax=c] struct connections { uint8_t detect : 3; //nr. detektora uint8_t triac : 3; //nr. triaka uint8_t setFlag : 2; //znacznik ustawienia fazy }; // zmienna connections ma zapisane w sobie // kolejności występowania faz oraz przyporządkowuje // do fazy detektor i triak volatile struct connections...

    Mikrokontrolery AVR   27 Lip 2015 15:16 Odpowiedzi: 14    Wyświetleń: 3303
  • [C] Jak zainicjalizować wskaźniki do tablic struktur w C?

    Jednak się da, bez konieczności tworzenia osobnych struktur i wpisywania nazw tych struktur w inicjalizacji innych struktur :) Nie wiem czy wszystkie kompilatory to zaakceptują.. typedef struct { u8 flags; // BTN_TRANSPARENT | BTN_TOGGLE | BTN_VISIBLE u16 y_size; u16 x_size; const u8 *file; } btn_vars_t; // STALA struktura we flashu... typedef...

    Mikrokontrolery   02 Gru 2011 08:45 Odpowiedzi: 5    Wyświetleń: 2714
  • [LPC2138][C/Keil] - Symulator swoje, MCU swoje (struktury z polami bitowymi)

    Witam serdecznie! Natknąłem się na taki oto problem. Napisałem sobie funkcję, która służy do ustawiania rejestru Mach Control Register i wygląda tak: MCR ustawia jeszcze dodatkowo przerwanie dla Mach3 i reset dla Mach2. Czy ktoś z Was, szanowni Koledzy spotkał się już z takim problemem? Albo orientuje się skąd on może wynikać? Czyżby symulator był błędnie...

    Mikrokontrolery ARM   14 Gru 2012 12:11 Odpowiedzi: 11    Wyświetleń: 2091
  • ATmega reset i utrata EEPROM silne zakłócenia EMI

    Witam ponownie, próbowałem ogarnąć na początek funkcję eeprom_write_block. Oto fragment kodu: [syntax=c] typedef struct { // tu są chary, inty, tablice } TEngine; // zmienna w RAM volatile TEngine Engine; // Kopia będzie w EEPROM TEngine EEMEM eeEngine; // i gdzieś w kodzie dalej eeprom_write_block( &Engine, &eeEngine, sizeof(Engine) ); [/syntax] Przy...

    Mikrokontrolery AVR   08 Sty 2020 21:50 Odpowiedzi: 7    Wyświetleń: 999
  • [stm32][DMA] - transer completed, a fizyczne zakończenie tranmisji

    A w pliku stm32f10x.h jest: [syntax=c]#define SPI_CR2_TXEIE ((uint8_t)0x80) /*!<Tx buffer Empty Interrupt Enable */[/syntax] Zauważ że to przerwanie będzie generowane po każdym opróżnieniu bufora TX. Powinieneś włączyć je dopiero pod koniec czyli w Twoim przypadku podczas obsługi przerwania od zakończenia działania DMA. Lepiej jednak wróćmy do wcześniejszej...

    Mikrokontrolery ARM   23 Cze 2012 19:32 Odpowiedzi: 13    Wyświetleń: 2205
  • Jak naprawić kod do komunikacji I2C między dwoma Atmegami?

    kod dla mastera [syntax=cpp]#include<avr/io.h> #include<util/delay.h> #include<util/twi.h> #include <avr/interrupt.h> #define I2C_STARTError 1; #define I2C_NoNACK 1; #define I2C_NoACK 1; unsigned int address = 0x20; //identyfikator urzadzenia slave unsigned int byte = 0x01; // wysłanie danych unsigned int bytee = 0x05; // wysłanie...

    Mikrokontrolery AVR   27 Gru 2011 19:37 Odpowiedzi: 8    Wyświetleń: 3102
  • [avr-gcc] tablica 128 bitów - sposób utworzenia: struct?

    ok flagi bitowe tworzę tak : typedef struct { unsigned char bit0:1, bit1:1, bit2:1, bit3:1, bit4:1, bit5:1, bit6:1, bit7:1; } FlagBits; typedef union { FlagBits Bits; unsigned char Byte; } Flags; volatile Flags flaga ; #define jakas_flaga flaga.Bits.bit0 ale potrzebuję tablicy o rozmiarze 128 komórek...

    Mikrokontrolery   05 Gru 2009 11:25 Odpowiedzi: 13    Wyświetleń: 3179
  • [ATtiny 44a][C/WinAVR][RC5] - Błędne dekodowanie ramki, w około 10-15% odczytów

    Witam! Procesor ziała z wewnętrznym oscylatorem 8MHz. Cały mój problem zawarłem w temacie, więc po prostu zaprezentuję kod, ew. wyjaśnienia pod kodem. Struktura danych dla RC5: [syntax=c]volatile struct rc5_state_t { uint16_t ref_time; char code[14]; uint8_t code_count; char stan; //Poniżej zmienne wyjściowe po zdekodowaniu RC5 uint8_t address :5; uint8_t...

    Mikrokontrolery AVR   22 Lip 2013 11:06 Odpowiedzi: 12    Wyświetleń: 1977
  • [ATMega16][C] Program się zawiesza w losowych momentach

    mirekk36 - póki co, może obejdzie się bez angażowania Twojego czasu na analize moich krzaczków ;) Problem występuje także wtedy, gdy wyłączę podświetlenie (w opcjach ustawię na 0). Więc (byćmoże prądożerne) podświetlenie lcd nie jest przyczyną. Po założeniu loga na RSie doszedłem do tego, ze zawiesił się przy odczycie danych z drugiego modułu - czyli...

    Mikrokontrolery AVR   14 Wrz 2011 21:13 Odpowiedzi: 56    Wyświetleń: 4753
  • [LPC1769] [LPC1769][C] - Błędna obsługa UART w przerwaniu, niepoprawne znaki na terminalu

    Wstawiam kod obsługi odbioru danych w przerwaniu, gdzie odebrane dane są zapisywane do bufora a po zapełnieniu bufora do zewnętrznej pamięci, w tym przypadku na karte SD, docelowo do pamięci Flash - może komuś się przyda. [syntax=c] #include "LPC17xx.h" #include "lpc17xx_systick.h" #include "lpc17xx_uart.h" #include "lpc17xx_pinsel.h" #include "diskio.h"...

    Mikrokontrolery   03 Lip 2014 11:50 Odpowiedzi: 8    Wyświetleń: 1776
  • Kod C dla ATmega8 do regulatora modelarskiego - brak reakcji urządzenia

    No to próbuję: [syntax=c] //* \section OA Original author //* Andy Gayne is the original author of this application note. //*/ //program z noty Atmela 136 //przerobiony na ATMega8, kwarc 11059200 i okrojony program #include <avr/io.h> #include <avr/interrupt.h> //! Pin mappings #define CHMAX 6 // maximum number of PWM channels #define PWMDEFAULT...

    Mikrokontrolery   27 Paź 2011 20:50 Odpowiedzi: 51    Wyświetleń: 6951
  • Linux, SIGSEGV - mam tylko fragment źródeł, jak diagnozować?

    Dodałem zapamiętywanie obsługi sygnałów przed wywołaniem Sequencera, i przywracanie oryginalnego stanu po jego zakończeniu - ale nadal jest SIGSEGV. [syntax=c]#include "epicsThread.h" #include "iocsh.h" #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 500 #endif #include "extcode.h" #include <signal.h> #include <stdio.h> #include <unistd.h>...

    Programowanie   18 Wrz 2020 19:32 Odpowiedzi: 11    Wyświetleń: 402
  • [STM32][C] - Odbieranie pakietów danych przez UART.

    1) Za czekający na flagę while() w przerwaniu grozi ci publiczny lincz i ukamienowanie 2) ten ISR moze i nic nie gubi ale nigdzie nie masz flagi 'odebrałem_paczke_i_czekam_na_jej_obslug... Pewnie dlatego cos ci sie gubi gdzies glebiej w kodzie. Powinienes miec conajmniej podwójne buforowanie, o ile nie zupelnie oddzielne FIFO. Najlepiej tagowane......

    Mikrokontrolery ARM   17 Sie 2014 17:45 Odpowiedzi: 6    Wyświetleń: 1749
  • [STM32F4][C] - Zamiana bajtów miejscami "w locie"

    Spróbowałem Twojego pomysłu z NOLOAD: [syntax=c] ._heap (NOLOAD): { . = ALIGN(4); __heap_start = .; PROVIDE(__heap_start = __heap_start); . += __heap_size; . = ALIGN(4); __heap_end = .; PROVIDE(__heap_end = __heap_end); } > sdram .frame (NOLOAD): { . = ALIGN(4); __frame_start = .; PROVIDE(__frame_start = __frame_start); . = ALIGN(4); *(.frame) . = ALIGN(4);...

    Mikrokontrolery ARM   18 Mar 2015 15:53 Odpowiedzi: 59    Wyświetleń: 3384
  • [C] Wskaźnik, przepisanie wartości adresu do zmiennej

    Np coś takiego [syntax=c]struct{ unsigned int ModTempSet; unsigned int ModTermAkt; unsigned int ModObn; unsigned int ModAdr; unsigned int FAKE; unsigned int PUMP; unsigned char End; }Mod03; char *StructPtr; volatile int a, b; StructPtr =(char*) &Mod03.ModTempSet; //adres poczatku aa= (int)StructPtr; StructPtr =(char*) &Mod03.End; //adres konca bb= (int)StructPtr;...

    Programowanie Początkujący   31 Gru 2021 12:03 Odpowiedzi: 6    Wyświetleń: 309
  • [ARM] [ARM][C] Jak unikać zmiennych globalnych w embedded C? Struktury i wskaźniki

    Witam. Parę pytań, przemyśleń, proszę o wypowiedzenie się. Temat dotyczy programowania embedded C głownie mikrokontrolerów raczej większych 32 bitowych. 1. Stosowanie wielu zmiennych globalnych jest bee Czy w świecie embedded bez dynamicznej alokacji pamięci da się inaczej? Zakładając, że mamy jakieś stałe duże struktury globalne (zawierające mnóstwo...

    Programowanie   15 Lis 2017 10:13 Odpowiedzi: 19    Wyświetleń: 921