Skoro Bascom to jest taka komenda jak "I2CSEND". Wszelkie szczegóły znajdziesz w polskojęzycznym helpie do Bascoma.
Może [url=http://realterm.sourceforge.net/]Re... ?
Nie wiem dlaczego analizator pierwszy bajt odbiera prawidłowo a przy kolejnym pokazuje jakiś błąd Pewnie przez zbyt krótki "impuls" na linii CS. Generalnie CSa powinieneś przestawiać dopiero po całej transmisji, a nie między każdym bajtem, a jak już między każdym bajtem, to raczej przydałoby się coś dłuższego niż takie "pyknięcie".
Zrób tak :[syntax=delphi]uses idGlobal; procedure TForm.Button1Click(Sender: TObject); var Buffer_I : ARRAY[0..512] of Byte; ABytes : TIdBytes; begin ABytes := RawToBytes(Buffer_I[0], Length(Buffer_I)); IdTCPClient1.IOHandler.Write(ABytes); end; [/syntax]
A, rzeczywiście, ten uart_puts() jest do wysyłania napisu zakończonego bajtem 0, trzeba go przerobić, i może inaczej nazwać - może uart_putba()?[syntax=c]void uart_putba(const uint8_t *dane, size_t ile) { unsigned i; for(i=0; i < ile; i++) uart_putc(dane[i]); }[/syntax]Ostrzeżenie dotyczące 'const' - skoro rzutujesz dane na 'const', to wypada dopisać...
Ja mam pomysł /: po prostu jak wpisujesz do DR watrość to peryferiuum wdzie że to 2 znaki (bo rejestr ma 16 "waznych" bitów ) i wpisuje do FIFO 0x51 0x00 a następnie je wysyła. musisz zmusić kompilator aby zapisał bajt a nie pół słowa lub słowo [syntax=c]*(volatile uint8_t *)&SPIx -> DR = dana[/syntax] gdzie SPIx - to Twoje SPI (np SPI1, SPI2 etc) a...
irutkows: zegary to w atmega 4MHz FPGA 3,6864MHz. Na razie testuje na baud 9600 ale pewnie wskocze na 19200. Stale beda mi potrzebne pozniej, przeciez napisalem za co sie biore(kostka rubika na kolorowym wyswietlaczu z nokii 6100) a te 1010101.. to tylko dla testu. Wg mnie to przy zegarze 3,6864MHz dla zamieszczonego kodu będzie 3.6864E6 / (2 * 384)...
Po wysłaniu jednego bajtu (i sprawdzeniu SPIF) trzeba ręcznie wyzerować SPIF przed następną transmisją. Poza tym SS (ten od mikrokontrolera, nie od DAC) powinien być ustawiony jako wyjście przed włączeniem SPI (ustawieniem bitu SPE), bo jak nie to mikrokontroler będzie przechodził w tryb slave. Poza zaznaczonymi fragmentami pozmieniałem trochę rejestry...
Tak na pierwszy rzut oka - wysyłasz bajt i w czasie transmisji deaktywujesz CS - to nie ma prawa działać. Zawsze wysyłaj i odbieraj, deaktywuj CS po odebraniu,
Wydaje się, że już dużo osiągnąłeś. Skoro działa transmisja, choćby w jedną stronę, tzn. że opanowałeś rejestry TWI. Nie mam w tym specjalnej praktyki, ale może akurat udałoby się coś zauważyć, wymyślić - tak mnie jak i innym forumowiczom - jednak pod warunkiem, że podasz listing programu. Gotowego pragramu nie mam, jakiś przykład widziałem w helpie...
Jest parę sposobów. Chyba najprostszy z nich to pooling. Periodyczne odpytywanie serwera przez klienta "czy są nowe wiadomości". Natomiast jeśli już masz zestawione połączenie TCP no to masz też otwarty strumień przez który (zależnie od implementacji klienta TCP) możesz wysyłać bajty.
W dokumentacji nie znalazłem, ale zdrowy rozsądek wskazuje, że to powinna być ostatnio wpisana dana.
No to daj jeszcze głebiej tj. na początku procedury wysyłania bajtu, odbierania bajtu daj cli , a na koncu tych procedur sei :P I jak wyglądają te zakłocenia?
Teraz tak: Chcę wysłać z urządzenia nr dajmy na to takie cztery bajty danych: 0xFF oraz 0x01. To cztery czy dwa? Wysyłasz dane binarne, a odbierasz je jakby to był tekst kodowany w UTF-8. Jeśli chcesz wyświetlić w konsoli odebrane dane binarne w postaci szesnastkowej to musisz je skonwertować na tekst. Na przykład [url=https://stackoverflow.com/a/4090766...
Twoje pytanie niewiele ma wspólnego z UART. Chodzi Ci po prostu o to, jak przesłać coś, co ma więcej niż jeden bajt. Rozbij to na bajty - sposobów jest wiele (np. unia typu, jaki chcesz przesłać i wektora bajtów), a potem wysyłaj bajt po bajcie.
SS musisz wykorzystać, bo tylko stan tego pinu gwarantuje przejście pozostałych linii interfejsu SPI w stan wysokiej impedancji. Przerwanie od SS nie jest potrzebne - niski poziom tego sygnału aktywuje interfejs i powoduje wysłanie SPDR. Po zakończeniu wysyłania bajtu danych możesz otrzymać przerwanie zakończenia transferu SPI w którym to przerwaniu...
SM2135 z pewnością nie zadziała. Wysyła tylko 8 bajtów, a nie 11, a kolory są 8-bitowe, a nie 10-bitowe. Co więcej, pierwszy wysyłany bajt jest inny, więc sterownik najprawdopodobniej zignoruje pakiety SM2135.
Rozwijając to co pisał snnaap o nadpisywaniu, dla pewności lepiej wszystkie wartości maskować/warunkować, wtedy nie ma żadnych nieprzyjemności, jeśli zapomni się o dozwolonych wartościach. Dodatkowo, coś mi nie pasuje przy wysyłaniu danych po SPI. Zakładając, że funkcja wysyła bajt, to w pierwszej linii wysyłasz młodszy bajt słowa, a za drugim razem...
Kiedy pisałem obsługę karty MMC przez SPI, robiłem to dokładnie tak, jak opisałeś - wysyłałem bajt 0xFF, co powodowało podanie odpowiedniej ilości impulsów zegarowych, a następnie odczytywałem zawartość SPDR - powinien się w nim znajdować odebrany bajt danych.
Jesteś pewien że odbierasz dwa bajty z czujnika po I2C? Czy wysyłasz dwa bajty do PC?
Printbin Inputbin.
No ale jak to wysyłasz? Ciągu bajtów nie możesz wysyłać jako napisu (tak coś podejrzewam), tylko przez write itp. ewentualnie bajt po bajcie. Zobacz np. tu https://4programmers.net/C/Artyku%C5%82y...
Nie wiem jak działa na tej Atmedze SPI, ale konfiguracja tego NCO za pomocą SPI 8bitowego powinna wyglądać tak że: 1. Wysyłasz starszy bajt zaczynając od MSB!, 2. Po wysłaniu tego bajta trzymasz FSYNC na low cały czas, a SCLK w idle hi, 3. Wysyłasz młodszy bajt, 4. Po zakończeniu FSYNC na hi. P.S. Pomyliłeś działy.
Witam! Wyłączenie odbiornika jednocześnie czyści bufor odbiorczy, więc jest to dobra droga. Za szybko włączasz odbiornik. Wysłanie ostatniego bajtu do bufora nadawczego powoduje, że program leci dalej (ale jednocześnie trwa wysyłanie bajtu z bufora) w tym czasie włączasz odbiór i dostajesz kawałek nadawanego bajtu. Żeby pozbyć się problemu, musisz po...
[syntax=c]void SendSpi(uint16_t bajt){ SPDR=bajt; while( !(SPSR & (1<<SPIF)) ); PORTB |= (1<<CS); _delay_us(1); PORTB &= ~(1<<CS); }[/syntax] To jest źle funkcja ma argument 16 bitowy a ty wysyłasz tylko 8. Może Ci wyjaśnią. Wysyłasz 1 bajt trafia on do 595 podłączonego do procka. wysyłasz 2 bajt i trafia on do podłączonego...
tu masz linka do noty katalogowej, tam jest ładnie opisane co trzeba wysłać, żeby sterować daną funkcją http://alfa.iele.polsl.gliwice.pl/elenot... a w bascomie wysyłanie bajtów po i2c jest bardzo proste: i2cstart i2cwbyte 136 'adres tda7313 i2cwbyte [zmienna lub stala] 'tym bajtem będzie się sterowało przedwzmacniaczem i2cstop...
Z tego co widze na pierwszy rzut oka układ jest bardzo podobny to rfm12b. U mnie ramka w rfm12b ma: 6 bajtów preambuła (xAA) + 2 bajty sync + 64 bajty ciurkiem payload. Dlaczego chcesz się ograniczać do wysyłania tylko dwóch bajtów po synchronizacji? Jak zbudujesz całą ramkę staraj się wysłać ją kilka razy pod rząd (min 3) aby mieć pewność, że odbiornik...
Witam. Po pierwsze, najbardziej popularnym trybem pracy UART'a w 51, jest tryb asynchroniczny. W tym trybie wykorzystujesz piny TxD (nadawanie) i RxD (odbieranie) procka. Jeśli chcesz zrobić transmisję pomiędzy dwoma stacjami A i B, (każda zbudowana na 51) to najlepiej połączyć TxDA z RxDB i RxDA z TxDB (czyli na krzyż). Mechanizm odbioru transmisji...
Coś mi tu nie pasuje, matryca 32x16 (512). Osiem '374 może wysterować 64 diody, wychodzi, że diody są w grupach po 64 właśnie; https://obrazki.elektroda.pl/2633671000_... Sterowanie wygląda zapewne tak, że wysyłane jest 8 bitów do zatrzasków '374, a CLK przesuwa dane do kolejnego '374. Po wysłaniu kompletu danych, ustawiana jest...
Przykładowa funkcja powinna być poprawnie napisana. [code][syntax=c] //ptrRam - adres startowy do wysłania //NumOfBytes - liczba bajtów do wysłania void Debug_SendRam(unsigned char *ptrRam,unsigned int NumOfBytes) { insigned int i; for(i=0;i<=NumOfBytes;i++) { while ( !( UCSRA & (1<<UDRE)) ); //wysyłamy bajt przez UART UDR = *ptrRam; ptrRam++;...
Ten program wysyła bajty odczytane z pamięci jako znaki, a nie jako sekwencje cyfr ASCII. Zacznij od programu, który będzie w pętli co jakiś czas wysyłał np. kolejne cyfry lub litery. Jeśli to zadziała, będziesz wiedział, że masz poprawną transmisję - wtedy włącz obsługę pamięci i ew spróbuj wysyłać jej zawartość zamieniając ją na wartości np. szesnastkowe...
Nie załączyłeś nagłówka stdio.h, poza tym kwiatki typu: UDR = ("NAPIĘCIE"); UDR = sprintf('wynik',"U=%1.3f [V]",adc); UDR to 8-bitowy rejestr i na raz możesz wysłać tylko jeden bajt. Więc np. wynik sprintf należy przechować w jakimś buforze i wysyłać bajt po bajcie. Przeczytaj jak wygląda struktura sprintf. Jeśli dajesz format f (float), a argumentem...
Miałem taki problem - po optymalizacji przestawał działać TFT. Sprawdzałem wszystkie opóźnienia, wszelkie podejrzane zmienne robiłem typu volatile, ale problem nadal występował. W końcu za pomocą atrybutu __attribute__((optimize("-O0"))); zacząłem wyłączać z optymalizacji kolejne funkcje. Okazało się, że problem jest w funkcji wysyłania bajtu SPI. Wiem...
ACK nie ustawione..... To wysyłanie nie będzie działać. mniej niż 3 bajty wysyła się ciut inaczej, właśnie ze względy na ACK.
Z tego co wiem, to w ASM (pod DOS) właśnie tak to się robi, czyli innych metod raczej nie ma. Są gotowe programy pod Win, pozwalające operować portami COM i LPT. MOVDX, 378H MOVAL, n OUT DX, AL wysyła bajt n do portu LPT, ale jak to odebrać na COM pod ASM, to już nie mam pojęcia :D.
CLK w SPI może mieć dowolne czasy więc przerwy pomiędzy i w trakcie wysyłania bajtu są bez znaczenia, istotne są zbocza i stan linii danych w tych momentach. SPI jest dlatego praktyczne bo może być przerywana transmisja innymi zdarzeniami. To że nie wygląda to "ładnie" to nie ma znaczenia. 19 bitów być może można wysyłać sprzętowym SPI jako 24 bity...
Oprócz tego co napisał poprzednik wskazuję na jeszcze jeden błąd. Zaczynasz wysyłać bajt, i po jego wysłaniu uaktywniasz odbiór poprzez setb ren. Zastanów się, bajt już poszedł (no i gdzie jest??) a ty dopiero teraz aktywujesz odbiór. Przecież te wysłane bity nie czekają w skrzynce na listy, musisz odbiór uaktywnić przed wysyłaniem , żeby układ mógł...
Witam Zwracam się z pytaniem do kolegów po fachu. Trochę poszukałem po necie ale nie znalazłem odpowiedzi na moje pytanie. W jaki sposób, za pomocą VB wysłać bajt przez port szeregowy jako zmienną liczbową? Dokładam kolejne funkcjonalności do mojego starego projektu. Wcześniej miałem połączone dwa procesory po RS232 i przesyłały pomiędzy sobą dane jako...
Hej Widzę, ze temat mało interesujący i pomysłów brak. Mi niestety też. W każdym bądź razie temat obszedłem inaczej. Wysyłam kolejne znaki komendą RT.PutChar(\xA5) i wszystko działa poprawnie. niestety program wygląda nieładnie - ale nie można mieć wszystkiego. Na ten moment temat uznaję za zamknięty, ale jakby jakiemuś koledze kiedyś udało się znaleźć...
Witam błąd tkwi w tym że z programu głównego wysyłasz bajt do kompa - gdy przychodzi potwierdzenie skonczenia nadawania (chodzi o putchar) mikrokontroler przechodzi do przerwania - wykrywa że nie ma bajtu odebranego wychodzi i wchodzi ponownie :) działa ale w pętli i bezczynnie - wrzuć obsługę nadawania do przerwania (zalecam to) lub wyłanczaj przerwania...
aplikacja[url=http://avr.elektroda.eu/?q... jest to klasyczny sposób komunikacji mikrokontrolera z komputerem. Nie rozpisywałem się na ten temat bo od strony sprzętowej wszsystko mam w porządku. Również samo wysyłanie i odbieranie znaku nie sprawia problemów. Mój układ to prosty PWM sprzętowy na ATtiny2313 8-bitowy gdzie zmieniając(poprzez...
Cóż, jeśli znajdziesz / masz (może masz, opublikowałeś coś takiego) kod źródłowy używanego ramcode i zmienisz go na bezpośrednie wysyłanie bajtów i przekompilujesz, to możemy zmienić flasher również po naszej stronie
a mozesz mi wyjasnic co robia te linie w kodzie (i tez w jakim celu sie znalazly) : temp2 <= temp2(8 downto 0) & '0'; ... txd<=temp2(9) - (czy jest to wyslyalnie bitow od 0 do 9 ? ) czego do konca nie rozumiem (jestem wychowany na C ;) ) z gory dzieki
Do wysyłania tablicy jest proste polecenie fragment kodu [syntax=basic4gl]dim a(100) as Byte do waitms 5 printbin a(1) , ' tu można zadeklarować ile bajtów chcemy wysłać a także od którego zaczynamy czyli printbin a(1), 10 tylko 10 bajtów licząc od pierwszego , printbin a(8) od 8 do końca tablicy printbin a(7) , 20 od 7 do 20 itd loop[/syntax]
Można sobie ułatwić robote na kilka sposobów.Użyć aliasów zamiast definiować zmienne bitowe: Dim Przekazniki As Byte Pk0 Alias Przekazniki.0 Pk1 Alias Przekazniki.1 Pk2 Alias Przekazniki.2 Pk3 Alias Przekazniki.3 Pk4 Alias Przekazniki.4 Pk5 Alias Przekazniki.5 Pk6 Alias Przekazniki.6 Pk7 Alias Przekazniki.7 Set Pk0 'tak ustawiamy bit Reset Pk5 'tak...
Wysyłanie bajtów nie powoduje błędów... A skąd ta pewność. W żaden sposób nie sprawdzasz poprawności transmisji. To, że program się nie wiesza, nie oznacza wcale, że transmisja przebiega prawidłowo. Spróbuj chociaż sprawdzać bit potwierdzenia od układu slave (np. tak, jak było opisane w tym [url=http://www.elektroda.pl/rtvforum/to...
Po drugie, chcesz nadawać bajty, a rejestr DR w STM32 ma 16 bitów, więc jednym zapisem do DR nadajesz 2 bajty. Tutaj się mylisz. Akurat w F103, możesz wysyłać pojedyncze bajty bez bajtowego dostępu. To co opisujesz jest w nowszych STM32, np. L4, F4, F7. W każdym przypadku lepiej użyć do tego DMA.
witam. Przeglądając forum zauważyłem, że wiele osób ma proble z komunikacja pomiedzy układami Atmega poprzez SPi. Podobnie ja. Przypuszczam, że moja konfiguracja jest ok. Master wysyła cyklicznie pojedyncze bajty(wartość zwiekasza się co cykl od 0 ) ale slave pokazuje tylko 0 lub 255. Może ktoś mi podpowie w czym jest problem?! Dzieki z góry. A.K.
Ustalasz długość odbieranych danych np. 2 bajty, wstawiasz licznik odliczający do 2 :) i łapiesz jeden bajt, potem drugi, Kasujesz licznik i od nowa :) wysyłasz następne 2 bajty itd. ...
Na XP.
Kolego, jeśli dobrze zrozumiałem twoje pytanie to chcesz wysyłać coś równolegle przez port szeregowy (rs232). Jeśli tak chcesz zrobić, to będziesz potrzebował jakiegoś rejestru szeregowo-równoległego, który ci zamieni typ transmisji. Jeśli nie musisz używać rs232 to proponuję port LPT - tam masz od razu transmisję równoległą. Pozdrawiam, Miłosz
masz źle PE zrobione. Wysyłasz 0xAC, 0x53, 0x34(przykład) i teraz wysyłasz dowolny bajt (ja zwykle 0xff) i podczas niego dopiero odczytujesz bajt z układu. Bo to jest transmisja 4 bajtowa a nie 3 jak w starych s8252,s53.
main.c, linia 49: byte=(unsigned char)digit-0x30; digit w tym kodzie to bajt o wartości kodu ascii cyfry/litery wprowadzonej klawiaturą Write(&digit,1); Wyrażenie Write(&byte,1); wysyła bajt o wartości 0x04 czyli wg tablicy ascii znak kontrolny EOT.
Można to tak zrobić: [syntax=basic4gl]Dim Command As String * 4 , Bajty_command(5) As Byte At Command Overlay Printbin Bajty_command(1) ; Bajty_command(2) ; Bajty_command(3) ; Bajty_command(4) ; Bajty_command(5)[/syntax]
Skoro ramka zaczyna się STX a kończy ETX, to dziwne jest wysyłanie bajtów 02 i 03. Wstaw dokumentację.
Myślę, że twój przykład jest niemiarodajny, ale to trzeba by przeanalizować program, żeby jednoznacznie określić co jest przyczyną. Zauważ, że karta zapisuje na raz cały sektor (512 bajtów), jeśli w pętli zapisujesz 1 bajt, a każdy zapis generuje zrzut sektora to 7-8kB jest realną prędkością. Jeśli soft jest mądry i to jakoś buforuje to powinno być...
Hi!! Na 4,5,6,7. Pozdro/smalski
Pytanie dotyczy poprawnego formatu - czy Serial.print, czy Serial.write jaki format dalej? Serial.write() wysyła pojedynczy bajt. Serial.print(), w zależności od argumentu, jeden lub więcej. [url=https://www.arduino.cc/reference/en...
Masz zły sposób sprawdzania poprawności transmisji. Komp stacjonarny może powodować jakiś mały impuls na linii TXD podczas uruchamiania się komputera. Więc AVR odbiera go jako bajt. Potem wysyłasz 72 Bajty, ale AVR odbiera 71 bo wcześniej już odebrał jeden. I na koniec odbiera ten 72-gi i traktuje go jako ten ostatni bajt kontrolny. A on nim nie jest....
Przestawienie kierunku po rozpoczęciu wysyłania ostatniego bajtu jest błędem. Należy go przestawić dopiero _PO_ tym gdy ustawi się flaga TC. Ty natomiast sprawdzasz tą flagę _PRZED_ rozpoczęciem wysyłania (ale tak czy siak po przestawieniu kierunku), co jest mało sensowne. Wewnątrz pętli powinieneś sprawdzać flagę TXE, a TC tylko przed zmianą kierunku...
Wysłałem moją korespondencję z działem technicznym firmy Rayson do TME, zobaczymy co towarzystwo z tym zrobi.
Te malunki to przykłady adresowania danych wskaźnikiem subadress. Wysyłasz tyle bajtów danych ile chcesz. Subadress oznacza pierwszy adres pod który trafiają pierwsze dane. Subadress jest inkrementowany bajtem danych. Zaczynając od 00: 00-01-02-03-00-01-02-03-00-01......
Jest też coś o funkcji WriteByte, ale nic konkretnego nie piszą więc trzeba by na żywo sprawdzić czy można ją wywołać (wydaje mi się, że również powinna działać bez problemów). Nie może działać, bo klasa SerialPort nie posiada takiej metody. Chcąc wysłać pojedynczy bajt najlepiej umieścić go w tablicy: Dodano po 10 Masz przecież w tym przykładzie konkretną...
Wydaje się, że istnieje pewne zamieszanie, połączony sterownik jest prostym wysyłaniem bajtów UART, mogę go łatwo przenieść. Zacząłem go portować, ale to nie jest I2C, więc może nie pasować do twojego urządzenia, ale tak czy inaczej... https://obrazki.elektroda.pl/1078091500_... https://github.com/openshwprojects/OpenB...
1. Ustawienia są niekompletne: zapomniałeś włączyć i skonfigurować matrycę krosującą (Crossbar) odpowiadającą za przypisania sygnałów urządzeń peryferyjnych do wyprowadzeń układu. Jeśli chcesz sprawdzić jak należy skonfigurować mikrokontroler (jego peryferia) to możesz użyć programu Configuration Wizard 2 udostępniony na CLR SCON0.1 Wystarczy zapisać...
Udało się uruchomić i2c w procesorze LPC812. Błąd był w kodzie i polegał na niepoprawnym wysyłaniu bajtu do nadawania i odbierania. Poprawny projekt zamieszczam w załączniku.
może np tak: MOV TMOD,#00100001B MOV TH1,#0FDH MOV SCON,#01010000B SETB TR1 SETB REN TO JEST PRZYKŁADOWA KONFIGURACJA PARAMETRÓW TRANSMISJI 9600 b/s - powinna być umieszczona na samym początku obydwu programów. narazie zmontuj układzik i napisz prosty programik (bez przerwań) tak: i teraz tak (wysyłanie jednego bajtu): MOV SBUF,A ; WYSYŁA BAJT Z AKUMULATORA...
Wstawiasz do liczba, a wysyłasz kolejno unia1.bajt[], to podstawienie unia2=unia1 jest zbędne. Pokaż cały program. Czy jak wyślesz więcej niż 64 stałe, to LabView działa?
Nie pomyślałem, że to chodzi o radio. Dzięki :) Nadal zastanawia mnie dlaczego mogę zmieniać ustawienia np. częstotliwość pracy modułu, a nie chce on mi nic wysłać. A skąd wiesz, że możesz? Jak już pisalem wszystkie rejestry są write oprócz status ale w nim nie masz żadnych parametrów konfiguracyjnych (zapisanych wczesniej) do odczytu i porównania....
Chociażby to... :(
Hyper Terminal przesyła dane znakowo, wiec wpisując 32 wysyłasz dwa bajty: pierwszy o wartości 52 (znak 3 w ASCII), drugi o wartości 51 (znak 2 w ASCII). Chcąc wysyłać dowolne bajty przez port szeregowy należało by użyć programu RealTerm lub podobnego.
Nadal w obu kodach wysyłasz tylko 8 bitów... Daj 2x spi_send() z odpowiednimi wartościami z noty katalogowej. Próbowałem równo 10: Mam wrażenie, że nie... SPI w AVR jest niepodzielne i wysyła cały bajt. Resztę teorii wyłożył tmf wyżej.
W radziu wysyłasz więcej bajtów. Może masz złą ramkę ? Ja używam realterm od dawna i działa . Nie wiem jaki masz konwerter, sterowanie sygnałami rts itd może mieć znaczenie
Czy chodzi ci o coś takiego? ' w strDane dajesz ten swój string, co masz go wysłać Dim strDane As String , i As Integer , chrBajt As Integer For i = 1 To Len(strDane) chrBajt = Asc(Mid(strDane, i, 1)) Out &H378, chrBajt ' wysyłasz bajt na port Next i To wysyła po kolei kody ASCII poszczególnych znaków np: Jeśli strDane = "Piotrek" , to na port &H378...
załączyłem cały projekt, przepraszam że nie od razu jest sporo komentarzy, więc nie powinno być problemu ze zrozumieniem moich intencji Załączaj nie cały projekt tylko wszystkie piliki .h .c. skrypt linkera i makefile a reszta to zbędny balast. Po drugie jak wysyłasz coś w oczekiwaniu na pomoc to usuń punkty, nikt nie bedzie dawał ci punktów za to...
Wysyłanie bajtów, a wysyanie tekstu, to dwa różne światy i chyba Autorze nie jesteś tego świadomy.
Interesuje mnie Half-Dupleks na zasadzie - wysyłam z PC bajt i czekam aż wróci np. przy zwartych na module pinów TX z RX. Mam HC05 pod frezarką CNC. Jak powiesz mi jaki program mierzy to opóźnienie to Ci jutro zmierzę.
Witam, odgrzewam temat gdyż dotarłem do maszyny pojawił się problem taki, że połowa przycisków działa, a połowa nie. Podłączyłem klawiaturę do komputera po rs232, przycisk 1 wysyła bajt 0, przycisk 2 wysyła bajty 1,255. Ok sczytalem wszystkie klawisze, część wysyła jeden bajt, część 2. Napisałem program który wysyła w formie wirtualnej klawiatury sczytane...
Nie wiem dlaczego czytasz informacje "z drugiej" ręki, zamiast skupić się na dokumentacji ? Mam tu na myśli książki i jakieś poradniki. Wszystko jest tam idealnie opisane. Nie sprawdzałem tego kodu. Jeżeli nie chcesz przerwań i wystarczy Ci tzw. "polling", to jeszcze prościej. Zakładam zegar na 16 MHz. Inicjalizacja USART0 dla 9600 b/s, 8N1, jako interfejs...
Spokojnie nie wyrywaj włosów - tylko zdecydowanie odpuść sobie właśnie SetPixel bo masz dobre przeczucie że to ci MEGA SPOWALNIA :( musisz wysyłać całe bajty jak wyżej dopisałem a pewnie ten wyświetlacz LCD to umożliwia, niedługo w programie PixelFactory pojawią się opcje konwersji plików bitmap monochromatycznych do wykorzystania na różnych LCD monochromatycznych....
Ja robię inicjalizację w ten sposób: 1. Zegar SPI na najwolniejszy 2. karta przez CS nie wybrana 3. Wysyłam 20 bajtów 0xFF 4. Wysyłam rozkaz GO_IDLE_STATE, (z wyborem CS) aż dostanę odpowiedź R1_IDLE_STATE (limit prób 100) 5. Wysyłam rozkaz SD_SEND_OP_COND, (z CS) limit prób 255, aż będzie odpowiedź 0 6. Wyłączam CRC (może u ciebie jest problem z obsługą...
I tu prośba: -Albo o rady -Albo o jakiś sprawdzony kod inicjalizacji sprzętowego SPI, wysyłania i odbioru -Albo cała biblioteka na ten (lub podobny uC) Jednym słowem za każdą pomoc będę wdzięczny. Podłączenie: DI - PIO0_9 D0 - PIO0_9 SCK - PIO2_11 CS - PIO0_2 Po co w odbiorze zanim cokolwiek odbierzesz wysyłasz 1 bajt? Podeślę Ci kod do sprzętowego...
No to przecież zwykły interfejs SPI. Banalnie proste sterowanie wymagające trzech sygnałów. Najpierw dajesz na CS stan niski, potem razem z sygnałem zegarowym na CLK dajesz dane na SDI. Wysyłasz tak trzy bajty MSB pierwszy.
Nie możesz jeden po drugim, bez żadnego czekania odczytywać czy wysyłać kolejnych bajtów przez I2C. Pomiędzy każdym wysłaniem lub odebraniem muszą być sprawdzane stosowne flagi wskazujące czy transmisja danego bajtu się już skończyła. Początek każdej transmisji musi zaczynać się warunkiem startu, a kończyć warunkiem stopu. Razem z adresem urządzenia...
Tylko nie wywołuj w przerwaniach tak długich bloków instrukcji - lepiej ustaw flagę, która wskaże pętli głównej programu wykonać te instrukcje. Ale co tu możemy mówić, jak widać tylko wycinek programu. Zgadza się, dlatego wklejam nieco więcej Flaga_wybor jest co 10 sekund, Blokada zatrzymuje odczytywanie czujników na czas odbioru DCF77, zwłaszcza DS18B20...
2) wyslasz adres urzadzenia + write, 5) wyslasz adres urzadzenia + read, innymi słowy: 2) wysyłasz bajt 0xD0 5) wysyłasz bajt 0xD1
Pamięć wewnętrzna 2KB - 1514B na ramkę, reszta na stos. Sekcję data, bss oraz opcjonalną stertę wyrzucić do zewnętrznego ramu, chociaż nie wiem na czym niby polega trudność w rzutowaniu wskaźnika - pamięć i wewnętrzna i zewnętrzna są dostępne w dokładnie ten sam sposób. Co do odczytywania przy odbiorze i składania przy nadawaniu można wykorzystać dwie...
Witam, trochę to nie spójne, skoro nie wysyła pierwszego bajtu to nie wysyła komendy MIDI tylko sieczkę, bo te dwa bajty danych są o wartościach 00H-7FH więc żaden instrument na to nie zareaguje a wspominałeś, że MODX reagował więc coś jest nie tak. Nie chodzi o osiąganie poziomu masy czy stromość zboczy ważne aby separował wszystkie bity, nie chcesz...
Problem jest taki, że diody "pokazują" dźwięk z 3-4 sekundowym opóźnieniem. Na początek przełóż strip.show(); za wewnętrzną pętlę for. Nie ma po prostu sensu wielokrotnie wywoływać przesył (który swoje trwa) dla jednej wartości height. A w pętli zostaną tylko mało czasochłonne operacje wpisu do tablicy w RAM (setPixelColor). Operacje w pętli loop,...
Witam Znalazlem bardzo stary procek taki jak w temacie i poszukuje jakiegos prostego programiku do wysylania (odbierania) pojedynczych bajtow z procka do rs232 w komputerze (i w druga strone tez). Schemat uklady mam ale brakuje zawartosci do procesora. Bede wdzieczny za info.
[syntax=c]HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef * hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t * pData, uint16_t Size, uint32_t Timeout ) [/syntax] MemAddress ma długość 2 bajty dla Twojego eepromu, a Ty dalej podajesz jako parametr MemAddSize wartość 1. Stąd jedyne co wysyłasz to jeden bajt adresu - 0,...
A ile tych kB przesyłasz? Przy tej prędkości i sposobie transmisji to max. uzyskasz kilka kB na sekundę. Może wysyłaj i potwierdzaj bloki danych. Np. wysyłasz po kilkanaście bajtów z informacją o ilości bajtów i numerze bloku, mikrokontroler potwierdza dwoma bajtami ile danych dostał i który to blok z kolei. Można dodać też jakąś sumę kontrolną.
Możesz to kolego jakoś bardziej rozwinąć z tym timerem? Jeżeli chodzi o wysyłanie bajtów przez spi to używam timera.
Podłączyłem LGT do analizatora logicznego i wygląda na to, że SPI nie rusza prawidłowo. Zegar tyka, ale reszta sygnałów jest rozjechana. Po porównaniu do biblioteki SPI widzę różnicę, zrobiłem z funkcji od petitFS nowy szkic, pierwszy bajt wysyła OK, kolejnego już nie. Jak zmieniłem funkcję z rejestrami od LGT wysłał kolejny bajt OK: [syntax=c]inline...
A nie trzeba między wysyłanymi bajtami robić opóźnień ?
Witajcie, mam problem z HID-em w STM32F103VB. Chce wysłać więcej bajtów niż, jeden tak jak jest to w przykładach do stm-a. Interesuje mnie transfer z PC->STM. Mój problem polega na tym, że po skonfigurowaniu mikro kontrolera i próbie wysłania pakietu za pomocą SimpleHIDwrite, program wypisuje mi komunikat: "WRITE ERROR: Urządzenie dołączone do komputera...
Dzięki panowie! Ja rozumiałem wcześniej wysyłanie bajta zupełnie inaczej. Niestety układ jest stale na uczelni więc będe miał okazje dopiero jutro to sprawdzić. Jeśli okaże się (a bardzo możliwe) że to głównie chodziło o złe wysyłanie bajtów (wszystkich rozkazów) to "jestem już w domu" ;)
Oscylator wewnętrzny nie nadaje się do wykorzystywania, kiedy w układzie działa USART. Jest on mało stabilny. I stąd pewnie masz błędy. Algorytmy dla CRC są trudne dla implementacji w C# i AVR? No bez przesady. Ale, żeby nie było, że jestem taki zły ;) Dodaj do Atmegi zewnętrzny kwarc (Dobierz odpowiednią wartość zgodnie z datasheet'em). Proste CRC....
A i sama funkcja main() jest do kitu.. Po co wkółko inicjalizować SPI? I koniecznie popraw to Co Ci wyżej napisał michalko12 bo tak jak jest to nie wysyłasz bajtu konfiguracyjnego.. tzn wysyłasz, ale jest nim bajt danych a jako bajt danych wysyłasz zera.
Reset rzeczywiście nie jest podciągnięty do plusa bo przy programowaniu było by zwarcie. Fusebity są nieruszane, a masa w rs232 jest podłączona. Deklaracja $Crystal jest ustawiona na 4000000 - 4MHz. Zauważyłem że to że ramka nie przychodzi przy dotykaniu to przypadek - jak się odsunę od płytki to też nie przychodzi jak powinno. Cala ta komunikacja to...
rs485 wysyłanie bajtu danych odczyt bajtu transmisja bajtu
dławik opornik kabel skrzyżowany unitra gramofon artur
odkurzacz electrolux moduł electrolux moduł
Test UART na Arduino GIGA - Programowanie i Komunikacja Problemy z pinami UART w Arduino GIGA - diagnoza i rozwiązania