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 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...
Na razie chciałbym sprobować zrobić bez przerwań. Wysyłam z programu. [syntax=c] #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #define BAUDRATE 9600 #define BAUD_PRESCALLER (((F_CPU / (BAUDRATE * 16UL))) - 1) //Declaration of our functions void USART_init(void); unsigned char USART_receive(void); void USART_send( unsigned...
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, 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 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, 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, 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...
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...
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...
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 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...
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...
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,...
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...
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...
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...
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()...
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...
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ę:...
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...
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>...
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...
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...
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...
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 =="...
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...
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...
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...
Już Ci (at)BlueDraco napisał w czym jest problem [syntax=c]USART_Transmit_String_P((const char *)pgm_read_word(&dni[idx]));[/syntax]
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++; }...
mamcpy() a string zdefiniowany jako const.
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... ?
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...
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,...
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...
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 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...
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"...
Dzięki za biblio ;) Ja korzystam od dawna z bibliotek od Mirka z BlueBooka lekko przeze mnie zmodyfikowanych. Odświeżam temat bo jednak mam problem: http://obrazki.elektroda.pl/2645882300_1... http://obrazki.elektroda.pl/2587616400_1... http://obrazki.elektroda.pl/8131694900_1... http://obrazki.elektroda.pl/2415856600_1...
Ja na szybko złożyłem układ z AVR32DB28 bo taki akurat mam pod rękom. I wykorzystałem SPI1 (od PC0 od PC3, MOSI, MISO, SCK, SS) do komunikacji z MAX31865 i UART0 do wyświetlania wyników. I oto kod który użyłem: https://obrazki.elektroda.pl/9666089600_... https://obrazki.elektroda.pl/8604180000_... A i akurat miał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...
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');
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, 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...
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...
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++)))...
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...
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ę...
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,...
no tak, przecież mogę zrobić to tak: [syntax=cpp] ISR(USART1_RX_vect ) { char temp; temp=UDR1; USART_Transmit(temp); } [/syntax] a cały kod wstawiam tutaj: [syntax=cpp]#include <avr/io.h> #include <inttypes.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <avr/pgmspace.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. 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...
Pokaż co robi funkcja send_string();
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...
Witam. Nie posiadam wyświetlacza LCD ani 7segm. chciałem nauczyć się obsługi DS18B20 niestety na ekranie terminalu do odbioru sygnału z RSa widnieje dziwna wartość "1360" . UART działa poprawnie. Procesor to Atmega8 z wewnętrznym 8MHz, czujnik podpiłem do PB0 i dałem rezystorek 4,7kłoma. Proszę o jakaś sugestie. #define F_CPU 8000000UL // 8 MHz #define...
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)....
Witam, poradziłem sobie z problemem kupując po prostu nowe układy - tym razem MCP3021 bo na tme dostępne jest ich wiele wersji adresowych. Wybrałem wersję z adresem 000 (A0), oraz wersję z adresem 011 (A3). Napisałem prosty programik, fajnie wszystko czyta, ale jest jeden problem, że pomiar zaniżony jest o jakieś 0,2V... Czasami, bardzo rzadko wskoczy...
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
Errata: #include <string.h> void print(char *txt) { unsigned char p; int txt_len = strlen(txt); txt += txt_len - 1; // indeks while( txt_len > 0 ) { if(p==16)p=0; USART_Transmit(0x10); USART_Transmit(p); USART_Transmit(*txt); txt --; txt_len --; p++; } }
A co na to woltomierz? Widzi jakieś zmiany? I skoro ustawiłeś wzmocnienie na tysiąc, czyli zmiana o 1mV da zmianą na wyjściu o 1V. To dlaczego ustawiłeś Vref na 1.024V? I z twoich kodów przetestowałem to: https://obrazki.elektroda.pl/4276604500_...
Witam :) Od kilku dniu usiłuje odpalić bibliotekę FATfs ze strony #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/interrupt.h> #include <string.h> #include "xitoa.h" #include "ff.h" #include "diskio.h" #include "integer.h" #include "usart.h" #define BAUD 9600 #define...
Mam ta samą płytkę. Może pobaw się tak jak ja: wysył przez DMA, odbiór w przerwaniu oto co starczy: [syntax=c]void SYSTEM_DMAConfig() { DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(DMA1_Channel4); DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)(&USART1->DR); DMA_InitStructure.DMA_MemoryBaseAddr = (u32)SYSTEM_USART1BufferTx; DMA_InitStructure.DMA_DIR...
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...
Witam serdecznie. Napisałem prosty program do pomiaru częstotliwości. Chcę wykorzystać TIMER3 do pomiaru częstotliwości. Na wejście podaję sygnał prostokątny z generatora. Nie jestem pewien czy na wejście T3, czy na ICP3 powinienem podawać badany sygnał, ale program nie działa w obu przypadkach. Poniżej prezentuję kod programu i proszę o pomoc, co robię...
Powinno się przydać char napis1 [5] = {'R','E','D','Y',0}; usart_tx_string(napis1);
To mój plik z obsługą 1Wire [syntax=c]/*ds18b20.c*/ #include <avr/io.h> #include <util/delay.h> #include "ds18b20.h" #include <avr/interrupt.h> /*RESET*/ unsigned char uc1Wire_ResetPulse(void) { unsigned char ucPresenceImpulse; OUT_1WIRE_LOW; DIR_1WIRE_OUT; cli(); _delay_us(500); sei(); DIR_1WIRE_IN; cli(); _delay_us(45); sei(); if(bit_is_clear(PIND,PIN_1WIRE))...
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...
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...
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;...
Witam. Mam problem z transmisją do kompa. Przeglądałem forum ale nie moge znaleść odpowiedzi na moje pytanie. Atmega ma wysyłać po rs do kompa znaki ale nic w teminalu sie nie pojawia. Mam ustawioną predkość transmisji na 19200. Kwarc 12MHz. kod wygląda tak: #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include...
Yoshi_80 : Wytłumacz może co dokładnie rozumiesz pod pojęciem "zapętlić" - czy wysyła cały czas tylko pierwszy znak (restartowanie się procesora przy wychodzeniu z funkcji USART_Transmit spowodowane istnieniem stosu w obszarze niezapisywalnym - najczęściej ustawiony fusebit związany z kompatybilnością z innym prockiem) czy powtarza całość (może jawnie...
usart string stm32 usart string growat string
ducato kopci czarno alpine kostki laguna grzanie szyby
Itron Noritake FG169G2 VFD Display Datasheet Access Rolka gumowa do kamery Sony DCR-HC14E - wymiana i naprawa