|
Оператор "printf" и функция "putchar" для работы с символьным LCD |
|
|
|
Mar 19 2010, 11:47
|

Профессионал
    
Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215

|
не понимаю, что за беда с выводом. Прописал "putchar" в виде: Код void putchar( char c ) { if ( !c ) return( 0 ); Transmit_Byte( c ); /*функция отправки сообщения в последовательный порт*/ } LCD оснащен контроллером, который принимает данные по последовательному порту и выводит на экран дисплея 16*02 Не могу разобраться почему: printf("%a", 30.0) выводит "???" printf("%.2A", 30.0) выводит "???" printf("%c", 'a') ничего выводит printf("<%3c|%-3c>", 'a', 'b') выводит "< крокозябра >" и т.д. совсем другими словами не то что я ожидаю. printf("Hello World!") выводит "Hello World!", но если использовать длинную строку или несколько операторов "printf" со строками, то выводятся куски строк в хаотичном порядке. размер Data Stack в компиляторе IAR установил в 0x300. Мне нужно выводить на экран простые конструкции состоящие из текста и числовых данных, что делать?
Сообщение отредактировал Буратино - Mar 19 2010, 12:46
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
 |
Ответов
|
Mar 19 2010, 15:59
|

Профессионал
    
Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215

|
zltigo ,почему Вы такой злой? Ну нет желания помочь - ну и не нужно! В конце-концов весь мир не вокруг одного Вашего мизинчика вращается. Я достаточно обеспеченный человек, чтобы позволить себе заниматься электроникой в качестве хобби, и достаточно самостоятельный человек, чтобы разобраться, чем мне в жизни увлекаться. Уарт настроен на baud rate: 115200, char size: 8 bit, parity: Disabled Вот код функций: Код #define UART_TX_BUFFER_SIZE0 64 #define UART_TX_BUFFER_MASK0 ( UART_TX_BUFFER_SIZE0 - 1 )
static unsigned char UART_TxBuf0[UART_TX_BUFFER_SIZE0]; static volatile unsigned char UART_TxHead0; static volatile unsigned char UART_TxTail0;
void Transmit_Byte( unsigned char data0 ) { unsigned char tmphead0;
tmphead0 = ( UART_TxHead0 + 1 ) & UART_TX_BUFFER_MASK0; while ( tmphead0 == UART_TxTail0 ); UART_TxBuf0[tmphead0] = data0; UART_TxHead0 = tmphead0; UCSR0B |= (1<<UDRIE0); }
#pragma vector=USART_UDRE_vect __interrupt void USART0_TX_interrupt( void ) { unsigned char tmptail0;
if ( UART_TxHead0 != UART_TxTail0 ) { tmptail0 = ( UART_TxTail0 + 1 ) & UART_TX_BUFFER_MASK0; UART_TxTail0 = tmptail0; UDR0=UART_TxBuf0[tmptail0]; } else { UCSR0B &= ~(1<<UDRIE0); } } Повторяю, функция printf() выводит короткий текст типа "Hello World!", что само по себе свидетельство правильной работы UART, ведь данные были переданы и приняты процессорами.
Сообщение отредактировал Буратино - Mar 19 2010, 16:13
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
Сообщений в этой теме
Буратино Оператор "printf" и функция "putchar" для работы с символьным LCD Mar 19 2010, 11:47 barabek Цитата(Буратино @ Mar 19 2010, 21:47) pri... Mar 19 2010, 12:09 Буратино printf("%f", 30.0); выводит "0.0000... Mar 19 2010, 12:12 zltigo Цитата(Буратино @ Mar 19 2010, 14:47) Про... Mar 19 2010, 12:34 Буратино А почему эта функция не putchar()?
---
Буратино ... Mar 19 2010, 12:43 zltigo Цитата(Буратино @ Mar 19 2010, 15:43) А п... Mar 19 2010, 12:46  Буратино Цитата(zltigo @ Mar 19 2010, 15:46) А вот... Mar 19 2010, 12:51 Буратино Пересмотрел форум, и понял ,что функция printf() ... Mar 19 2010, 15:36 zltigo Цитата(Буратино @ Mar 19 2010, 18:36) Я у... Mar 19 2010, 15:49 one_eight_seven А в контроллер уже зашиты ASCII коды?
Может, я не... Mar 19 2010, 15:49 Буратино Все, разобрался (хотя и остались некоторые непонят... Mar 19 2010, 18:20 zltigo Цитата(Буратино @ Mar 19 2010, 21:20) Все... Mar 19 2010, 18:37  Буратино Цитата(zltigo @ Mar 19 2010, 21:37) Некош... Mar 19 2010, 18:45   zltigo Цитата(Буратино @ Mar 19 2010, 21:45) Что... Mar 19 2010, 18:52  Сергей Борщ Цитата(zltigo @ Mar 19 2010, 20:37) Некош... Mar 19 2010, 21:20   zltigo Цитата(Сергей Борщ @ Mar 20 2010, 00:20) ... Mar 19 2010, 21:53    Сергей Борщ Цитата(zltigo @ Mar 19 2010, 23:53) Свобо... Mar 20 2010, 09:54     zltigo Цитата(Сергей Борщ @ Mar 20 2010, 12:54) ... Mar 20 2010, 10:34      Сергей Борщ Цитата(zltigo @ Mar 20 2010, 12:34) Очень... Mar 20 2010, 11:11       zltigo Цитата(Сергей Борщ @ Mar 20 2010, 14:08) ... Mar 20 2010, 11:14        Сергей Борщ Цитата(zltigo @ Mar 20 2010, 13:14) При н... Mar 20 2010, 15:08         zltigo Цитата(Сергей Борщ @ Mar 20 2010, 18:08) ... Mar 20 2010, 15:35       ReAl Цитата(Сергей Борщ @ Mar 20 2010, 13:11) ... Mar 20 2010, 18:38       zltigo Цитата(Сергей Борщ @ Mar 20 2010, 14:11) ... Mar 20 2010, 18:51    Сергей Борщ Цитата(zltigo @ Mar 20 2010, 01:08) Абсол... Apr 20 2010, 21:59     zltigo Цитата(Сергей Борщ @ Apr 21 2010, 00:00) ... Apr 20 2010, 22:13      Сергей Борщ Цитата(zltigo @ Apr 21 2010, 01:28) Это п... Apr 21 2010, 07:31      ReAl Цитата(zltigo @ Apr 21 2010, 01:28) Это п... Apr 24 2010, 21:28     zltigo Цитата(Сергей Борщ @ Apr 21 2010, 00:14) ... Apr 24 2010, 22:39 sonycman Кстати, можно вопрос по поводу UARTов микроконтрол... Mar 20 2010, 12:57 zltigo Цитата(sonycman @ Mar 20 2010, 15:57) В о... Mar 20 2010, 13:10  sonycman Цитата(zltigo @ Mar 20 2010, 17:10) Пальц... Mar 20 2010, 14:00   zltigo Цитата(sonycman @ Mar 20 2010, 17:00) У В... Mar 20 2010, 14:41 Буратино RE: Оператор "printf" и функция "putchar" для работы с символьным LCD Mar 20 2010, 16:49 zltigo Цитата(Буратино @ Mar 20 2010, 19:49)
А ... Mar 20 2010, 17:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|