Implementowałem prostą sieć neuronową na DSP Texasa, miało się liczyć w czasie rzeczywistym. Sieć była wygenerowana w C przez STATISTICA Sieci Neuronowe. Po wrzuceniu sieci do procesora, okazało się, że liczy się coś koło 6 sekund. Ponieważ procesor był stałoprzecinkowy, a sieć zmienno (nie ja wymyśliłem taką konfigurację), problem rozwiązałem przez...
jak najprościej wykonać obliczenie zmiennoprzecinkowe (z dzieleniem) na liczbach uint8_t, tak aby wynikiem także była liczba uint8_t? Wcale nie musisz wykonywać dzielenia na zmiennoprzecinkowych :wink: wystarczy że zrobisz np: tak: uint8_t a; uint16_t b; b=(20*10)/3; b*=10; a = b/10; Zasada jest taka żeby "przesunąć" przecinek z ilorazu w prawo...
Może pozbądź się tych zmiennoprzecinkowych operacji. Takie rzeczy można zarobić stałoprzecinkowo a różnica w prędkość i rozmiarze kodu jest kosmiczna. To bardzo proste: 1) Zakładamy 16 bitową rozdzielczość (można 32 jak się chce) 2) Przlieczamy współczynnik, o tak: 65536*0.351=23003 3) deklarujemy: unsigned short a; //16 bitowa bez znaku unsigned long...
Nie podoba mi się bezpośrednie połączenie wejścia ADC do napięcia mierzonego. Mógłbyś zastosować tam jakiś prosty filtr RC. A co, jeżeli jest tam sygnał prostokątny albo podobny? Będziesz miał wyniki pomiarów raz 0, raz 100%, a czasami jakąś przypadkową wartość jeżeli pomiar wypada w momencie narastania lub opadania zbocza. Czas próbkowania przetwornika...
Nie wiem czy to będzie istotne, ale w języku C/C++ istotnym na pewno jest przy jakimkolwiek dzieleniu stosować zapis , dla przykładu : [syntax=c]dodaj=modul_depth/8192.0[/synt... Wtedy kompilator wie że to co dzieli dzieli w sposób dedykowany liczbom zmiennoprzecinkowym, w innym przypadku jako wynik wyjdzie tylko część całkowita. Ale to też zależy od...
Do prostych operacji, zwłaszcza mnożenia, dzielenia, dodawania i odejmowania polecałbym jakiś format stałoprzecinkowy, nowa avr-libc ma może i szybkie, ale za to strasznie "rozdęte" procedury obliczeń zmiennoprzecinkowych. Ich rozmiar jest wręcz paskudny. Przykład, kod z mnożeniem, dzieleniem, dodawaniem i odejmowaniem zmiennoprzecinkowym w poprzedniej...
temat wałkowany już kilka krotnie. funkcje delay mają argument typu float jeśli podajesz zmienna jako argument do dodajesz również operacje zmiennoprzecinkowe na tej funkcji które .... dają efekt jaki uzyskałeś
http://obrazki.elektroda.pl/2991403700_1... Firma Atmel wypuściła na rynek nową serię mikrokontrolerów AVR - XMEGA® E-Series, przeznaczoną do zastosowań w urządzeniach kompaktowych z niewielką przestrzenią. Nowe MCU cechuje oszczędność energetyczna połączona z kombinacją pamięci (Flash, EEPROM, SRAM) oraz niskim prądem uśpienia...
Witam, Próbuję zrobić porównanie zawartości tabeli z tekstem w tym przypadku to litera "E". Nie wiem gdzie popełniam błąd. [syntax=c] uint8_t pozMe = 0; uint8_t maxMe = 4; const char * Menu[][4] = { {{"Ust."} ,{"a"} ,{"A"} ,{"?"}}, {{"Ust."} ,{"b"} ,{"B"} ,{"?"}}, {{"Zmien"} ,{"c"} ,{"C"} ,{"?"}}, {{"Exit"} ,{"e"} ,{"E"} ,{"?"}} }; void ..... // inna...
Witam Mam następujący problem, działający program obsługi jest taki: ISR(TIMER1_OVF_vect){ UDR0= Buff[rd]; rd = (rd + 1) % 256; UDR0= Buff[rd]; rd = (rd + 1) % 256; } program działa, ale jest za wolny, te kilka instrukcji kompilator zmienia na 122 linie w asm. Najlepiej byłoby napisać tę funkcję w asemblerze, niestety do tej pory pisaałem tylko w C....
Kod pochodzi z EP 4/2005 Problem polega na zmianie wyświetlanej wartości tylko z 1 na 2 przy kręceniu w jedną stronę. $regfile = "m8def.dat" $crystal = 16000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Portd = Input Dim Licz As Byte Dim Stan_enk...
Jest jakiś procesor serii AVR który ma te trzy rzeczy JEDNOCZEŚNIE dostępne? Bo może ślepy jestem, ale nie jestem w stanie znaleźc takiego który by akurat tych funkcji nie miał na tych samych pinach...
Witam projektuję układ który będzie odczytywać wartość napięcia na ADC0 (PC0) i zapisuje to jako liczbę dziesiętną w jakiejś zmiennej. Wartość przetwornika w formie binarnej zapisana jest w 16 bitowym rejestrze ADCW a właściwie w 2 rejestrach 8 bitowych. Wartość jest zapisana w 10 młodszych bitach 16 bitowego rejestru ADCW. Jak zapisać wartość binarną...
Witam serdecznie. Po przeszukaniu wątków nie napotkałem na rozwiązanie problemu o podobnej treści. Mianowicie dotychczas korzystałem z eepromu w ten sposób: Piszę językiem C: [syntax=c] extern EEMEM uint16_t eeprom_values[200]; EEMEM uint16_t eeprom_values[200] = {0,0}; //- zapis to zmienna = 85; eeprom_write_word(&eeprom_values[10], zmienna); //odczyt...
Witam. Mam problem z przesunięciem bitowym. Mam taki kod: long int wire_temp(void) { long int zmienna_w; int temp1, temp2; temp1 = 0xCBCF; temp2 = 0xEBAA; zmienna_w = ((temp2 << 16) | temp1); return zmienna_w; } i wynik działania jest błędny. zamiast 0xEBAACBCF jest 0xFFFFCBCF. Widać, że dwa najstarsze bajty się...
Przepisałem kod z książki tmf'a, ze strony 231 dotyczący wyświetlania multipleksowego. Z początku miałem kłopot ze skompilowaniem przykładu w ATMEL STUDIO bo kompilator sygnalizował błąd Error 1 variable 'DIGITS' must be const in order to be put into read-only section by means of '__attribute__((progmem))' Rozumiem to w ten sposób, że zmienne DIGITS...
Witam Programuje 2x ADC które szczytuje mi wartości z potencjometrów podłączonych przez dzielnik napięcia do portów PC0 PC1, za pomocą przerwania ADCSRA ( ADIE -Kiedy ten bit jest ustawiony wraz z I-bitem w rejestrze SREG wtedy aktywne jest przerwanie od zakończenia konwersji.) Robię tak za pomocą przerwania a nie timera bo nie chce aby mi ciągle czytał...
Szukam już trochę czasu i nie mogę znaleźć, czy są jakieś atmegi z tej nowszej serii z obsługą zegara do 20MHz z możliwością podłączenia zewnętrznego SRAM? Interesowałyby mnie, o ile w ogóle istnieją, modele do montażu SMD czyli tam tqfp jakieś najlepiej, z co najmniej 16KB flasha. Z góry dziękuję za wszelkie wskazania.
Mam ATMega8 i podłączony do niego wyświetlacz LCD (8 znaków, 1 linia). Po wpisaniu poniżeszgo programu nie ma żadnej konuikacji z LCD. Dane do LCD wysyłane są po 4 bity. Używam kompilatora winavr. Gdzie zrobiłem błąd?? plik lcd01.h #ifndef LCD_H #define LCD_H #include <avr/io.h> #include <stdlib.h> #include "avrlibdefs.h" #include...
Witam W pierwszej kolejności proszę o trochę wyrozumiałości, wszystko co wiem o elektronice nauczyłem się z internetu i dzięki Wam ;) Nauczyłem się już pisać wsady w Bascom, i zrobiłem kilka projektów na atmega, mój nowy projekt wykorzystuje kilka mikrokontrolerow. Każdy z nich odpowiada za inne czynności, opracowałem już sposób komunikacji miedzy nimi...
Witam, trochę się gubię w nazewnictwie µC ATMega - prosiłbym o zweryfikowanie, czy dobrze się domyślam i uzupełnienie tego, co nie wiem. Przykład: ATMega 16L-8PU 16 - ilość pamięci na program w kB (kilobajtach. A może bitach?) L - coś, przez co µC jest gorszy? 8 - taktowanie procesora w MHz P - obudowa DIP (A dla SMD) U - ? na kości jest trójkącik...
Witam forumowiczów. Od paru godzin męczę się z pewnym problemem. Nie rozumiem dlaczego Atmega 32A błędnie liczy mnożenie trzech zmiennych. Utworzyłem zmienną "wynik" wielkości 4 bajtów (zakres liczb 0 do 4294967295) utworzyłem zmienną "a" wielkości 2 bajtów (zakres liczb 0 do 65535) utworzyłem zmienną "b" wielkości 1 bajta (zakres liczb 0 do 255) utworzyłem...
Bardzo Was proszę o pomoc bo nie mogę sobie dać rady. Uruchamiam przetwornik ADC w ATMega 8. Mam podłączony wyświetlacza LCD 2x16 do prezentacji wyników. Jako źródło napięcia stosuję napięcie zasilające 5V. I nie mogę uzyskać stabilnych wskazań. Po konwersji cały czas wynik jest inny. Jako płytkę testową stosuję AVT948 bo miałem pod ręką tyle tylko...
https://obrazki.elektroda.pl/1498369200_... Witam kolegów. Chciałbym się pochwalić płytką jaką zaprojektowałem i wykonałem dla uC ATxmega serii A3U (64A3U/128A3U/192A3U/256A3U). Moją motywacją było stworzenie płytki dokładniej takiej jaką chce, i prawie mi to wyszło. Każda dostępna jakoś mi nie leżała. Płytka ma posłużyć jako baza...
Wielokanałowy system akwizycji danych pomiarowych, hmm... Wyobraźmy sobie coś takiego. Mikrokotroler AVR z ośmioma liniami ADC (z tego co patrzyłem po notach katalogowych - najczęściej realizowane jako jeden multipleksowany przetwornik ADC) mierzy napięcia analogowe i zapisuje wyniki w pamięci lub przesyła je dalej, do późniejszej obróbki. Nie znam...
Witam Glowie sie nad takim oto problemem. Do dyspozycji mam ATmega8. Co 48 taktow zegara podaje na 16 pinow 2 bajty danych. W ciagu tych 48 taktow procesor musi zrobic rzecz nastepujaca: co 6 taktow wystawic na 2 z gory zadane piny 2 kolejne bity informacji. Po 6 taktach kolejne 2 bity az przejdzie 2 bajty i zaczyna od poczatku. Np: Podaje rownolegle...
Czy można jakoś wprowadzić parametr do strtod aby zaczynał z innego miejsca niż początek zmiennej? Użyj sscanf i odpowiedniego ciągu formatującego. No tylko, że domyślnie sscanf nie zawiera obsługi formatów zmiennoprzecinkowych. A włączenie jej "nieco" zwiększy rozmiar kodu wynikowego.
Sygnał o częstotliwości 10 kHz. Częstotliwość ADC dla 10 Bitów to 100kHz i to dla jednego kanału. Dla 8 kanałów wynosi 100kHz/8 . Czyli masz 10 pomiarów na okres dla pojedyńczego kanału. Względna dokładność. Do takich pomiarów to według mnie lepiej użyć C niż Bascoma. I broń Boże nie stosuj typów zmiennoprzecinkowych. Co najwyżej 32bitowy typ stałoprzecinkowy.
Używam wersji 20060421, o nowszej nawet nie słyszałem. może to problem z jakimiś funkcjami zmiennoprzecinkowymi. Czytałem gdzieś, ze w Makefile są opcje kompilacji z tym związane, ale niestety nie bardzo się w nich łapię. Hm.. A linkujesz bibliotekę libm? (-lm w opcjach linkera.. Nie doszukałem się tego w tym co wcześniej wkleiłeś..) Ogólnie używasz...
Programuję procesor Atmega 128 w gcc. Zmontowany układ ma mnożyć zmierzone napięcie przez przekładnię. Przekładnię zmieniam od 1 do 10 z krokiem 0.1. Problem jest w tym że w procedurze zmiany przekładni dodając do przekładni 0.1 lub odejmują na wyświetlaczu wyświetlają się wartości np. 9.3 i 9.5 a 9.4 nie idzie wyświetlić. Dodam że jeśli na stałe w...
Mnożąc zmienną typu WORD przez stałą CONST wychodzi niedokładny wynik. Np: WORD = 200 x CONST = 0.0025 = SINGLE = 0.499999933. Dokładność obliczeń zmiennoprzecinkowych jest kwestią długości (i formy) reprezentacji liczb zmiennoprzecinkowych. Z oczywistych względów w ośmiobitowych procesorach z małą pamięcią reprezentacja FP nie może być zbyt długa...
Ta linia powinna być w przerwaniu Wtedy będzie miał błędy odczytu termometru gdy DS18B20_STOPINTERRUPTONREAD != 1 a gdy DS18B20_STOPINTERRUPTONREAD == 1 to multipleksowanie będzie działać źle. Ten kod jest słaby. Z najważniejszych błędów to, nie sprawdza crc, zawiesza na długo przerwania a wystarczy na czas transmisji bitu gdy wystawiane jest 0 na...
Witam Nigdy nie działałem za zmiennym przecinku, ale teraz muszę policzyć nie za ciekawy wzór i muszę to zrobić na typie Double Mam funkcję double fp_calc(void) { double fp; double HUMI=55; double TEMP=293.15; fp=((272.186*log(HUMI/100...
Witam, Jeśli nie musisz nie korzystaj ze zmiennych typu single, lepiej przeskalować int'a kilka razy (np zamiast 1,232 robisz 1232 a przy wyświetlaniu dodajesz przecinek) operacje na liczbach zmiennoprzecinkowych zjadają spora flash i czasu procesora. Pozdrawiam, Marcin
1. Napisz program od nowa bez wywołań rekurencyjnych 2. Napisz program od nowa bez wykorzystania liczb zmiennoprzecinkowych 3. Napisz program od nowa bez wykorzystania funkcji sprintf 4. Co to jest LCD_CLEAR? Makro czy funkcja? Jeśli funkcja to czegoś brakuje przy jej wywołaniach.
Po co typ double? Tu w ogóle nie potrzeba liczb zmiennoprzecinkowych, wystarczy int ściślej int16_t. Wydaje mi się,ze poprawienie tak prostego kodu nie ma sensu, szybciej i lepiej napisać to od nowa. Nie wiem jaka precyzja jest potrzebna, jaki zakres temperatur, może lepiej zrobić to na DS18B20?
Wykluczone! _delay_ms jest makrem które działa tylko na wartościach stałych, użycie zmiennej spowoduje wkompilowanie biblioteki liczb zmiennoprzecinkowych a same opóźnienie będzie się miało nijak do tego oczekiwanego. Time może być stałą preprocesora (#define), nigdy zmienną. Dla zmiennej lepiej napisać osobną funkcję, która w pętli wykonuje _delay_ms(1)...
Efekt byłby jeszcze lepszy, gdybyś dodał guziki do ręcznego obracania bryłą Istnieje możliwość ręcznego obracania bryłą względem dowolnej osi w czasie rzeczywistym. Działa też skalowanie i przesunięcia. Można sterować z terminala lub przyciskami. Program to umożliwia choć nie widać tego na nagraniu. Działa jakby w trybie auto dla celów pokazowych....
Zakup książek nie gwarantuje sukcesu jeśli się ich nie czyta. Osobiście przyjmę każdą książkę na temat techniki i chętnie przeczytam... Po wydaniu "takiej" forsy na lekturę powinieneś wiedzieć, że należy unikać w ośmiobitowych mikrokontorlerach typu Float/Single bo to wymaga dołączenia do kodu biblioteki do obsługi zmiennoprzecinkowych...a to wymaga...
Jeśli chodzi o tego typu rzeczy to polecam interpolację Newtona. Całkiem sprawny i dość dokładny algorytm interpolacji wielomianowej. Sam w ten sposób zaimplementowałem funkcje cyklometryczne (popularnie zwane arcusami). Cóż, jeśli chcesz to robić w BASCOMie to powodzenia, polecam C, jak już. W asemblerze z kolei byś się musiał za dużo męczyć. Poza...
W czym programować najlepiej w asemblerze, jeżeli masz zamiar robić w przyszłości poważne projekty! To chyba jakieś żarty :D Kto poważny dzisiaj poważne projekty pisze w asemblerze? Kto się w takim olbrzymim kodzie połapie? Kto po przerwie będzie wiedział "co robił ten fragmencik kodu"? Kto w prosty sposób przeprowadzi obliczenia zmiennoprzecinkowe...
Ten Twój program to, niestety, brak zrozumienia dla sprawy. W pętli Do Loop Until zbierasz 64 odczyty i je uśredniasz, ale tego wyniku w ogóle nie używasz... Zamiast tego robisz jeszcze raz odczyt zamazując poprzedni wynik uśredniania. Gdzie tu sens? :D Spokojnie możnaby też zrezygnować z użycia zmiennoprzecinkowej Single i program byłby mniejszy -...
Jest to "poprawne rozwiązanie". Poprawne w cudzysłowie ponieważ jak widzę typ SINGLE w Bascomie to aż mnie coś bierze :) Ten sam program napisany bez użycia typu zmiennoprzecinkowego (wykorzystując tylko typ całkowity) wykona się dużo, dużo... szybciej i zajmie mniej pamięci programu i danych.
NO jak musisz wykonać jakieś modulo, to musisz liczbę zmiennoprzecinkową zrzutować na typ stałoprzecinkowy. Bo nawet w matematyce modulo jest niezabardzo zdefiniowane dla liczb innych niż całkowite ;)
Powinien ale cls daj przed petla a w niej zastosuj locate. Po za tym nie operuj warunkami na liczbach zmiennoprzecinkowych. Przelicz sobie jaka wartosc ma zmienna Wart_ac przy napieciu 1V i do niej napisz warunek.
Wydaje mi się, że potrzebujesz dolinkować obsługę liczb zmiennoprzecinkowych w gcc/avr-libc. Niestety nie pamiętam teraz dokładnie jak to zrobić, a chwilowo nie mam na komputerze środowiska do sprawdzenia tego..
Pisząc w C, unikając liczb zmiennoprzecinkowych, zakładając programową obsługę 1-wire, sprzętową PWM, oraz bluetooth (UART) powinno się spokojnie zmieścić. Pozdrawiam
Powiem tak, ze jeśli działasz swobodnie w BASCOM i umiesz korzystać z not katalogowych procesorów, to przesiadka na C zajmie Ci z dobrą książką (osobiście polecam I. książkę Mirka Kardasia - sam się na niej uczyłem) 2-4 tygodni. A co do pisania programów w C na AVR i PC to powiedzmy sobie szczerze, że jest to jeden i ten sam język - różni się tylko...
Wbudowana biblioteka liczb zmiennoprzecinkowych może zajmować swoje. Najprostszym rozwiązaniem jest zamienić zmienne na stałoprzecinkowe tzn int oraz używanie pewnego czynnika: np liczbę 1,5 zapisywać jako 1500, 0,333 jako 333 itd: ułamek razy 1000 zaokrąglony do liczby całkowitej. Zamiast 1000 można dać coś innego, można też zamiast int dać long long...
do opcji linkera nalezy dodac -lm (myslnik el em) - dolaczy to do linkowania biblioteke libm.a, ktora zawiera definicje funkcji zmiennoprzecinkowych matematycznych z naglowka math.h niemniej jednak nie wiem czemu dolaczasz wprost biblioteki libc i libgcc - zapewne przez to masz problem (też) - usun je z makefile. 4\/3!!
wiem wiem, że tak to się robi mam to napisane w programie dokładniej ten fragment jest za to odpowiedzialny: ................. Tyle, że czujnik ds18b20 nie podaje temperatury tak po prostu do procesora np.: 20 stopni Celsjusza tylko trzeba to troszkę przekonwertować za co odpowiedzialna jest ta część programu: fajnie miło i przyjemnie jeśli temperatury...
Witam, Zrobiłem VI w Labview do komunikacji z Atmegą32 przez RS-232. Atmega wykonuję obliczenia zmiennoprzecinkowe i wysyła w czterech bajtach dane typu float. Labview zaś po otrzymaniu czterobajtowych danych typy string, powinno konwertować je na dane float przy pomocy funkcji Scan from string. Niestety, ale nie wiem czemu labview widzi gdzieś problem...
Zerknij do załącznika. Jest tam procedura obsługi ADC dająca na wyjściu wartość napięcia ze czterema miejscami po przecinku. Oczywiście BEZ UŻYCIA LICZB ZMIENNOPRZECINKOWYCH... Nie chce mi się teraz sprawdzać z ktorego wejścia korzysta, ale na pewno mogę powiedzieć, że źródłem referencyjnym jest napięcie zasilania procka. Dokładna wartość napięcia podawana...
Dzięki za odzew Szybkość, szybkość, szybkość - jak wspomniałem program wykonuje tylko przeliczanie liczb binarnych 8-bitowych (x8 liczb) (nawet nie zmiennoprzecinkowych)(statystycznie rzecz biorąc najwięcej jest operacji typu przesunięcie bitowe) więc interesuje mnie coś co będzie miało zegar ustawiony na MAX (bo podejrzewam, że wszystkie procesory...
Witam, Mam taki problem. Zastanawia mnie, dlaczego ten fragment kodu nie dziala poprawnie: unsigned char Line[17]; sprintf(Line, "%f", 234.0/212.0); LCD_Write(Line); Zwykle dzielenie floatow i wyswielenie ich na LCD [HD44780], za to wynik dziwny: na wyswietlaczu dostaje tylko jeden znak: '?' Pisze to pod ATMega8, wyswietlacz...
Mam napisany moduł operacji na czasie, ale brakuje mi w nim funkcji obliczenia nr tygodnia w standardzie ISO. Zaproponował być kod w c dla AVR GCC z uwzględnieniem małych ilości RAM na uC Atiny, ATmega oraz oparty na arytmetyce liczb całkowitych (zmienno przecinkowe liczby są nie efektywne na AVR i większości uC) ? Obliczenie numeru tygodnia w standardzie...
Ja napisałem Sobie taką implementację vfprintf w wersji full i tiny przełączane flagą, gdzie pierwsza ma wszystko według tego opisu: [url=http://www.cplusplus.com/reference/... oprócz zmiennoprzecinkowych reprezentacji. Reszta sprintf, snprintf, fprintf to pochodne tej funkcji. Wersja tiny 500 bajtów z opcjami left-pads i...
Myślę, że nie. Wiem, że pozbycie się liczb zmiennoprzecinkowych przyspieszyło by obliczenia i myślałem wstępnie o tym. Odstraszała mnie zmiennoprzecinkowa trygonometria i obawa przed "pokaleczeniem" modeli przy zbyt niskiej rozdzielczości liczb. Powinienem gdzieś pomiędzy normalizacją (wstępnym skalowaniem i centrowaniem) a renderowaniem zastosować...
Cuda się dzieją i to niesamowite : Watt.c #define F_CPU 1000000UL // 1 MHz #include <avr/delay.h> #include <avr/signal.h> #include <avr/interrupt.h> #include <avr/io.h> #include <inttypes.h> #include <stdlib.h> #include <math.h> #include "Watt.h" #define REP_ADC 64 /*first array element is leftmost...
Witam, mam problem tej natury że chciałbym wyświetlić liczbę zmiennoprzecinkową, lecz standardowo wykorzystywana funkcja sprintf w AVR-libc nie obsługuje typów zmiennoprzecinkowych i na wyświetlaczu dostaję znak "?". Problem w tym że nie umiem nigdzie znaleźć informacji jaka biblioteka pozwala na wyświetlanie takich liczb za pomocą funkcji sprintf.
Bardzo dziękuje za tak pozytywne opinie ! :) Niestety moim językiem programowania jest mało finezyjny BASCOM, ale to dlatego że nie lubię dużo myśleć i można łatwo uzyskać zamierzony efekt-ale to kwestia sporna. Dzięki za polecenie gotowych płytek pokrytych warstwa światłoczuła,ale to jednak dla mnie nadal za droga metoda :P W któreś wakacje próbowałem...
Witam, napotkałem w swoim projekcie na dziwny wręcz dla mnie nie wytłumaczalny problem dotyczący mnożenia liczb zmiennoprzecinkowych. Poniżej kod który generuje problem: [syntax=c]float error = ( tutaj podaję różne wielkości z przedziału -100 do +100 ) float dana = error * 4.0f; [/syntax] Następnie zmienną dana wyrzucam sobie rs232 na komputer i otrzymuję...
Witam Ja Odczyt temperatury zrobił bym tak: .... 1wwrite &HCC 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Minus = Msb.7 Tempa = Msb * 256 Tempa = Tempa + Lsb If Minus = 1 Then Tempa = Not Tempa Tempa = Tempa + 1 End If Tempa = Tempa * 10 'temperatura *10 Tempa = Tempa / 16 Jest to fragment kodu pozwalający na odczyt ujemnych...
Faktycznie zapomniałem dodać, że pracuję na ATMega 16, piszę w asemblerze. Zapoznam sie z problemem i na pewno wrócę z pytaniami, chyba, że ktoś podrzuci inny (bardziej przyswajalny) problem :) Czy "to" można zrobić w ATMegach, bo gdzieś obiło mi sie o uszy, że l. zmiennoprzecinkowe, to raczej trudno zaimplementować. Dzieki. We'll be in touch.
Cześć mam taki kod który ma na lcd wyświetlać napięcie ale nie bazuje on na liczbach zmiennoprzecinkowych co jest żle bo lcd pokazuje U=0,59142V zamiast 2,56 około [syntax=c] //Załączenie pliku nagłówkowego #include"LCD/LCD.h" uint16_t funkcja(void); int main(void) { uint16_t a; uint16_t b; uint16_t zm; //Wywołanie funkcji inicjalizacyjnej initialization();...
Wzory masz na stronie 243 dokumentacji : ADC= Vin*1024 / Vref Przy czym warto pamiętać, że wewnętrzne źródło odniesienia nie ma wartości 2.56V wziętej z kapelusza - ADC*5/2 daje wartość w mV. A użyty dzielnik napięcia usuwa to 2. Po pierwsze kolego dublujesz post który już był. Zacytowałem fragment Twojej wypowiedzi do której dopisałem komentarz -...
No ale właśnie mówiłem, że zysk na prędkości to wiadomo że jest pomijalny, jednak zysk na objętości kodu to już bardzo istotna sprawa i nie patrz na to w ten sposób, że tu akurat dałeś taki procek w którym masz aż tyle wolnej pamięci, bo po prostu na drugi raz będziesz wiedział że można to zrobić na mniejszym bez problemu ;) ..... a najważniejsze to...
Zmien optymalizacje programu na -O0 Żeby została wkompilowana biblioteka liczb zmiennoprzecinkowych. Funkcji _delay_ms i _delay_us można używać tylko i wyłącznie przy załączonej optymalizacji. mojsamspam : Nie musisz. Po prostu zdefiniuj F_CPU na 20000000, tak jak byś taktował procesor zegarem 20MHz - wszystkie opóźnienia będą zajmować odpowiednio...
a wiesz czemu niektorzy tak psiocza na bascoma? bo oducza myslenia. procesor jest procesorem i wciaz operuje wg zasad opisanych ... no gdzie? w instrukcji do bascoma czy w datasheecie procka? wydaje sie wam, ze skoro pisze, ze mozna zaladowac dowolna wartosc, to mozna sobie spokojnie wpadkowac tam liczbe 128-bitowa, albo moze lepiej zmiennoprzecinkowa...
zmiennoprzecinkowy atmega zmiennoprzecinkowy chara bascom zmiennoprzecinkowy
kontroler monitora seicento zamek pomiar prądu przetwornica
Przycisk z kluczykiem w Smart Fortwo - funkcje i zastosowanie Schemat połączenia wiązki drzwi Nissan Patrol GU4