Názory ke článku AVR – USART II
27. 11. 2006
to co ste napisal o pouzivani periferie USART je trivialne vyklikanie nastaveni, ktore sa da zvladnut (v CV) aj bez akychkolvek znalosti architektury kontrolera. Ocakaval by som pouzitie GNU kompilatora a aky taky popis periferii a struktury zdrojoveho kodu. Vas pokus o clanok hodnotim velmi negativne, pretoze sa podoba skor na propagaciu firmy HPinfoTech ako serioznemu zdroju informacii o programovani architektury AVR.
Tento clanek ani zadny jiny, neni propagaci zadne firmy. CV jsem zvolil prave proto, ze prace s nim je velmi jednoduha. Pokud Vas zajima prace s GNU kompilatorem, jste na spatne adrese, v dohledne dobe nehodlam o nicem takovem psat. Sam to nepouzivam, protoze CV mi zcela vyhovuje a ja si nebudu zbytecne komplikovat praci prechodem z plne profesionalniho softwaru za nahrazku, ktera by mi prinesla vice prace, nez uzitku. Pro studijni ucely je CV zdarma a maloktery ctenar tohoto serialu bude mit potrebu prejit na neco jineho.
13. 2. 2007
Naopak shledávám tyto články velmi užitečné, protože jsou zde vysvětleny uplné základy, ale to je přesně to, co je třeba aby s tím člověk nějak začal, pokud mu totiž aspoň něco funguje dá se na tom již snadno začít experimentovat a pro pochopení funkce tyto příklady stačí.
5. 11. 2007
Dobry den,
mam otazku zda je polozka "Analog Comparator initialization" uvedena v prikladu zamerne a je tedy tuto inicializaci (vypnuti comparatoru) vhodne pri pouziti USARTu provest. Za odpodved diky predem.
28. 10. 2008
Dobrý den,
Vytvořil jsem (spíše jsem nechal vygenerovat) program obsluhující komunikaci po sériové lince podle Vašeho návodu, ovšem PC přijímá špatné znaky, než které jsou vysílány.
Zdrojový kód:
/****************************************************
Chip type : ATmega16L
Program type : Application
Clock frequency : 8,000000 MHz
*****************************************************/
#include <mega16.h>
#include <stdio.h>
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
ACSR=0x80;
SFIOR=0x00;
putchar(0x41); // tj. znak A
}
Odesílám tedy po sériové lince znak A.
Příjem na terminálu v PC vypadá takto:
Předpokládám, že v kódu chyba nebude. Ovšem nemám žádné zkušenosti s používáním sériové linky, abych určil jiný zdroj chyby.
Prosím tedy zkušeného serio-linkaře, aby mi poradil, kde může být chyba. Díky
Pozn.:
Převodník s obvodem MAX232 a připojení k PC by mělo být v pořádku, je to odzkoušeno s jiným komunikačním zařízením.
1. 6. 2009
Reagoval na komentář od uživatele Jakub U. :
ahoj, mám ten samý problém, podařilo se ti to nějak vyřešit? Díky.
12. 9. 2010
Reagoval na komentář od uživatele Jakub U. :
Protože příspěvek, na který reaguji, odkazuje na obrázek umístěný na serveru, který již nefunguje a tudíž není možné obrázek zobrazit, vložil jsem obrázek na nový server a zobrazit jej můžete zde:
Jedná se o printscreen terminálu