Obiecałem działający programik. Działa na 100%. Jest to progrtam, który wysyła stan temperatury z DS18B20 do kompa, ale dla Ciebie najistotniejszy jest sposób komunikacji. Jest wysyłane zapytanie i uC zwraca odpowiedź. Jak uporasz się z krzaczkami, to program Ci się przyda. Można zrobić bardzo prosty protokół wymiany informacji. #include <avr/io.h>...
https://obrazki.elektroda.pl/2212041800_... Niniejszy projekt to nic odkrywczego, ale może się komuś przyda. Czasem potrzebujemy wygenerować sygnał PWM dla większej ilości kanałów a akurat nie mamy pod ręką dedykowanego układu - tak było w moim przypadku gdy robiłem mały projekt z oświetleniem i wentylatorami przy "modowaniu PC" -...
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...
Witam Poszedłem za twoją radą i odpaliłem najpierw rs232 #include <stdint.h> #include <avr/io.h> #include <util/delay.h> // Define baud rate #define USART_BAUD 9600ul #define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4... void USART_vInit(void) { // Set baud rate UBRRH = (uint8_t)(USART_UBBR_VALUE&g...
//Ustawienie Baud Ratu , po obliczeniach wyszla mi wartosc 12 UBRRH = 0x0;//(ubrr_value>>16); UBRRL = 0x12;//ubrr_value; To jaką wartość wpisujesz? 12 czy 18=0x12? Popraw i pewnie będzie działać.
Witam, Chciałem sprawdzić czy będę dostawał odpowiedzi na wysłany komunikat. W tym calu wrzuciłem poniższy program na ATiny2313. #include <avr/io.h> #include <inttypes.h> //This function is used to initialize the USART //at a given UBRR value void USARTInit(uint16_t ubrr_value) { //Set Baud rate UBRRL = ubrr_value; UBRRH = (ubrr_value>>8);...
Przeniosłem #include na początek, zmieniłem na 4800, ale ten sam błąd :/
Ustawiłem źródło taktowania na zewnętrzny kwarc 14,7456 MHz. Program: http://obrazki.elektroda.pl/1652325000_1... Transmisja przebiega pomyślnie bez błędów, co widać na załączonym obrazku.
Witam! Mam problem z odbieraniem stringów przez USART. Chcę, aby po wpisaniu do terminala na komputerze "abc", mikrokontroler odesłał "OK". Kod programu: [syntax=c]//#define F_CPU 14745600 #include <avr/io.h> #include <util/delay.h> #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) unsigned char...
Jak wrzucę funkcję wyświetlającą wynik na wyświetlaczu wracam do punktu wyjścia. Układ nie odbiera danych z drugiego mikro kontrolera. Bynajmniej tak to wygląda. Nie wiem czy o to Ci chodziło [syntax=c]#include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include "hd44780.h" #define USART_BAUDRATE...
Try this code. Compiled in Atmel Studio 6.2: Main program: http://obrazki.elektroda.pl/5925526400_1... I hope that right now its clear, and this code will work. Unfortunatly i haven't this processor to test it.
Witam, zmontowałem sobie prosty układ do komunikacji z PC. Komunikacja następuje przez przejściówkę USB <>UART opartą o FT232R. Wszystko pięknie działa do momentu, kiedy zmieniam baud rate na <190 - mikrokontroler sygnalizuje, że taki baud rate jest możliwy do ustawienia, natomiast po zmianie w Real term komunikacja nie następuje. Poniżej wklejam...
Dzień dobry:) Mam kolejny problem. Atmega nie może odczytać tego co wysyłam z komputera. Do komputera elegancko wszystko dochodzi ale w drugą stronę już to się nie udaje. Posiadam http://obrazki.elektroda.pl/5367414100_1... (T1OUT to TX a R1IN to RX w ft232) Płytka testowa: http://obrazki.elektroda.pl/7785833400_1...
Witam. Może temat artykułu nie jest za dobry, ale nie wiedziałem jak to opisać dokładniej. Mam taki problem, od kilku tygodni próbuję połączyć Amtege8 poprzez UART z komputerem. Kiedy budowałem przejściówkę opartą o układ MAX232 to chyba spaliłem mój port COM w komputerze bo teraz to nawet echo na tym wejściu nie działa. Na wtyku jest napięcie na wszystkich...
Witam oto mój kod obsługi przetwornika A/C i niestety jest problem w terminalu odbieram tylko same jedynki. #define F_CPU 8000000 #define UART_BAUD4800 #define UBRR(F_CPU/(16ul*UART_BAUD)-... #include <avr/io.h> #include <avr/interrupt.h> #include <string.h> #include <stdlib.h> //Inicjalizacja UARTU void USARTInit(unsigned...
Witam Problem udało się rozwiązać. Przelutowałem jeszcze raz max232. W tej chwili avr odbiera dane (zwraca echem w celu sprawdzenia) a w zależności od wyniku zaświeca jedną z 4 diod. Jest to najprostsza komunikacja Uart dla atmega32 bez buforów i korekcji transmisji jednak dla moich celów w zupełności wystarczy. Dodatkowo wrzuciłem funkcję wysyłania...
Jestem początkujący w programowaniu mikrokontrolerów i mam problem z obsługą przerwań w Atmega8. Mam taki oto, bardzo prosty program znaleziony w sieci: #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> #define F_CPU 1843200 #define USART_BAUDRATE 19200 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE...
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...
Jasne, tu masz całkowitą racje UCSRC |= (1<<URSEL)|(1<<U... tej 3 ma nie być - aż sam sie dziwie,że coś takiego napisałem. Fakt, datasheet wskazuje na te sam adres... Nie zauważyłem tego wcześniej. Dzieki wielkie za to! Ale tematu na wszelki wypadek jeszcze nie zamykam. Dodano po 32 Niestety, dalej...
zamiast TIMSK1 użyj TIMSK gdzie znajdziesz ICIE1 PSRSYNC w M32 nazywa się chyba PSR10 i jest w SFIOR a nie w GTCCR jak w M168 Tak, to dało rozwiązanie, że kod mi się kompiluje. Problem w tym, że na wejście dostaje sygnał 50 Hz (ramka trwa 20ms) a sygnały wysoki w przedziale 0-2 ms. Obojętnie jakie dam wypełnienie (0-2ms) to ciągle na z tego kodu otrzymuje...
Witam, miałem oto taki kod jak poniżej, działał normalnie czyli po resecie wysyłał liczbę 23 w kodzie ASCII. [syntax=c]#include <avr\io.h> #include <inttypes.h> #include <util\delay.h> #include "uart.h" const uint8_t tabela_losowa[16] = {66, 11, 89, 100, 45, 2, 67, 24, 65, 10, 33, 6, 91, 21, 15, 72}; int main(void) { uart_init(); uart_wyslij_int(23,...
Mam problem z ukladem PL-2303 firmy prolific. Pochodzi ze starego kabla do telefonu nokia z USB po stronie PC oraz rs po stronie wyjscia ( 3 kabelki, GND,rx,tx). Testowalem go robiac null - modem, przy uzyciu programu COM Terminal .NET na windows vista ( vista wgrala drivery z netu dla tego ukladu ). Dzialalo swietnie! Dostawalem echo. Układ emulował...
proboje zrobic odczyt pastylek na atmega32. procek dziala wewnetrznym rezonatorze 8mhz. kod wziolem ze strony www.mikrokontrolery.net w orginale mial to byc termoetr ale powinien dzialac ze wszystkim co jest na 1wire przerobilem program tak zeby to co odbiera z 1w wyslyl na rs232 do PC no i nie odbiera nic(0x00) kod: #include <avr/io.h> #include...
Witam Chciałbym się dowiedzieć, gdzie jest problem w programie poniżej. [syntax=c] #include <stdio.h> #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/eeprom.h> #include "encoder.h" #define F_CPU 16000000L #define BAUD 57600 #define MYUBRR F_CPU/BAUD/16-1 #define SET_LED PORTD |= (1<<PD7)...
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 wszystkich mam następujący problem, otóż chciał bym stworzyć funkcję która pobiera z portu rs232 cały napis, który następnie mógł bym przekonwertować do postaci integer, czy double lub inne zmiennej liczbowej. Próbowałem to zrobić w oparciu o własną funkcje uart_get_string ale funkcja pobiera tylko jeden znak. Powyższe potrzebne mi jest do np....
Witam Tak jak w temacie mam napisałem program w bascomie który ma za zadanie zapalać cztery diody led po odebraniu po RS232 cyfr od 1-4 i chodzi to bez problemu ,ale teraz gdy uczę się języka C postanowiłem ten sam program przenieść na C i już nie jest tak dobrze.Objaw jest taki gdy wyśle 1-Zapalają się i gasną diody "STROBO I KULA" gdy 2-Tak sama 3-Też...
Witam wszystkich. Mam taki problem na którym stoję już kilka dni. Mianowicie tak: Posiadam przejściówkę USB-RS opartą o układ PL2303x przez którą to chcę się komunikować z ATmegą16. Przejściówka była dorzucona do zakupionej na wiadomym serwisie aukcyjnym płytki testowej do mikroprocesora. Po podłączeniu przejściówki do portu usb w PC generalnie wszystko...
Używam biblioteki pana Mirka. [syntax=c]/* * mkuart.c * * Created on: 2010-09-04 * Autor: Autor: Mirosław Kardaś */ #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include "mkuart.h" // definiujemy w końcu nasz bufor UART_RxBuf volatile char UART_RxBuf[UART_RX_BUF_SIZE]; // definiujemy indeksy określające ilość...
[syntax=c]#define USART_BAUDRATE 2400 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <inttypes.h> #include <hd44780.c> unsigned char CRC8tab[256] = { 0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15, 0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D,...
Witam serdecznie. Jestem początkującym programistą mikrokontrolerów avr. Większość wiedzy czerpię z internetu, więc nie mam się kogo poradzić w sprawach merytorycznych odnośnie napotkanych problemów. Stąd prośba o pomoc na tym forum. Wymyśliłem sobie projekt współpracy modułu bluetooth HC-06 (były poruszane wątki tego modułu na tym forum) z Atmegą8A....
[syntax=basic4gl] Report : noname3 Date : 10-21-2014 Time : 20:42:39 Compiler : BASCOM-AVR LIBRARY V 2.0.7.5, DEMO Edition Processor : M8 SRAM : 400 hex EEPROM : 200 hex ROMSIZE : 2000 hex ROMIMAGE : 546 hex -> Will fit into ROM ROMIMAGE : 1350 dec FLASH USED : 16 % BAUD : 9600 Baud XTAL : 16000000 Hz BAUD error : 0.16% Stack start : 45F hex Stack size...
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...
#include <iom32v.h> #include <macros.h> #define clk 1 #pragma interrupt_handler timer1_ovf_isr:10 #pragma interrupt_handler uart0_rx_isr:14 #pragma interrupt_handler uart0_tx_isr:16 unsigned int inputs[64]; unsigned int outputs[64]; char databuf[4]; char inputs_addr[4]; char outputs_addr[4];...
Nie no zaraz zaraz. RX uC to jest to co odbiera dane, łączysz to bezpośrednio z TX telefonu ponieważ telefon i tak nie da więcej niż 3,3V a uC działa na 5V. TX uC to jest to co nadaje dane, i tutaj wychodzi sygnał 5V czego telefon nie przyjmie. Skoro układ z diodą nie działa najlepiej, użyj dzielnika napięcia szeregowo 2,4k, potem 2,7k do masy. Co do...
A gdzie jest UBRRH_VALUE i UBRRL_VALUE ??
Spróbuj takiego kodu. U mnie on działa, tyle że na Atmega8535(nie mam ósmej atmegi luzem). #include <avr/io.h> #include <util/delay.h> static void uart(void) //konfiguracja UART wzięta z dokumentacji avr-gcc { #define BAUD 1200 #include <util/setbaud.h> UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; #if USE_2X UCSRA |= _BV(U2X);...
Skorzystaj z tego: [syntax=c] #ifdef BAUD #undef BAUD #endif #define BAUD 19200 #include <util/setbaud.h> UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; [/syntax] oczywiście po przestawieniu "fizycznej" czyli rzeczywistej prędkości zegara np. w AvrStudio, musisz w pliku Makefile zmienić podawaną kompilatorowi wybraną prędkość zegara np.: F_CPU = 8000000...
Witam !! Kolega define i include w funkcji ?? używa :>, zaznaczył kolega kod jako C, To tak można ??
Dziękuje za pomoc w temacie jak już wcześniej napisałem został on przeze mnie rozwiązany, błąd tkwił w złym policzeniu parametru UBRR, dziękuję również za link z informacjami o makrach: [syntax=c] #define BAUD 57600 //tutaj podaj żądaną prędkość transmisji #include <util/setbaud.h> //linkowanie tego pliku musi być //po zdefiniowaniu BAUD //ustaw...
Nie pisałem że to jedyny sposób, i raczej nie ma wiele wspólnego z danym typem AVR-a; zmieni się nazewnictwo konkretnego przerwania ISR, może nazwa rejestru UDR (ja mam tak napisany program do ATmega32). Prędkość wygodnie ustawić: #ifdef BAUD #undef BAUD #endif #define BAUD 19200 #include <util/setbaud.h> UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE;...
Po co zajmujesz się liczeniem? Algorytm i nagłówek setbaud.h zrobią to za Ciebie. Wykorzystaj po prostu funkcję, którą Ci wskazałem ponieważ istnieje jeszcze mnożnik: U2X Masz wtedy pewność poprawnego ustawienia, a przy przekroczeniu parametru błędu otrzymasz warning. Podsumowując, jeżeli zdefiniuje w ten sposob parametry transmisji, to prędkość zostanie...
Do obliczania UBRR możesz użyć makra z <util/setbaud.h>. [syntax=c]#define BAUD 9600 #include <util/setbaud.h> int main() { UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; [/syntax] [syntax=c]UCSRC = (1<<UCSZ1)|(1<<UCSZ0);// <-- tutaj dane lecą do UBRRH zamiast do UCSRC[/syntax] Kiedy zapisujesz do rejestru UCSRC, musisz ustawić...
Ja tak inicjalizowałem tinego: UCSRC = 1<<UCSZ1 | 1<<UCSZ0; UCSRB = (1<<RXCIE)|(1<<T... // 8 Databits, receive and transmit enabled, receive complete interrupt enabled #define F_CPU 11059200 #define BAUD 9600 #include <util/setbaud.h> UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; Spróbuj...
Witam. Pocę się przy pisaniu w AtmelStudio 6. Mam problem z konfiguracją wspomnianego USART-a. Używam, a przynajmniej próbuję tym kodem: [syntax=c]#include <util/setbaud.h> void USART_Init(void) { UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; UCSRC=(1<<URSEL)|(1<<UCSZ1)|... UCSRB=(1<<RXEN)|(1<<TXEN); }[/syntax]...
Mam taki kod [syntax=c]#define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <string.h> #include <avr/pgmspace.h> #include <avr/sleep.h> #include <util/delay.h> volatile unsigned char odb_flaga = 0; char liczba; void usart_inicjuj(void) { #define BAUD 9600 #include <util/setbaud.h>...
Zamiast opracowywać własny wzór obliczania parametrów prędkości transmisji, wystarczy wykorzystać setboud.h : jest stratą mocy obliczeniowej . Wystarczy wykorzystać przerwania: http://mikrokontrolery.blogspot.com/2011... I drobna uwaga - nie definiuj F_CPU w kodzie z tych powodów: http://mikrokontrolery.blogspot.com/2011...
Ustawiasz USART0, a próbujesz wysyłać przez USART1. W tym fragmencie zgubiłeś średnik po while: [syntax=c]void USART_Transmit(unsigned char data) { while(!(UCSR1A & (1<<UDRE1)) ) UDR1 = data; }[/syntax] Nie chce mi się weryfikować, czy dobrze ustawiasz baudrate, przelicz sobie, albo wstaw w kodzie wzór wg noty, albo użyj takiej konstrukcji:...
Witam, Problemy rozwiązałem wczoraj w nocy, zapomniałem napisać ;) Już wszystko działa, problem chyba był w tym: [syntax=c] #include <util/setbaud.h> UBRR0H=UBRRH_VALUE; UBRR0L=UBRRL_VALUE; [/syntax] Całość zamieniłem na to: [syntax=c]#define BAUD 9600 #define MYUBRR F_CPU/16/BAUD-1 void USART_Init( unsigned int ubrr) { /*Set baud rate */ UBRR0H...
To program który musiałem przerobić: http://obrazki.elektroda.pl/1371139000_1... To program który zrobiłem na bazie danych katalogowych atmega 8: Źle dodane obrazki usunąłem. Mirek Z.
diode value audigy value narzędzia value
karta pamięci uszkodzona alarm mieszkania satel 65535 internal control
milwaukee dioda engine fault peugeot
Alpine INE-W990BT – demontaż radia 2-DIN, klucze, złącza, procedura krok po kroku Kody serwisowe ecoMAX 800 PLUM – lista kodów, dostęp do menu, parametry, alarmy