CodeVision AVR printf funkce pro druhé UART! Potřebujete pomoci

E

ECSD

Guest
Ahoj kluci: Někdo tam použít CodeVision C kompilátor s ATMEGA162? Já jsem snažil se přijít na to, jak používat printf, staví, scanf funkce pro oba UART. Jakýkoliv nápad, nebo příklad kódu? Jsem pomocí přerušení pro UART a nakonfigurovat ji CodeWizardAVR. Ale prinf, scanf, dá nejsou podporovány! Pouze putchar podporované pro oba USART. ! Naléhavou pomoc potřeboval! Díky
 
CodeWizard vygeneruje tento kód pro vaše USART1:
Code:
 / / Získání znaku z USART1 přijímač # pragma používá + char getchar1 (void) {char stav dat; while (1) {while (((status = UCSR1A) & RX_COMPLETE ) == 0); data = UDR1; if ((stav a (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN)) == 0) vrátit data;};} # pragma-použít / / zápis znaku USART1 vysílač # použít pragma + neplatné putchar1 (char c) {while ((UCSR1A & DATA_REGISTER_EMPTY) == 0); UDR1 = c;} # pragma-použít
# pragma použité + se rozumí následující funkce poté přepíše Standardní printf atd. základní rutiny (přesměrování na UART1).
Já jsem snažil se přijít na to, jak používat printf, uvádí, scanf funkce pro oba UART.
Není možné použít jak UART0 a UART1 pro printf apod., s výjimkou yopu napsat svůj vlastní.
 
Ahoj budhy: Díky za Vaši odpověď. Ano, i pochopit. Já jsem za použití putchar1 a putchar0 nyní. Ale já se chcete dozvědět více, jak napsat vlastní printf1 a printf0, puts0 & puts1 a etc až po více než psát stdio funkce. Doufám, že se trochu například kód z někoho se zkušenostmi. Pomocí funkce printf scanf k dispozici jak pro USART, můžeme použít pro komunikaci s GSM modemem, PC a dalších zařízení, protokol ASCII snadněji, protože ATMEGA přichází s 2 USART ... Přál bych si, aby přepsat scanf na scanf0 & scanf1, takže mohu využít srozumitelnější vysoké úrovně C ve svém kódování pro hlavní rutiny. A doufám, že se dozvíte více o tom, jak napsat vlastní funkci, která mi umožňuje přepsat stdio pro další zařízení, jako jsou SPI a I2C.
 

Welcome to EDABoard.com

Sponsor

Back
Top