Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR for ARM динамическая конфигурация, overclock
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Ken@t
и так с приятного : разогнан и устойчиво работает кремний на 89Mhz c перефирией VPBDIV = 1:1 включающей в себя
VIC, 2шт COM, CAN, RTC... и немного математики
вот скриншот


Однако остался осадок , как уже писал проблема в ИАР и фулл библиотеке с внутренней буфферизацией blink.gif . Да хочу сделать через функции getc/fgetc и putc/fputc. Низкоуровневневые функции описаны и работают , однако . где-то внутри буфферизация на 80 байт. Если для файлового водвода-вывода это не напрягает пока, То для консоли полный ПЭ.

putchar('A');//fflush(stdout);
putchar('B');//fflush(stdout);
putchar('C');//fflush(stdout);
putchar('D');//fflush(stdout);
>>>> на консоли нет отображения символов, после fflush вывод плющит
>>>> и не работате stdout
while (1) {

// getchar avait...

if(getByte(&byte)) {
/*
while(!sendByte(byte)); //Echo byte
if( byte == 0x0D )
while(!sendByte(0x0A)); // Добавить перевод строки
*/

// putchar(byte);
// putchar('1');

switch (byte){
case 't':
printf("RTC>%02d.%02d.%04d %02d:%02d:%02d\r\n",DOM,MONTH,YEAR,HOUR,MIN,SEC);
>> .. а вот здесь появляется строка ABCDRTC>.... и вывод на консоль происходит по выводу в Stdout символа '\n'
, пипец какой-то ((((.

на XLINK в доке описывается метод изменения конфигурации библиотек, если кто в курсе. И так для отключения буфферизации достаточно в конфигурационном файле .h линковщика например dl4tpainl8f.h Вставить определение #define _DLIB_STDOUT_USES_STATIC_BUFFER 0 -
не прокатывает ( делал как custom library ), так же не проходит и метод указания линковщику xlink .... -D_DLIB_STDOUT_USES_STATIC_BUFFER=0
и уж совсем меня торкнуло впихнуть заголовочный файл в main.c
....
#define _DLIB_STDOUT_USES_STATIC_BUFFER 0
#include <DLib_Defaults.h>
...
здесь уже другие грабли, при компиляции в DLib_Defaults.h
ругается на строку

#if defined(_DLIB_CONFIG_FILE_HEADER_NAME)
#include _DLIB_CONFIG_FILE_HEADER_NAME
/* _DLIB_CONFIG_FILE_STRING is the quoted variant of above */
#elif defined(_DLIB_CONFIG_FILE)
#include _STRINGIFY(_DLIB_CONFIG_FILE) ---- вот здесь , нет такого , хотя в опциях указан файл ((( хотя он в есть в установках среды..
#else
#pragma message("Library configuration file is not specified. Use\
--dlib_config, please see the compiler reference guide for details.")
#endif

торкнуло в общем , как дальше жить.... и что делать ? Пойду на иар сдамся....
Ken@t
Сам себе отвечаю. Вниматочней надо товарисч , вниматочней.
для фулл либов можно пойти двумя путями:
1. Пересобрать из библиотеки фулл и конфигурационного файла новую библиотеку с отключенной буферизацией.
2. Использовать функцию setvbuf установку буфера для файла, в данном случае мы утсатанавливаем ввод-вывод по потокам stderr stdin stdout
без буферизации, остальные открытые потоки (файлы) будут использовать внутренние буфера по 80 байт.

setvbuf(stdout, NULL, _IONBF , 0);
setvbuf(stderr, NULL, _IONBF , 0);
setvbuf(stdin, NULL, _IONBF , 0);

Вызов надо осуществлять до использования любой функции работы с потоками stderr stdin stdout
...

Удачи.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.