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....
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...
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...
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 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, 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...
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...
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].....
Już Ci (at)BlueDraco napisał w czym jest problem [syntax=c]USART_Transmit_String_P((const char *)pgm_read_word(&dni[idx]));[/syntax]
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...
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...
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, 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 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...
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, 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 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...
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...
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, 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...
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...
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:...
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...
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:...
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...
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...
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...
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...
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...
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...
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...
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ę:...
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>...
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...
Rozebrałem układ i wygląda on tak: http://images39.fotosik.pl/152/052ac899b... Kod programu (w części dot. USART): $regfile = "m16def.dat" $crystal = 8000000 $hwstack = 128 $swstack = 128 $baud = 19200 '- zmienne uart ----------------------------------------... Dim Buf(200) As Byte 'Bufor odbioru danych...
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 =="...
Witam Na wstępie powiem że nie jestem ekspertem w C. Pisze programik działający na Atmedze16. Mam dwa dwa układy Ram i RTC i muszę się z nimi dogadać przez SPI. I się nie dogaduje. Zeby zapisać cos i odczytać z Ramu muszę zapisać (dla zapisu) kod rozkazu - 8 bitów, adres komórki zapisywanej - 24 bity i dane - 8 bitów. Przy odczycie analogicznie rozkaz,...
Uruchomiłem bibliotekę FatFS na STM32L i karcie microSD o pojemności 512MB. Na tej karcie wszystko działa. Jednak próby uruchomienia innych kart (2GB, 16GB) zakończyły się niepowodzeniem. Funkcja f_mount po wywołaniu zwraca wartość: FR_OK = 0, /* (0) Succeeded */ Następnie próbuję utworzyć plik i tu pojawia się błąd: FR_DISK_ERR,/* (1) A hard error...
Dzięki wielkie za wskazówki. Tego akurat jeszcze nie znalazłem, aczkolwiek są 2 sprawy: 1) Przykład pod DMA nie działa. (w sensie nic się nie wyświetla na terminalu) 2) Przykład na wake się w ogóle nie kompiluje pod IARem ;) Jestem totalnym laikiem, aczkolwiek naprawdę bardzo mi zależy, żeby to zrozumieć i napisać. Zakładam, że port i MAX są dobrze...
zumek coś namieszał, funkcja atoi zamienia łańcuch na integer czyli zmienna zn powinna być pointerem do stringu, czyli ciągu znaków (zwykle cyfr) zakończonych znakiem o wartości zero. UDR to, o ile się nie mylę USART Data Register, czyli rejestr w którym jest jeden odebrany znak. Nie ma szans, żeby funkcja atoi coś z niego odczytała. musisz czytać kolejne...
Witam. Właśnie staram się zrobić mysz komputerową na atmedze 32 za pomocą biblioteki V-USB. Program testowałem na płytce rozwojowej z kwarcem 16MHz, atmegą 32 i wszystko działało. Po przeniesieniu się na moją płytkę z kwarcem 12MHz i przekopiowaniu kodu, na wyjściach D+ i D- mikrokontrolera nic się nie pojawia, D- stan wysoki, D+ niski. Oczywiście zmieniłem...
aktualizacja nie pomoże. Kompilatr w sumie wszystko napisał. zrób tak: UCSRC = (3<<UCSZ0); i powinno działać. Przecież ja napisałem dokładnie to samo, tylko u mnie widać które bity są ustawione. carkar spróbuj tego: #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <string.h> #define F_CPU 12000000UL...
mamcpy() a string zdefiniowany jako const.
Witam Potrzebuję odebrać z komputera ciąg znaków (tablicę 10 elementową). Korzystam przy tym z funkcji: Poprawiono tytuł. LordBlick
Chciałbym wysyłać jakiś string lub zmienna. A tutaj wysyła się tylko jeden znak. Przecież wysłanie np. ciągu znaków to nic innego jak wysłanie jakiejś ilości pojedynczych znaków. Można dopisać sobie przykładowo taką funkcję: void USART_Transmit_string(char * str) { while(*str) { USART_Transmit(*str); str++; }...
Witam, opracowana została prosta ramka przesyłania danych w oparciu o przerwanie USART_RXC_vect. Wysłanie bajtu 255 z aplikacji informuje mikrokontroler że zaraz otrzyma 5 znaków ASCII które ma załadować do tablicy charów a bajt 254 kończy wpisywanie do tablicy. Tablicę ze znakami wyświetlam na wyświetlaczu LED. LEcz np. wysyłam "186A0" a na wyświetlaczu...
Witam Jako, że od niedawna uczę się języka C postanowiłem zająć się obsługą RTC DS1307. Jeśli komunikacja odbywa się wg noty katalogowej, czyli bez użycia przerwań to wszystko działa. Ja natomiast chciałbym skorzystać z ISR(TWI_vect). twi.c TWI START i dalej cisza...
Napisałem funkcję zamieniającą dobule na char void USART_wyslanie(char znak) { //Sprawdzanie czy bufor jest pusty while(!(UCSRA & (1<<UDRE))){&... UDR = znak; //while(! (UCSRA & (1<<TXC)) ){} } void Double_To_String(double liczba, int precyzja,...
jeśli macie tego typu znaczki: řţř to najprawdopodobniej macie źle ustawioną prędkość w btm, u mnie nie wiem jakim cudem była na 9600 a ja cały czas próbowałem na domyślnej 19200. teraz mam taki problem, napisałem poniższy kod na ATmega168 z kwarcem 20 MHz. http://obrazki.elektroda.pl/5665484900_1... ale jak wepnę moduł VGJ elektronika z btm-222,...
Jeszcze nie zrozumiałes ze s[5] = "start" nie jest prawidłowe? A dlaczego? Kolega powyzej napisał. if((buffer[i] = receiveByte()) == '\n') powoduje ze buffer nigdy nie bedzie zawierac "start" tylko start\n" czyli warunek w strcmp niegdy nie bedzie spełniony. Nie bedzie on spełniony tez z innego powodu - bo nie ma zera na koncu. Proponuje Ci nie uzywać...
Witam wszystkich. Chciałem napisać program który odbierze znak po rs232 i go odeśle. Kod pochodzi z datasheeta atmegi16. Port w komputerze jest dobrze skonfigurowany. Do komunikacji używam terminala v1.8. Atmega niestety nie odpowiada. #include <avr/io.h> #define F_CPU 8000000L // zegar w Hz #define RS_BAUD 4800 #define RS_UBRR F_CPU / 16 / RS_BAUD...
Witajcie, dziękuję za wszystkie posty. Większość okazała się bardzo pomocna. Swoją modyfikację chciałam zacząć od najprostszej zmiany, tj. zmiany konfiguracji modułu bluetooth poprzez komendy AT. Najpierw jednak chciałam przetestować odbiór danych z terminala. Znalazłam program i nieco go zmodyfikowałam, którego celem jest odebranie wpisanej danej w...
aster11: w zupełności się z Tobą zgadzam dlatego pęka mi już głowa. Do wyświetlania wyniku używam funkcji: usart_putf (rxData); z biblioteki AVRLIB. Oto kod tej procedury: void usart_putc(char data) { while (!(UCSRA & 0x20)); // Wait untill USART data register is empty // Transmit data UDR = data; } void usart_puts(char...
Zrobiłem program wykorzystujący do odczytu wyników RS i tak samo jest. Dodatkowo zrobiłem to na ATmega 16. Więc nie mam pojęcia gdzie jest ten błąd.. [syntax=c]#include <avr/io.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdio.h> #include <stdlib.h> #include "string.h"...
Cześć, Jestem w trakcie tworzenia małego projektu. Do obsługi 1wire potrzebuję korzystać z przerwania na PC0. Siedzę nad tym dłuższy kawałek czasu i już naprawdę zgłupiłem. Są dwa kody - jeden ma skonfigurowane przerwania z PC0, drugi z PC1. Dlaczego ten z PC1 działa poprawnie, ten z PC0 nie? Sprawdziłem PB0, również nie działa poprawnie. Wykorzystuję...
Witam, bazując na kilku kodach znalezionych w sieci popełniłem takie oto coś #define USART_BAUDRATE 57600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) #define MAX_INTS 100// number of interrupts to be done volatile int counter = 0; volatile int ms_counter = 0; // number of seconds / 10000 volatile int...
Do rz uć : //procedura wysyłająca stringa void send_string(char *string) { while (*string != 0x00) pc_USART_Transmit(*string++); } a potem : send_string('1');
Powinno się przydać char napis1 [5] = {'R','E','D','Y',0}; usart_tx_string(napis1);
Witam. Na wstępnie kilka informacji: -Mikrokontroler atmega32 -IDE - AVR Studio 4.18 + toolchain z winavr (kompilator avr-gcc). -Debugger - JTag ICE -Konwerter usb <> rs232 - AVR Prog w konfiguracji konwertera. Płytka z procesorem nie zawiera błędów , połączenie mikrokontrolera z konwerterem "zcrossowane" a sam konwerter jest sprawny (testowałem...
Witam Próbuję napisać obsługę pilota, który używa kodowania [url=http://www.ustr.net/infrared/nec.sh... Następnie chcę przesłać kod na okno terminala za pomocą USART. Próbuję to realizować bez użycia funkcji typu delay_ms(), zamiast tego chcę użyć przerwań. Idea jest taka, że po pojawieniu się pierwszego zbocza od odbiornika podczerwieni, wywoływane...
Witam. Łączę się modułem bluetooth z Atmegą po UART, ale coś nie działa. Czy ten kod ma prawo zadziałać? [syntax=c]#define fosc 2000000 #define BAUD 2400 #define MYUBRR fosc/16/BAUD-1 #include <avr/io.h> #include <util/delay.h> #include <string.h> void USART_Init( unsigned int ubrr) { UBRRH = (unsigned char)(ubrr>>8); UBRRL =...
Witam. Po zainicjowaniu komunikacji UART, ustawiam moduł w nieskończoną pentlę, wysyłającą co pewny okres czasu jeden znak. Prędkość ustawiona w BTM - 19200, tak samo inicjuje tą predkość w programie (25.04666=25). Po wgraniu programu do mikrokontrolera(ATMEGA8) rozpoczyna sie wysyłanie danych. I w rzeczywistości komunikacja następuje. Jednak nie wygląda...
potrzebuje przerwania, które w momencie pojawienia się impulsu na Rx odbierze stringa, zdekoduje a następnie wywołała funkcje. Ale nie wiem, które przerwanie z tej strony do tego użyc: void USART_Transmit( unsigned char data ) { while ( !( UCSRA & (1<<UDRE)) ); // Wait for empty transmit buffer UDR = data;...
ISR(USART_RXC_vect) { register u08 c; rxbuff = UDR; if (bit_is_clear(UCSRA, RXC)) { rxbuff = c; flaga.rx_int = 1; // ustaw flage } } Tutaj po coś przypisujesz do rxbuff c, które jest niezainicjalizowane... ?
(at)ElektrodaBot gdy zamieszczam UDR wskazanym przez Ciebie miejscu dioda nie działa. Na jakiej podstawie sądzisz, że kod ma być umieszczony właśnie w tym miejscu? Gdy usunę to część kodu to dioda za pierwszym razem zadziała tak jak w funkcji a za drugim się zapala na stałe. #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h>...
Dzień dobry, Nie bardzo wiem dlaczego otrzymuje taki "dziwny" odczytany z ADC. Powinien mieć około 5000 mV podłączając do vcc a w Realterm pokazuje mi 18. Chyba za długo w to patrzę bo nie widzę gdzie zrobiłem błąd. Mikrokontroler to Attiny3226 FCPU = 20MHz. Kod poniżej: /* #define F_CPU 20000000UL // wewnetrzny kwarc 20Mhz #include <avr/io.h>...
To dotyczy raczej bibliotek C18 niż samych mikrokontrolerów. putsUSART: Write a string from data memory to the USART. putrsUSART Write a string from program memory to the USART. Jeżeli funkcja której parametrem jest wskaźnik do pamięci RAM otrzyma wskaźnik odwołujący się do pamięci programu lub odwrotnie, to odczyta "śmieci". Przy wielu innych funkcjach...
Witam Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc http://obrazki.elektroda.pl/7456669500_1...
Włączyłeś przerwania, jednak nigdzie nie masz procedury obsługi dla RXCIE i TXCIE. Wywołanie przerwania powoduje skok programu pod adres zdefiniowany w tablicy wektorów przerwań, czyli w Twoim przypadku reset procka. Druga sprawa to błąd w tej funkcji. Ona nigdy się nie zakończy, gdyż brakuje inkrementacji wskaźnika s w pętli. Ale zakładam, że to błąd...
Witam Program był testowany fizycznie na kicie uruchomieniowym stk500. Program pisze w celu zbudowania rejestratora danych, moduł pomiarowy będzie połaczony z kitem. Pomiary wysyłane będą do programu rejestrujacego na pc lub po prostu do pliku txt do dalszej obróbki. Początkowo program słuzył jako "odbijacz" danych rs232 , jak coś dostał to od razu...
Witam, Od samego rana próbuje skłonić mojego AVR do współpracy, chcę mianowicie, aby odebrał znak (slowo) w przerwaniu, a nastepnie wyswietlił go na wyświetlaczu LCD i odesłał odpowiedź. I problem jest nastepujący. Jeśli odbieram dane znak(słowo) bez przerwania (po prostu funkcją USART_Receive), to działa, ale jak dodam instrukcje obsługi przerwań to...
Mój kod wygląda teraz tak: [syntax=c] #include <stdlib.h> #include <avr/io.h> #include <util/delay.h> //void setAngle(int angle); //void InitServ(void); #include <inttypes.h> #include <avr/interrupt.h> #include <string.h> #include <stdint.h> #define USART_BAUD 9600UL #define USART_UBBR_VALUE ((8000000UL/(USART_BAUD<<4))-1)...
Jak kolega wyżej słusznie zauważył, potrzebna jest funkcja operująca na RAM. Domyślam się że korzystasz z przykładowych kodów z książki "AVR. Praktyczne projekty"? Nie ma tam buforowanej funkcji UART czytającej stringa umieszczonego w RAM, a więc trzeba sobie taką funkcję dopisać (można też zmodyfikować istniejącą korzystając z tzw named address spaces)....
Dzień dobry! Mam taki kod: [syntax=c]#include <avr/io.h> #include <util/delay.h> //set desired baud rate #define BAUDRATE 1200 //calculate UBRR value #define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1) //define receive parameters #define SYNC 0XAA// synchro signal #define RADDR 0x44 void USART_Init(void) { //Set baud rate UBRRL=(uint8_t)UBRRVAL;...
Po zmianie według sugestii nic sie nie zmieniło... Nawet porozwijałem pętle : [syntax=c] uint8_t reset_pulse() { PORTB &=~(1<<PB0); // bez podciagniecia do VCC/stan niski DDRB |=(1<<PB0); // ustawiam jako wyjście _delay_us(480); // po ustawieniu wyjscia podawany jest stan Lo wiec czekam aż DS18b20 wykryje reset pulse DDRB &=~(1<<PB0);...
Witam Posiadam zestaw uruchomieniowy ATmega8 zl2avr taktowany 1MHz(fabrycznie) i chciałem napisac program przesyłajacy dowolny znak na PC, ma byc odczytywane w hyperterminal. Ale niestety nie mia transmisji zadanego przeze mnie znaku. W trakcie transmisji (wskazuje ją świecaca się dioda) kursor w hyperterminalu mryga szybciej, czyli wnioskuje ze cos...
lcd_string jak widać w kodzie potrzebuje jako parametr wskaźnik na tablicę znaków. Czyli nie to co zawiera UDR - znak. Potrzebujesz użyć funkcji wyświetlającej znaki - poszukaj. Albert
Witam, Nie ma takiego zjawiska w PetitFat żeby czytał coś tam do pierwszego napotkanego zera. Można czytać wszystkie bajty o dowolnej wartości w tym zero, czytać jak ci się żywnie podoba. Święta racja - chyba przedświąteczne zmęczenie.... Błąd był mój w procedurze: [syntax=c]void USART_Transmit_String(char* string) { char znak; while( 0 != (znak = *(string++)))...
Skonfigurowałem USART na dwóch atmegach8 (TX i RX). Zastosowałem prosty kod z noty katalogowej. Do RX podłączyłem LCD. Wyświetlacz cały pokrywa się "krzakami". To samo się dzieje czy uC są połączone kablem TX->RX czy też wysyłam dane przez radio. Konfiguracja LCD jest raczej prawidłowa bo przy wpisaniu tekstu w " " ( LCD_WriteText("mojtekst"); )...
Czy wysyłanie danych (USART_Transmit_string) też działa na przerwaniach i na odpowiedni bufor? Bo wywołujesz tą funkcję w przerwaniu od odbiornika i jeśli to czeka, to czeka tyle ile transmisja kilku znaków - w tym czasie gubisz przychodzące dane. Natomiast jak to masz na przerwaniach, to czy nadajnik posiada bufor, czy jedynie pamięta wskaźnik - w...
Pokaż co robi funkcja send_string();
Problem, w zasadzie coś co jest już wałkowane na forum wielokrotnie, ale mimo przeczytania kilku wątków nie znalazłem odpowiedzi. Otóż potrzebuję zrobić odbiór poprzez uart. Korzystam z Atmegi 32(w zestawie ewaluacyjnym, zewnętrzny kwarc) i środowiska WinAvr. Wysyłanie z mikrokontrolera udało mi się uruchomić, odbioru przez uC nie do końca. Komunikacja...
Wkleje wiekszy kawalek kodu: #define baud ((F_CPU/(predkosc*16UL)&... #define predkosc 4800 #define F_CPU 16000000UL #include <avr/io.h> #include <avr/pgmspace.h> #include <stdio.h> #include <util/delay.h> #include <string.h> #include <stdlib.h> #include "lcd.h" #include <avr/interrupt.h>...
To dalej nie jest dobry kod. Co, wg Ciebie, sprawdza poniższy warunek? Zamiast zerować bufor, zapewne wystaczy poprawnie sprawdzać długość. Zwracając message przez wartość kopiujesz ją jeszcze raz.
Jest to przejściówka "Konwerter CP2102 Niestety nie mam takiej pod ręką to nie obadam jaki ma pull up. Próbowałem z DATA rezystor 480ohm do 3.3V ale nie działało. To według mnie zdecydowanie zbyt niska oporność, jak na obciążenie fototranzystora w transoptorze. Spróbuj coś koło 4,7 - 15kΩ. Od biedy można by spróbować uruchomić wewnętrzny pull...
string usart stm32 usart string growat string
gąsienica czołg astra bezpieczniki schemat zasilacz naprawić przetwornica
bosch wgg244zepl suszarka błędy electrolux
Montaż sprężyny zestykowej w Stihl 026 - krok po kroku Wpływ uszkodzonego czujnika wału korbowego na kąt wtrysku w VW LT 2.5 TDI