Tablice wartosc1,wartosc2,wartosc3 są zbyt małe muszą mieć po 3 elementy. W funkcji hextoul tratujesz przekazaną zmienną jako string kończący się 0, a w tablicach nie masz już miejsca na koniec stringu. Dalej nie przeglądałem.
Raczej nie może działać prawidłowo, zmienna Z jest typu String. Przed dzieleniem należy przekonwertować String do zmiennej liczbowej: [syntax=basic4gl]Dim Z1 As Byte ' ' Z1 = Val(z) Y = Z1 / 9[/syntax]
Nie wystarczy itoa? http://pl.wikibooks.org/wiki/C/itoa Ja wiem, wiem - biblioteki zwiększają zajętość flash... , ale myślę (w tym przypadku), że jeżeli projekt jest mały i masz jeszcze trochę flash'a i RAM oszczędzanie - poprzez pisanie własnych funkcji konwertujących int na string nie ma sensu. Ale wracając do twojego kodu: W twoim przykładzie brak...
No dobra. Wywal wszystko na linii Tx telefonu do Rx procesora. Ma być połączenie bezpośrednie. Na drugim kierunku zostaw tak jak masz. Poniżej kod do testów. Powinien działać. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $baud = 19200 Config Lcd = 16 * 2 Config Serialin = Buffered , Size = 100 Enable Interrupts 'Declare Sub Oproznij_bufor...
atom1477 napisał: No właśnie. A BASCOMowi są one obce I właśnie z tego powodu sam optymalizuje sobie kod programu. Wiem, gdzie, co i jak. jacynka84 , zamiast : Wciąż nie wiem jak działa bascom...;] Jeśli nadal Będziesz bazował na Bitwait itp. to w dalszym ciągu się nie dowiesz jak działa. I ja się bałem zapisywać bezpośrednio do rejestrów (adresów)...
Ło matko! ludzie co wy tu opowiadacie? Jarosław J - odnośnie twojego problemu ale już konkretnie: 1. Możesz najspokojniej w świecie przy komunikacji dwóch procków zrobić tak, że jeden będzie taktowany wewn oscylatorem a drugi np. kwarcem (Żaden problem) !!! 2. ale używaj sprzętowego UARTA w Bascomie a nie to co tutaj wszyscy razem wyczyniacie ;) 3....
USART_Send_String(USART3, "powrot "); ma wysłać do USART informację o przerwaniu. Narazie jest to test czy w ogole przerwania się wykonuje. W konfiguracji jest odblokowanie przerwania od Rx -> USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); Czy podczas wywołania przerwania musze podawać ten argument? Co do sprawdzenia źródła przerwania. Czy w sytuacji...
Witam, mam problem który wymieniłem w temacie. Nie mogę "zmusić" mojej Atmegi by wysyłała dane do komputera. W układzie zamontowana jest Atmega328P, układ FT232RL oraz dwie diody sygnalizujące transmisję. Gdy wysyłam coś z komputera do układu, to widać, że dane przechodzą bo świeci się odpowiednia dioda (czerwona). Korzystając ze strony http://hekilledmywire.wordpress.com/2011...
W VB mam takie funkcje do wysyłania i odbierania danych RS232 Dodano po 1 Zmieniłem funkcję odbierania danych w VB i zaczęło się ściągać. Dodano po 1 W zasadzie opanowałem transfer danych w obie strony. Pozostał problem z wyświetlaniem na wyświetlaczu LCD kodów znaków zamiast znaków (funkcja 'itoa (data,str,10);LCD_WriteText(str);' ).
Witam, właśnie przerabiam kolejne ćwiczenie z książki J. Dolińskiego, ale przechodząc do rzeczy... Chcę wysłać kolejno w pętli za pomocą funkcji "WyslijTekstROM" 3 kolejne stringi, jednak przy wysyłaniu pojawia się następujący problem, że tylko ostatni string wypisywany jest na terminalu cały, a 2 początkowe są poucinane. Sądzę, że problem może leżeć...
USART to nie USB czy ETH gdzie dostajesz bardzo często całą ramkę danych, np w ETH ok 1400znaków, USB1.1 8 znaków, USB2.0 64 czy nawet 1kB jeśli mamy na myśli klasę CDC. W USART, dane napływają znak po znaku. (w USB czy ETH też ale użytkownikowi przekazywana jest większa porcja danych po zweryfikowaniu CRC i ewentualnych powtórzeniach transmisji). [syntax=c]Serial1.available()[/syntax].....
Jeśli chodzi o cmd_timeout to chodzi o to, że wejscie RX kiedy pin używany jest przez USART nie jest niczym podciągane. Kiedy jest podłączony do drugiego urządzenia np. procesora lub MAX485 to problemu nie ma bo pin jest podciągany wyjściem TX tego uC lub MAX485. Kiedy jednak odłączysz to na pinie stan jest nieustalony i wpadają na USART śmieci. Ten...
Co może być przyczyną tego, że zamiast wysyłanego "hello" odbieram w termianlu "hhhhheeeeeellllllllllllllllllllloooooo"... Dodam, że przy wyłączonym DMA nic takiego nie ma miejsca. http://obrazki.elektroda.pl/2733352900_1...
Problem już prawie rozwiązany, gdyż moja lista z projektami świeciła się jak choinka za sprawą tych samych, złych bibliotek. Poprawiłem już prawie wszystko, ale chce się upewnić co do jednego. Czy w kodzie który zamieszczam wystarczy usunąć "||" czy coś tam powinno być? W pliku źródłowym na jakiejś stronie internetowej też tego nie ma, więc nie usunąłem...
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...
Witam Używam płytki STM32F4 Discovery. Muszę odczytać sporą ilość danych, więc UART wydaje się jedynym rozsądnym rozwiązaniem. Poniżej kod, którego używam (sugerowałem się kodami z różnych stron). [syntax=c]#include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "misc.h" // I recommend you have a look at these in the ST firmware folder #include...
Witam czy może ktoś spojrzeć na ten prosty kod i powiedzieć gdzie tkwi problem. Gdy wysyłam jakiś znak z klawiatury przez Hyper-Terminal, to procesor ma go od razu zwrócić, a on zwraca jakieś dziwne znaczki. Dodam, że w obsłudze przerwania występuje takie ostrzeżenie przy kompilacji: "usart.c:60: warning: passing argument 1 of 'USART_puts' makes pointer...
Szukałem na internecie poradników do terminala UART i udało mi się zrobić coś takiego z kawałków znalezionych w sieci. Problem polega na tym, że mój kompilator wyrzuca błędy a nie pokazuje mi gdzie one są (i tym samym nie mogę ich skompilować) i jeśli ktoś może sprawdzić poprawność kodu w 1. i 2. main.c(są to dwa odzielne programy w dwóch projektach...
Witam, Mam problem dotyczący odczytu danych z modułu GPS. Protokół NMEA (GGA oraz RMC). Piszę trochę w C, ale nie czułem się na tyle dobrze z obsługą tego, więc skorzystałem z przykładu. Rozumiem co dzieje się w kodzie, ale program się zawiesza lub zapętla. Wydedukowałem, że problemem jest pętla for w funkcji get_gpstime(). Tak jakby kontroler nie rozpoznawał...
Witam, Próbuję korzystać z biblioteki Peter Fleury do obsługi usart-u, której listing znajduje się poniżej: PLIK uart.c /***************************************... Title: Interrupt UART library with receive/transmit circular buffers Author: Peter Fleury <pfleury(at)gmx.ch> http://jump.to/fleury File:...
Witam! Zacznę od tego, że jestem raczej laikiem z programowania STM-ów. Ale nie jestem też leniem, że znajduję gotowca, kopiuję i liczę na to, że będzie działać. A jak nie działa to lipa. Staram się to zrozumieć i znaleźć problem. ;) Niestety brak wiedzy sprawił, że wymiękłem i pomyślałem, żeby zapytać na forum. Co chcę zrobić: Podłączam bluetootha...
No poczytałem sobie o przerwaniach dokładniej, jednak nadal nie widze rozwiązania mojego problemu. Program tak jakby gubi znaki, albo pętla while nie kończy się gdy kończy się ciąg (poniżej przykładowa próba komunikacji, korzystałem z Herculesa, znacznikiem [b]123456[/b][b]...
Proszę. Nie wiem czy koledze udało się rozwiązać problem, ale jak miałem chwile to się podzielę ze wszystkimi. ESP8266 mam na NodeMCU i wole tam go oprogramowywać, ale chciałem się pobawić komendami AT więc podłączyłem go do Xmega bo to cacko jest też 3 voltowe i posiada nawet 7 interfejsów USART :D Na drugim COM zrobiłem sobie taki Debug. Program reaguje...
Witam Mam problem z odpaleniem usarta na atmedze16. Problem tym bardziej irytujący, że już kiedyś to zrobiłem i myślałem, że teraz podłącze wszystko będzie śmigać. W sumie nie wiem gdzie sedno problemu, bo program ten sam, a wygląda tak: #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <string.h> #define...
Witam W zasadzie już zbliżam się ku koncowi stacji meteorologicznej z wykorzystaniem atmegi8 i PC. Z uwagi na funkcje jakie musze wykorzystać a wiec timer i USART wystapił problem. Wykorzystując timer1 generuje przerwanie co sekunde i licze czas aktualny. Podczas połączenia z komputera wysyłam na zasadzie: 1 znak z PC, a w odpowiedzi z Atmegi string...
Po pierwsze proponowalbym zmienic troche ta funkcje: void wyslij_znak(unsigned char znak) // bylo: unsigned int { if (znak == '\n') znak = '\r'; // bylo: wyslij_znak('\r'); while (!(UCSRA & (1<<UDRE))); UDR = znak; } A tak w ogole to masz moj fragment kodu: :D typedef unsigned...
Witam, otóż zasilam owy wyświetlacz napięciem ±3.3V, a także stany logiczne są na tym poziomie. Pin kontrastu jest podpięty bezpośrednio do masy, kontrast wizualnie wydaje się być dobrany idealnie. I problem w tym, że pixele bardzo wolno się zapalają.(wyszło mi ok. ~300ms na pełne zaświecenie pixela) Czy jest to jest maksimum wyświetlacza, czy...
Witam Zrobiłem sobie taki interpretator poleceń, że jak po USART przyjdzie komenda (string zakończony odpowiednimi znakami) to zmienna read_line jest ustawiana na 1 , a następnie funkcja strncmp(...) porównuje odebrany string (bufor) z wpisaną na stałe komendą, jeśli wynik, któregoś z porównań będzie prawidłowy, to wykona sie żadany kod i program skoczy...
Witam, zabralem sie za komunikacje USART miedzy PC a atmega. Znalazlem juz jak napisac wysylanie i odbieranie pojedynczego znaku oraz wysylanie stringu, ale nigdzie nie moge znalezc jak odebrac stringa np. wysylam przez Docklight "jakies zdanie" i wysylam to na LCD. funkcje jakie mam: void nadajznak(char dana1) //wyślij znak { while(!(UCSR1A&(1<<...
Najpierw trochę uszczypliwości - co każe ci myśleć, że twój program jest napisany w C++? Skąd informacja, że float zajmuje 2 bajty? A teraz rozwiązanie - można konwertować liczbę na string i wysyłać string - wada - string zwykle będzie dużo dłuższy niż przesłanie po prostu floata. Ale ma też zaletę - uniezależnia cię od endianess na komputerze odbierającym...
Ten twój send string jest strasznie zamotany :( zamiast tak: void UARTSendString(char *data) { int dlugosc, k =0 ; dlugosc = strlen(data); for(k = 0; k<dlugosc; k++) { UARTSendChar(data[k]); } } nie lepiej zrobić tak void UARTSendString(char *data) { while(*data) UARTSendChar(*data++);...
Przykład dla F051, ale podejrzewam, że na F4 będzie tak samo: Inicjowanie DMA w main: [syntax=c]DMA1_Channel2->CMAR = (uint32_t)time; DMA1_Channel2->CPAR = (uint32_t)&USART1->TDR; [/syntax] W przerwaniu timera: [syntax=c] if (upd_time) { // init DMA for time string transfer DMA1_Channel2->CCR = 0;// disable DMA1_Channel2->CNDTR = sizeof(time);// no....
Witam Mam pytanie dotyczące transmisji RS232 w atmedze8 do komputera. Chodzi o wielkość bufora w USART. Realizuje komunikacje z komputerem w sposób: wysyłam w petli znak, mikroprocesor w odpowiedzi wysyła ciag znaków po 10, po odebraniu w komputerze wysyłam nastepny znak i tak 10 razy obecnie. Z moich obserwacji wychodzi na to ze bufor moj musi miec...
A oto prosta funkcja (kompiluje się w najnowszym AVRStudio) :D : #include <ATmega8535.h> .include "m8535def.inc" ; Prohibits use of non-implemented instructions (ATmega8535) #define XTAL 11059200 #define USART_BAUD 19200 #define _UBBR(_X,_X_BAUD) ((_X/(16*_X_BAUD))-1... #message "_UBBR =="...
Niemożność zmiany rozmiaru tego mizernego bufora to rzeczywiście fatalna wiadomość. Napiszę w czym jest rzecz ale prawdopodobnie nie jest to wina tego ubogiego bufora ponieważ myślałem, że wynosi on 8 bajtów a nie 1 bajt. Posiadam konwerter uart-ethernet, który podłączyłem do ATmega8A (wykorzystuję na chwilę obecną tylko linię Tx uC) i dla testu wysyłam...
Chcę zaprogramować sterowanie Komendami AT. Coś typu połączenie > rób program Połączenie > przerwij program. Próbowałem dostosować kawałek programu dla Atmega 8 z "Powiadamianie GSM" (było kiedyś w DIY) Kompilator zwraca mi błąd: Error: 7 Line: 0 IF THEN expected [96], in file: Error:123 Line: 0 END IF expected, in file:...
Co się tyczy odczytu UCSRA: "Doing a read access to the UBRRH or the UCSRC Register is a more complex operation. However, in most applications, it is rarely necessary to read any of these registers. The read access is controlled by a timed sequence. Reading the I/O location once returns the UBRRH Register contents. If the register location was read...
Wpisałem następujący kod: /***************************************... Title: example program for the Interrupt controlled UART library Author: Peter Fleury <pfleury(at)gmx.ch> http://jump.to/fleury File: $Id: test_uart.c,v 1.4 2005/07/10 11:46:30 Peter Exp $ Software: AVR-GCC 3.3 Hardware:...
a zastanowiłeś się co stanie się ze znakami ENTER jeśli je w ogóle używasz ? a jeśli nie to źle To pierwszy słuszny zarzut, znak Enter (czyli znak przejścia do początku następnej linii) jest automatycznie wysyłany przez Basom, a dokładniej instrukcję Print. Dlatego wskazówka - przesyłaj je przede wszystkim jako znaki ASCII. A ty nie pokazałeś jak robisz...
Funkcja czekająca na odpowiedź z modemu powinna czekać skonczony czas na oczekiwany string, przy czym jest bardzo ważne to, aby oczekiwany string zawierał ostatnie znaki z całego stringu odpowiedzi modemu. W Twoim przykładzie gdy modem odpowiada: CMGS: 59 OK To modem tak naprawde wysyła znaki: CMGS: 59\r\n\r\nOK\r\n Funkcja czekająca na odpowiedź w...
Spróbuj wyświetlić tekst polecenia przed porównaniem go z tablicą nazw poleceń. Niestety, ale właśnie to robię i to nawet w kodzie który zamieściłem fprintf wysyła tekst na jeden z dwóch portów USART z których korzystam. Tekst wyświetla się właściwie, a tablica nie zwraca indeksu czyli strcmp_P nigdy nie jest 0. W samej pętli z porównaniem też wyświetlałem...
ten KOD bez błędów raczej i kompiluje się [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #define p0 0x01 #define p1 0x02 #define p2 0x04 #define p3 0x08 #define p4 0x10 #define p5 0x20 #define p6 0x30 //#define F_CPU 1000000 // tu definiujesz wartość uzywanego kwarcu void InitUSART( unsigned long int baud...
Proszę. Dosłownie 5 minut bo niektóre rzeczy przekleiłem ze swoich programów. Reaguje na komendy LEDON ->właczy diodę na PORTD.2 i na LEDOFF wyłaczy tą diodę. Prędkość transmisji domyślna dla mojego HC-05 czyli BAUD 38400 [syntax=vbnet]$regfile = "m328pdef.dat" $crystal = 8000000 $hwstack=64 $swstack=32 $framesize = 128 $baud = 38400 Config Clockdiv...
Kod przerwania od odebrania danych przez USART od gps'a jest u góry, ale jeszcze raz go podam: [syntax=c] ISR(USART1_RX_vect) { /*######################DIAGNOSTIC TOOL#########################*/ /*USART_Transmit(0x14, USART_Engine);*/ GPS_buffer[GPS_buffer_index] = UDR1; if (GPS_buffer[GPS_buffer_index] == '$') { GPS_buffer_index = 0; buffer_initial_index...
Witam, mam problem z danymi przesyłanymi przez usart. Projektuję kontroler obrotów wentylatorów. Co 1s wywoływane jest przerwanie od timera0, w którym wysyłane są dane o temperaturze i wypełnieniu PWM dwóch wentylatorów (dane w HEX, niebieskie cyfry i litery w terminalu na zdj. 2). Chciałbym, aby dane te były wpisywane w odpowiednie pola do tego przeznaczone...
Poprzedni kod wysyłał setki razy ten string a nie jeden raz - o jakiej ty pętli sprawdzającej mówisz? - gdy zworka była naciśnięta to w tej twojej pętli był on wysyłany wielokrotnie aż do jej skończenia. Albo z uwagi na bliżej nie określony czas trwania tych twoich pętli mógł być w ogóle nie wysłany. Nie znasz pan takich poleceń w AVR GCC jak: _delau_ms()...
Witajcie, w jaki sposób można optymalnie odczytać przesłany (aż do znaku nowej linii / powrotu karetki) ciąg znaków od przerwania otrzymania danych? /* * Sterowanie przez RS232 (main.c) */ #include "defines.h" #include <ctype.h> #include <stdint.h> #include <stdlib.h> #include <stdio.h> #include <avr/interrupt.h>...
Nie napisałeś jaki to procesor. Przykładowo dla Atmega8/Atmega32 wystarczy gdzieś napisać UCSRB.TXEN = 0 Dla Mega328P UCSR0B.TXEN0 = 0 Mowa o Atmega16. Instrukcja UCSRB.TXEN = 0 rzeczywiście działa ale tylko do czasu, kiedy nie połączę się z drugą Atmegą. Tak wygląda początek programu dla Atmega16 (odbiornik): Dodano po 2 Znalazłem jeszcze taką informację:...
Podsyłam prosty programik z polskiego helpa do bascom-avr. Bardzo dobrze obrazuje zasade wysylania i odbierania sygnalu szeregowego. Wiem, że niby temat jest zamknięty, ale może kolega jeszcze tutaj zerknie, a jak nie, to będzie dla innych :) '---------------------------------------... ' RS232BUFFER.BAS ' (c) 2000-2002, MCS...
Twój kod jest fundamentalnie błędny. Nie możesz w sposób asynchroniczny zapisywać tablicy data w pętli głównej i wysyłać jej zawartości w przerwaniu. Pomyśl co się dzieje jeśli jednoczesny dostęp do tej tablicy uzyskuje dtostrf i przerwania - robi się sieczka. Taki dostęp wymaga utworzenia semafora lub prościej atomowo skopiować tablicę data do miejsca...
usart string stm32 usart string growat string
rozebrać pilota sharp parkside adapter router szerokopasmowy
wkrętarka milwaukee interfejs delphi
Naprawa błędu balancera w telewizorze Sony Kolory przewodów CAN w Mercedesie W213 PTCU