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...
Dzień dobry! Poniżej kawałek kodu, trochę nie ociosany, co prawda, ale może rzuci jakieś światło na problem. [syntax=c] #include <stdio.h> #include <string.h> #include "stm32f4xx.h" #include "FreeRTOS.h" #include "task.h" #include "timers.h" #include "semphr.h" #include "misc.h" /* moje */ #include "sine.h" #include "timer.h" #include "leds.h"...
volatile ma wiele zastosowań, ten kwantyfikator jest traktowany jako side effect przez co kompilator nie może kawałka kodu w pełni zoptymalizować (np zapisywanie danych w pętli for nie może być zastąpione przez memcpy) Użycie zmiennej const volatile nie ma sensu, const volatile może nieść tylko informację dla programisty, że w danym kawałku kodu, nie...
Czy jest gdzies opis formatu pliku REL ? No właśnie nie widzę opisu. *.rel jest skompilowanym plikiem asemblera do linkowania. Można uprościć sobie życie i zapisywać obraz w postaci pliku *.s i kazać kompilować do *.rel samemu SDCC. W ten sposób strzeżemy się przed ewentualną zmianą struktury pliku *.rel spowodowaną rozwojem samego SDCC. Może takie...
Jak wiesz co robisz to możesz użyć rzutowania na typ taki jaki zadeklarowales aby pozbyć sie warninga. W C++ używa się const_cast do usuwania modyfikatorów const i volatile. W przypadku "const" i kodu na którym panujesz w całości nie ma praktycznie NIGDY potrzeby usuwania tego atrybutu - wystarczy poprawić kod, funkcje, prototypy, ... - co tam potrzeba....
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...
Zmiana zawartości rejestru AHBCFG1 nic nie daje. To po pierwsze. Po drugie dużo nieścisłości jest związanych z tym rejestrem. User Manual mówi że priorytety ustawia się wpisując wartości od 1 do 5, natomiast na przykład tutaj: http://www.embeddedrelated.com/groups/lp... (końcówka drugiego postu) Wpisują wartości od 0 do 4. Dodatkowo...
Witam, Mógł by ktoś sprawdzić czy mój kod jest prawidłowy? Ponieważ nie mogę odebrać danych z Esp przez protokół UART. * * uart.c * * Created on: 11 lut 2021 * Author: admin */ // uart.c #include "prj.h" volatile char uart_buf[MAX_UART_BUF_SIZE]; volatile char uart_rsp[MAX_UART_BUF_SIZE]; volatile int uart_buf_idx =0;...
Co do memcmp - spójrz na prototyp tej funkcji - nie zawiera volatile, prawda? A więc w sposób niejawny zrzucasz modyfikator, stąd też masz ostrzeżenie. Prawda, to wiem, ale jak to obejść? Nie chcę buforować zawartości tej tablicy do tymczasowej tablicy, nie volatile. Swoją drogą, jeśli ta tablica jest modyfikowana w ISR, które może być wywołane w czasie...
rdtsc zwraca mi często wartości ujemne, no chyba że robie coś nie tak. Mam celka 466. Tak wygląda program: #include <dos.h> #include <stdio.h> #include <mem.h> typedef struct { unsigned lo; unsigned hi; }stim; int main(void) { volatile stim t_beg,t_end; volatile unsigned ul,uh,i; volatile unsigned long lbeg,lend,ldif;...
Witam Siedzę już drugą noc nad samymi timerami, a termin końcowy oddania projektu się zbliża. Problem wygląda tak, że gdy załączę zezwolenie na przerwanie od timera2 zawiesza się cały program (kratki na wyświetlaczu). Potrzebuje drugiego timera do obliczeń a Timer1 generuje przerwanie co 0,5s w trybie CTC. Kwarc 8MHz. [syntax=cpp] #include "board.h"...
Czyli rozumiem iż mam podmienić te dwie funkcję w "1wire_basic_UART.c" - a co z resztą zaczynając od main.c czyli: [syntax=c] #include <avr/io.h> #include <util/delay.h> #include "LCD.H" #include "menu.h" #include <avr/interrupt.h> #include "buttons.h" #include <stdio.h> #include <string.h> #include <util/atomic.h>...
Napisałem program, którego zadaniem jest przesuwanie się na tle obiektu / obrazka. Stworzyłem w pamięci dodatkowy bufor, który jest za każdym przebiegiem rysowany jest czarnym kolorem (tło), następnie rysowany jest na nim odpowiednio przesunięty obrazek. Po czym w ten sposób wypełniony bufor kopiowany jest pod adres bufora wyświetlacza LCD. Efektem...
(at)krzbor - to co piszesz to chyba nie do końca to czego szukam, łatwiej będzie wytłumaczyć na konkretnym przykładzie. Sytuacja jak na szkicu: https://obrazki.elektroda.pl/2660360400_... Uruchomiłem w garażu 1 ESP (nazwijmy je 1 - główne). Przez wifi komunikuje sie z routerem, dalej z Blynkiem, steruje z Blynka urzadzeniami, dostaje...
Hej, na 'dzień dobry' : eclipse linaro syscalls od Freddiego linker skrypt -od Freddiego, zmodyfikowany lekko pod c8: __main_stack_size = 2048; __process_stack_size = 2048; rom (rx): org = 0x08000000, len = 64k ram (rwx): org = 0x20000000, len = 20k Makefile -od Freddiego (niewielkie poprawki) teraz kod: INFO("NOT ABLE TO ADD ANOTHER MESSAGE -MALLOC...
Poprawiłem. Spróbuj wersję z __memx "cast from pointer to integer of different size" - zignoruj go.
Witam, Mam potencjalnie banalny problem z odczytem stringa z przerwania UART w pętli głównej programu. Kiedy przesyłam przez UART ciąg znaków są one odbierane, jednak przy próbie wyświetlenia ich na wyświetlaczu którego obsługa znajduje się w pętli głównej programu zamiast przesłanego stringu widzę losowe śmieci z pamięci (np. fragmenty danych poprzednio...
Witajcie, Wysyłam sobie w moim małym projekcie, 4*16 bitów przez SPI, w użyciem DMA. Funkcja inicjująca wysyłanie wygląda tak [syntax=c] void display_set_raster_line(uint16_t * raster_line) { // wait for transfer complete if (SPI_FIRST_TRANSFER_DONE) { while( DMA1->ISR & DMA1_FLAG_TC3 == RESET) { } } // copy new raster to current raster line...
Procesor to atmega32 - 32kB flash, 2kB sram. Sprawdziłem coś jeszcze. mianowicie wykomentowałem sporą część programu i okazało się że problem pozostał. Część napisów jest wyświetlana poprawnie, a część jako krzaki. Okazało się też, że jeżeli dopiszę nowe napisy pod tymi już istniejącymi to na pewno będą źle wyświetlone. A jeżeli jakiś nowy napis dorzucę...
witam, próbuje przesłać tym kodem z atmega 8 cyfrę 1 [syntax=c]#include <avr/io.h> #include <stdlib.h> #include <stdio.h> #include <util/crc16.h> #include <string.h> #include <util/delay.h> #define BUF_MAX char bufor[BUF_MAX]; void UART_master_init() { UCSRC=_BV(URSEL) | _BV(UPM1) | _BV(UCSZ1) | _BV(UCSZ0); UBRRL=51;...
Warto jednak zdawać sobię sprawę jakie są koszty użycia tej klasy: No dobra, ale wiesz że przykład którym się posłużyłeś nie ma identycznej funkcjonalności, no nie? <: Nie żebym był za używaniem std::string na mikrokontrolerach w każdej sytuacji, no ale jednak wypadałoby zaznaczyć, że ta klasa ma sporo większe możliwości niż goły wskaźnik. Bo gdyby...
Witam. Buduje sterownik do bramy wjazdowej. Co kilka godzin "wariuje" atmega8. Przestaje działać przerwanie INT1, a PWM (OC2) ma jakąś dziwną wartość. Główna pętla programu działa. Wymieniałem atmege na inną sztuką, używałem wewnętrznego oscylatora, włączyłem BOD i watchdog. Nic nie pomogło. W załączniku schemat i pcb bez wartości elementów postaram...
Edit: DMA nie działało bowłączałem DMA2 a nie DMA1. Napiszę jak dalej pójdzie :] Cześć, mam pewne problemy z I2C, bazowałem na zmodyfikowanym kodzie od ST (jak mnie pamięć nie myli) najpierw używałem samych przerwań na najwyższym priorytecie jak ST przykazało, niestety od czasu do czasu zdarzało się że RTOS wyłączał wszystkie przerwania i przy odbiorze...
Witam, postanowiłem przenieść swój układ z atmegi na atXmegę. Do tej pory do komunikacji urządzeń po serialu używałem biblioteki SoftwareSerial (Arduino) bo układ miał tylko 1 fizyczny serial. Teraz w Xmedze mam ich 5 :) Wgrałem [url=ten]http://mikrokontrolery.blogspot... programik i wszystko...
Przerwanie nie modyfikuje SP (z punktu widzenia przerwanego kodu). Wartość SP po powrocie z przerwania jest taka sama, jak przed wywołaniem. I tu właśnie problem, bo też tak myślałem, dlatego pisałem wcześniej że błędu w logice nie ma. Mój kod nie jest błędem. Dodałem brakujące CLI i kod od godziny chodzi bez zarzutów. Spójrz na to: zapamiętaj SREG...
Witam Od dłuższego czasu walczę z obsługą wyświetlacza jak sądzę opartego na ssd1289 ( co prawda device code odczytywany z rejestru 0x0000 pokazuje 0x0020 ). Wyświetlacz inicjalizacje się poprawnie mogę wyrysować wszystko co chcę ale problem pojawia się w odświeżaniu obrazu. Sądząc po ustawieniu rejestru R25h jest ustawiony na 65Hz/ w nocie nie zauważyłem...
Nie miałem za bardzo czasu ale wracam do nierozwiązanego problemu. http://obrazki.elektroda.pl/7699775600_1... http://obrazki.elektroda.pl/3826926900_1... Tak wyglądają screeny po wywołaniu programu CRCGEN. Pliki wgrane programatorem działają poprawnie a przez bootloader tylko ten krótki (choć po przemieleniu ma także...
Witam, Chciałbym narysować przebieg sygnału mierzonego przez przetwornik A/C mikrokontrolera. Niestety za nic w świecie nie potrafię tego zrobić. [syntax=c]#define F_CPU 16000000UL #include <avr/io.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <stdlib.h> #include <avr/interrupt.h> #include "pcd8544.h" //...
Zrobilem faktycznie identyczny test pod zwyklym C (armcc 5.04) i jak na zlosc nie udaje mi sie powtorzyc zjawiska ktore spotkalem w prawie gotowym juz projekcie. A tu faktycznie kompilator uzywa memcpy. Czemu nie robił tego w tamtym projekcie - nie mam pojęcia. No i mniej więcej coś się okazuje: ;;;525 //conf_copy(&confCopy,(Conf_glob...
Witam Kolegów Przepraszam, że przez kilka dni nie zabierałem głosu w temacie, ale bylo to niezależne ode mnie (awaria neta). A więc tak: - Po pierwsze chcę serdecznie podziękować Koledze excray - wdrożyłem przytoczone przez Ciebie rozwiązanie i jestem zachwycony. Oczywiście przeniosłem całe menu do pamięci programu. Stąd zmianie uległy procedury obsługi...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
A jaki masz ten chip dokładnie? Jaki ten ekran - R czy C? Kupiłem dokładnie to https://elty.pl/pl/p/Wyswietlacz-LCD-4%2... Panel musi być rezystancyjny skoro FT800 a nie FT801. Układ identyfikuje się jako 0800 0100 w rejestrze 0x0C0000 (nie miałem w #define, 4 bajtowy rejestr identyfikujący...
http://obrazki.elektroda.pl/4208419300_1... Moduły Wi-Fi Atmel WINC1500 dedykowane dla aplikacji IoT cz. II. W poprzednim odcinku Czujnik temperatury wysyłający dane z wykorzystaniem WiFi. Konfigurację sprzętową pozostawiamy bez zmian, podłączony pozostaje moduł WINC1500 oraz I/O1. http://obrazki.elektroda.pl/8282395400_1...
Witam! Wykonałem WebSerwer ze strony http://www.ulrichradig.de/home/index.php... Docelowo ma służyć do pomiaru temperatury i zapisywaniu wyników na serwerze. Udało mi się uruchomić moduł, zmierzyć temperaturę i wysłać GET z trzema wpisanymi na sztywno parametrami na inny serwer (cba.pl). Ale nie mogę sobie poradzić z wysłaniem GET z odczytanymi...
memcpy float volatile przerwać typedef volatile
ricoh reset bębna wyświetlacz radia alpine automat nabijać
Canon Pixma kod 5700 – reset, błąd ASF, czyszczenie i naprawa podajnika papieru Wymiary pasków gumowych do Technics RS-TR474