LOOKUP nie wie jakiego typu są dane, które ma przeglądać. Równie dobrze możesz mieć tablicę słów (Word) a odczytywać ją bajt po bajcie przez LOOKUP, gdzie zmienną do której zwraca ona wartość będzie Byte. To otwiera pewne możliwości: 1. Normalnie dane są jednobajtowe. Dane dwubajtowe, są w stałych i określonych miejscach oraz jest ich bardzo mało. Zatem...
Po wykryciu reakcji odczekać potem znów sprawdzić stan portu.
Oddziel wprowadzenie danych od serializacji.
Witam, Na własne potrzeby chciałem zbudować monitor temperatury z 4 dallasami 18B20. Dane są odczytywane z czujników po RS485 i wysyłane do mastera. Kiedy odpytuję czujniki po kolei, muszę czekać standardowe 750ms na odpowiedź każdego z nich, co nie zadowala mnie. Zależy mi na tym, aby po wysłaniu komendy odpytującej, każdy z czujników bezzwłocznie...
W petli bedziesz zwiekszał o rozmiar elemetu w tablicy ( bajt ) a przesuniecie dodaj najpierw do zmiennej adres (czyli adres do innych rejestrów o ile nie da sie dodawac do zl,zh) do tego dodajesz poczatkowy indeks i potem dopiero w petli adiw dodajesz. [syntax=avrasm] LDI r1,poczatek clr r0 ADD zl,r1 ADC zh,r0 [/syntax] Cos w tym stylu.
Nic nie trzeba zamieniać, nie potrzebujesz a0,a1, ... itp Zamiast a0 używasz taba[0].
tablicę z danymi umieść na samym końcu za programem: [syntax=asm].include "tn13def.inc" .cseg .org0x00 rjmpstart .org 0x0A start: cli ; blokada przerwań ldi r16,low(RAMEND) ; stos na koniec RAM out SPL,r16 ldi r16,0b00000111 ;konfiguruje porty B pin0-pin2 na wyjscie out ddrb,r16 ps0:ldiZL,low(Ledy<<1) ;adres tabeli w pamięci programu ldiZH,high(Ledy<<1)...
Co dokładnie jest nie tak? Gdzie następuje błąd? Podawaj pełne informacje jak prosisz o pomoc. Rano może spróbuje to skompilować i napisze więcej.
Znaczy, że energia czynna nie mieści się w jednej komórce i zajmuje dwie - o adresach 7 i 8, trzeba je złożyć razem, biorąc wartość spod adresu 7 jako mniej znaczące 16 bitów.
Każdy program Arduino zachowuje się, praktycznie jak standardowy program C++. W C++ wystarczy komenda: LED_BUILTIN . Kliknij prawym przyciskiem myszy na LED_BUILTIN i wybierz z menu "Go to definition". Przeniesie Cię do pliku pins_arduino.h . Zobaczysz tam, że LED_BUILTIN ma wartość 13. digitalWrite(ledPin, ledState); "Go to definition" na tej funkcji...
Testy to bym zrobił programem Victoria 4.2 API. http://hdd-911.com/index.php?option=com_... - zmień tylko PIO na API i wykonaj odczyt smarta, testy sektorów , pomiar prędkości wirowania i odczyt tablicy partycji. Miło byłoby jakbyś zrzuty ekranowe zaprezentował na forum. Program działa z poziomu...
np. tak: LCD_DEC(10, 10, Tahoma_14ptAA8bitmono[1] + x, RED, WHITE); albo tak LCD_DEC(10, 10, &Tahoma_14ptAA8bitmono[1][x], RED, WHITE); Taka zgadywanka, bo skąd mamy znać typy argumentów i działanie LCD_DEC() ?
W jaki sposób zapisać nazwę aby kompilator nie wyrzucił błędu ? sugerowana nazwa poniżej nie jest akceptowalna lds r1, {Dane(1)} lds r1, {Dane(1)} - tutaj chcesz pobrać pierwszy element tablicy. Tak się nie da. Zarówno niveasoft , jak i pawlik118 mają rację. W przypadku odpowiedzi kol. pawlik118 otrzymasz adres początku tablicy. Natomiast jeśli chodzi...
Witam, próbowałeś podzielić odczyt na dwie części, zamiast upychać w jednej linii? Wyciągnij adres elementu z tablicy (&(arrays[iterator])) i odczytane 2 bajty (pgm_read_word()) potraktuj jako adres docelowej tablicy z uint8_t, z którego odczytasz jeden bajt. Pozdrawiam
Zapisać -> Nie wiem w jakim stanie go masz, ale pewnie jako 8 bajtów:) Wytnij z tego bajty rodziny etc, zostaw sam SN właściwy, i jak pisał chyba JmL masz "tablice" w eepromie, no to siup zapisujesz pod ta i ta komórkę, co potrzeba. - tyle apropo zapisu Odczyt -> odczytujesz co któryś bajt(same SNy) do jakiejś innej tablicy w ramie i szukasz w niej...
<ciach> (at)plastus00 Użyj funkcji i2c_eeprom_write_page . Dla int: i2c_eeprom_write_page . Odczyt analogicznie funkcją: i2c_eeprom_read_buffer Prosiłbym aby koledzy skupili się na problemie autora, bez wzajemnych ocen personalnych.
Prawdopodobieństwo "trafienia" w taką jednoczesną zamianę bitów w sumie CRC i tablicy jest znikome. Poza tym CRC32 z samej siebie zabezpiecza wystarczająco. Nawet CRC16 jest dość silnym zabezpieczeniem (ale to zależy od ilości zabezpieczanych danych i ich ważności). Zabezpieczenie sumy CRC inną sumą nie ma za bardzo sensu (wykrycie błędu tak czy inaczej...
Widać nie rozumiesz o co chodzi. Ani ja ani Dr.Vee nie mówimy o przeniesieniu komunikatów do ramu, tylko tablicy wskaźników na komunikaty. Najpierw musisz pobrać wskaźnik z tablicy (ponieważ napisów jest więcej), potem dopiero wykorzystując wskaźnik odczytujesz ciąg z pamięci programu. Jeśli nie chcesz przenosić tablicy wskaźników, to niestety musisz...
Zamiast int16_t użyj uint16_t (dla tablicy w eepromie, rzutowanie też jest zbędne)
Kolejna rzecz - nie używaj prog_char i kolejna - użyj __flash i wywal te pgm_read_xx. Niestety nie wiem jak użyć tego "__flash" , potrzebna mi jakaś konkretna biblioteka poza pgmspace? Posiłkuje się user-manual dostępnym m.in [url=file:///C:/WinAVR-20100110/doc/avr-... Przy funkcji takiej, czyli gdy odczytuje...
petla ktora stosujesz na koncu jest niepoprawna - w 1 odczycie zapiszesz pozycje 0 i 1, w drugim odczycie zapiszesz pozycje (PONOWNIE) 1 i 2, itd. musisz albo inkrementowac zmienna o 2 (n+=2), albo inaczej rozwiazac tablice. niemniej jednak to taka uwaga ogolna, bo nie sadze, aby na tym polegal problem. no chyba ze jeszcze przy okazji nie zerujesz tej...
Ponieważ odczyt z tablicy w maluczkich uC zajmuje "dużo" flash i czasu też, dlatego nie ma odczytu z żadnych tablic. A w tych gdzie ciąg ląduje w ram, zużywa ją niepotrzebnie. Na szczęście choinka if then else zajmuje zero bajtów i zero instrukcji oraz wykonuje się w ujemnym czasie. Proponuję najpierw sprawdzić obie wersje na min. 2 platformach, a...
O to chodzi że nie można utworzyć partycji bez utworzenia tablicy alokacji. odwrotnie - tablicę alokacji plików tworzysz po utworzeniu partycji i to tylko w przypadku FATu. Niby jak mam cokolwiek zapisać, skoro nie można go zainicjować. - to świadczy o problemie z pamięcią. Ponadto skoro HD Tune przeskanował całą pamięć flash, to musi być dostępna?...
Projektuje uklad w ktorym PC (VB6) bedzie wysylalo tablice do atmegi 32. Tablice wysle z VB6 w nastepujacy sposob: Dim tArray(1 To 5) As Byte Dim vntBuffer As Variant tArray(1) = 100 tArray(2) = 101 tArray(3) = 102 tArray(4) = 103 tArray(5) = 104 vntBuffer = tArray msComm.Output = vntBuffer moje pytanie jest jak to wrzucic do tablicy spowrotem w bascom?
czasem problemem okazuje się niestała stała - tablice stałych można przypuszczać, że będą tylko w pamięci flash - przeważnie okazuje się, że kompilator owszem zapisuje sobie tablicę w pamięci flash, ale z początku programu kopiuje sobie ją do ramu - w ten sposób można się odwoływać do komórek takiej tablicy jak do zwykłej pamięci ram (przestrzeń). Może...
Być może pomyliłem się w liczeniu, zamiast SerialPort1.Read(comBuffer, 0, 10) daj SerialPort1.Read(comBuffer, 0, 11), przy okazji zmieniając rozmiar tablicy comBuffer też na 11 :) (choć teraz raczej zgaduję)
Zmień podejście. Tryb free running praktycznie nie nadaje się w sytuacji w której planujesz zmieniać kanały. Lepiej zastosować single conversion i przerwania. W takiej sytuacji w procedurze obsługi przerwania zapisujesz do tablicy wartość ADC, inkrementujesz indeks tablicy, inkrementujesz ADMUX (kanał) i zaczynasz kolejną konwersję. I tak w kółko. W...
Na szybko wymyślony algorytm: [syntax=csharp]string toEncrypt = textBox1.Text; int n = int.Parse(textBox2.Text); char[,] tmp = new char [toEncrypt.Length, n]; //n = liczba rzędów, ilość liter w napisie = liczba kolumn int z = 1; int pos = 0; for (int i = 0; i < toEncrypt.Length; i++) { tmp[i, pos] = toEncrypt[i]; if (n > 1) { if (pos == 0) z =...
Wszystko pięknie, ładnie, ale żaden z programów nie działa... Program [b]excray[\b]'a, się kompiluje, ale: nie widzę nigdzie wyjścia OCR1A (PB1), na które jest podawany sygnał wyjściowy PWM'a. Na wyjście to podawany jest stan niski (ustawiony bit COM1A1). Dodam tylko, że chodzi o PWM w trybie Phase Correct. W moim programie wszystko jest ok, poza odczytem...
Zastosowałem w innym miejscu, przy wpisywaniu do przetwornika DAC To nie jest zbyt dobre rozwiązanie. Po przekopiowaniu tablicy z FLASH do RAM przeskaluj dane w pętli, a w ogóle to najlepiej byłoby gdybyś już we FLASHu takie dane umieścił.
Witam, Do pamięci zewnętrznej odwołujesz się przez zwykły wskażnik o adresie większym niż wewnętrzna przestrzeń adresowa RAM'u Więc aby stworzyć tablice musisz odwołać się przez wskażnik char* bufor = (char*)0x8000; // deklaracja adresu początkowego tablicy //--------------------------------------...
Czyżbyś zapomniał, że w AVRach odczyt z pamięci FLASH realizowany jest zupełnie inaczej niż odczyt z pamięci RAM? Po co są makra typu pgm_read_byte() itp? Kompilator sam tego nie wymyśli - niestety taka jest cena architektury Harwardzkiej. 4\/3!!
Oj! Rzeczywiście, przecież tablica cmds też była PROGMEM , a nie była właściwie odczytywana (a palnąłem, że „powinno działać” :oops: ). pytanie więc brzmi czy cmd? znajdują się w RAMie czy też w pamięci programu. Tylko w pamięci programu. Ciekawe dlaczego to składowanie tablicy w pamięci programu nie działa właściwie. Może chodzi o to, że...
Ta funkcja nie realizuje mrugania diody. Realizuje odczyt stanu. Jak większość poprawinie napisanych funkcji ze słówkiem Get w nazwie. Natomiast sposób wywołania funkcji z tymi konwersjami to masakra o pomstę do nieba wołająca. Jeśli to wszystko działa to prawdopodobnie przez przypadek. I jeszcze uwaga do ... trzeciej pozycji tablicy request ... adresem...
' Na początku kodu Index_tab=0 ...... ...... If Licznik = 1200 Then IF Index_tab=3 Then ' przesuniecie w tył jeżeli pozyskano co najmniej 3 pomiary Pomiar(1)=Pomiar(2) Pomiar(2)=Pomiar(3) Else ' Fragment kodu wykonywany dla Index_tab=0,1 i 2 Incr Index_tab IF Index_tab>3 Then Index_tab=3 End If Pomiar(index_tab)...
Wartości początkowe zmiennych inicjowanych są przechowywane we FLASH i kopiowane do RAM przez kod startowy (przed wejściem do main). W pliku .lss samych wartości nie widać. Widać kod odpowiedzialny za kopiowannie, adresy i wielkość bloku danych. Adresy i wielkość widać też w pliku .map (symbole __data_start__ i __data_end__). Znając adresy zawartość...
Poczytaj w pomocy o instrukcjach: DATA , RESTORE, READ... To się nie nadaje , ponieważ Restore potrzebuje etykiety , a Read to odczyt sekwencyjny i nie da sie wybrać konkretnego elementu tablicy , tylko trzeba odczytywać kolejno , począwszy od pierwszego elementu. Ale ... Bascom AVR posiada funkcje , za pomocą których można naśladować mechanizm wskaźników...
Spróbuj tak: odczyt [syntax=c] if(eeprom_is_ready()) { eeprom_read_block(&ustawienia,&ustawieni... } [/syntax] zapis [syntax=c] cli();//Globalna blokada przerwań if(eeprom_is_ready()) { eprom_write_block(&ustawienia,&ustawieni... } sei();//odblokowanie przerwań [/syntax]
Odnośnie tablic chodziło mi jedynie o sposób deklaracji. Wiadomo, że deklaracja być musi, ale podczas dodawania do tablicy nie masz mechanizmu kontroli, czy dane nie wyszły poza zakres tablicy. Polecam nad tym pomyśleć :) Nagłówek. double loadit (FILE **f, float (*t)[100], float (*sinn)[100], float (*zaszum)[100])...
Kompilowałem podany kod u siebie, przy kompilacji jako c++ kompilator rzucał się do linii "static Which=0;", ale po drobnych poprawkach ruszył. W kodzie asemblera nie widzę znaczących różnic, pod symulatorem wszystko działa poprawnie. 1/ Sprawdź, czy zastąpienie "pgm_read_byte(&g_Cyfry[n%10])" przez stałą (np 164) coś zmieni. 2/ Sprawdź, czy przeniesienie...
Masz odczyt i zapis napędów przy użyciu funkcji SFC14 DPRD_DAT i SFC15 DPWR_DAT. Obsługa w bloku FB60, którego wywołania są w FC63. W net.1 tego FC masz wpisane adresy IO do odpowiadającej bazy instance. Dla Twojego przykładu napęd 27 obsługuje baza DB70. W tym przypadku Cross reference niestety nie zadziała.
Obliczenia są +/- poprawne, pod warunkiem, że procesor rzeczywiście jest taktowany 12,8MHz. Domyślnie atmega8 działa na wewnętrznym rezonatorze 8MHz który jest dodatkowo dzielony przez 8. Żeby to zmienić musisz przeprogramować fuse bity. Najlepiej to zacznik od uzyskania częstotliwości 1Hz na jakimś pinie - miganie LED przy czasach rzędu 3,1ms dość...
Częstotliwość wyjściowa wynika z faktu, że odtworzenie jednego okresu z tablicy wymaga wykonania 240 kolejnych odczytów czyli, że: Fwy=Fprzerwań/240 {Rąbnąłem się w pierwszym poście :oops: } A ogólnie: Fwy:=Fprzerwań/N gdzie Fprzerwań - częstotliwość przerwań N - długość tablicy sinusa. Użyta metoda zmiany częstotliwości przerwań dla zmiany Fwy ma pewną...
To czego szukasz jest rozwiązane w Arduino i można łatwo skorzystać z tego. Instalujesz bibliotekę OneWire i DallasTemperature, otwierasz przykład Multibus, w tablicy podajesz numery pinów, klikasz wgraj i na UART lecą temperatury z wybranych pinów. Koszt to 6k flash i 516B RAM dla UNO (Atmega328P). Problemem jest to, że nie ma w typowych płytkach ATMEGA128...
A to niby dlaczego nie wolno stosować waitms ??? U mnie jakoś działa przy wielu czujnikach na jednej linii i co to ma wspólnego z wysyłaniem przez uarta ? W tym przypadku waitms nie zakłóca obsługi przerwań, wiec nie widzę problemu. Kolega namieszał trochę w procedurze "odczyt". Na początku wyszukujesz czujniki na linii 1wire, a później, w procedurze...
Instrukcja odczytuje 8 bajtów unikalnego numeru i zapisuje je w tablicy począwszy od wskazanego indeksu w stronę narastania indeksów. Czyli jeśli wskazuje się 1 to numer pierwszego czujnika jest w komórkach od 1 do 8. To znaczy, że powinieneś napisać: Z = 9 Adres(z) = 1wsearchnext()
Odbieram dane 2 bajty z modułu pomiarowego ...pierwszy bajt to starsza część wyniku (H_DATA) a drugi bajt to część młodsza (L_DATA) to składam to w całość tak: [syntax=c] uint16_t licznik; licznik = (dane_RX[0])+((dane_RX[1])<<8);//p... odczyt i przepisz do zmiennej [/syntax] Jeżeli dobrze kombinuję to teraz w liczniku mam liczbę 16bit odebraną...
witam nie bawiłem się jeszcze 1921 ale obsługa jest standardowa tylko przy odczycie temperatury musisz dać opóźnienie na konwersje temperatury jakieś 750ms. DS1994 ma wiele funkcji i własny eeprom po za tym można zrobić całkiem dobry system kontroli dostępu zabezpieczenia wszystko zależy od pomysłowości. pamiętaj jedno jak piszesz cokolwiek do 1-wire...
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Zadanie jest tak banalnie proste ze az wstyd podawac rozwiazanie. Skoro masz takie zadanie tzn ,ze byly jakies lekcje z pascala a zadanie dotyczy kompletnych podstaw. podpowiem ,ze tu najlepiej wykor\ystac tablice wielowymierowa ( dokladnie dwuwymiarowa): tab:array [1..4,1..4] of integer; gdzie jeden zakres to wiersz ,drugi kolumna. Dane...
odczyt danych eeprom tablicy odczyt danych tablicy bascom bascom zapis tablicy tablicy
schemat światła ducato usunąć linux podłączyć kompresor lodówki
naprawa kabla lodówki suszarka samsung
Volkswagen Tiguan 2013 RNS 315 WinCE Firmware Upgrade: Dealer DVD, Versions, Risks Toshiba 40RL939 - Jak przełączyć z trybu przewodowego na Wi-Fi?