WinAvr в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

резкое увеличение размера кода происходит при подключении библиотеки, содержащей sprintf. после этого размер будет прирастать только той частью кода, которую вы будете сами дописывать, т.е. незначительно. sprintf-ом имеет смысл пользоваться, если вам нужно делать весьма "заковыристое" форматирование текста и чисел, а так же с расчетом на будущее расширение (например, при добавлении SD-карты и записи на нее в виде файла ваших данных).
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
shurikss123
Грызет канифоль
Сообщения: 271
Зарегистрирован: Пн окт 25, 2010 20:47:04
Откуда: Казахстан, Астана

Re: WinAvr в вопросах и ответах

Сообщение shurikss123 »

Мастер Ломастер писал(а):резкое увеличение размера кода происходит при подключении библиотеки, содержащей sprintf. после этого размер будет прирастать только той частью кода, которую вы будете сами дописывать, т.е. незначительно. sprintf-ом имеет смысл пользоваться, если вам нужно делать весьма "заковыристое" форматирование текста и чисел, а так же с расчетом на будущее расширение (например, при добавлении SD-карты и записи на нее в виде файла ваших данных).


как раз для этих целей и планирую, Спасибо!
Изображение
Мастер на все руки, кручу, кручу, кручу и матерюсь
Повелитель паяльной станции, лома, и пинцета!!!
Аватара пользователя
tzzk
Родился
Сообщения: 9
Зарегистрирован: Пт мар 30, 2012 20:29:41
Откуда: СПб

Re: WinAvr в вопросах и ответах

Сообщение tzzk »

Здравствуйте, уважаемые форумчане. Я тут новичок как и в области программирования МК.

Компилятор выбрал WinAVR отладку делаю в AVRStudio 4.18

От преподавателя сразу получил очень сложное задание, которое мне нужно сделать в короткие сроки, такое ощущение, что он думает, что я должен всё сам уже знать, но не в этом суть.

Долго думал в какую ветку форума написать, написал сюда. Не могли бы вы подсказать, куда можно обратиться за помощью в написании программы?

Заранее благодарен.
Кот кота видит издалека)
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение vitalik_1984 »

вы бы хоть намекнули какое задание и какой бюджет проекта.
а так можно отправить только в платные бюро.по любому найдутся жадные до ваших денег программисты которые за пару десятков сотенных рублей решат вашу задачку за полчаса.
В поисках истины человек развивается.
Аватара пользователя
tzzk
Родился
Сообщения: 9
Зарегистрирован: Пт мар 30, 2012 20:29:41
Откуда: СПб

Re: WinAvr в вопросах и ответах

Сообщение tzzk »

Ну я думаю, что это простое задание для многих из вас, а именно: даны МК: AT90can128 дисплей DV40400, клавиатура телефонная. написать программу проверки на нажатия кнопок...вот такое вот задание
Кот кота видит издалека)
Аватара пользователя
Rimsky
Грызет канифоль
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Rimsky »

Здравствуйте. Подскажите пожалуйста, как средствами winavr сдвинуть буфер размером в пять байт.
Пример:
до:
StringBuf[0] = '1';
StringBuf[1] = '2';
StringBuf[2] = '3';
StringBuf[3] = '4';
StringBuf[4] = '5';

после сдвига, например на 2 байта:
StringBuf[0] = '0';
StringBuf[1] = '0';
StringBuf[2] = '1';
StringBuf[3] = '2';
StringBuf[4] = '3';

Спасибо.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

точно так же, как и в любом другом компиляторе - циклом.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Rimsky
Грызет канифоль
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Rimsky »

Мастер Ломастер писал(а):точно так же, как и в любом другом компиляторе - циклом.

Извиняюсь, а можно пример, может и не в ту ветку обратился, но я только начинаю работать на С.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

Код: Выделить всё

void str_shr(char *str, int size, int shift){
   for(int i=size-1; i; i--){
      if((i-shift) < 0)
         str[i] = 0;
      else
         str[i] = str[i-shift];
   }
}
как-то так, если не напутал ничего...
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Rimsky
Грызет канифоль
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Rimsky »

спасибо, заработало, только не обнуляет StringBuf[0].

было 12300, стало 10123. (если сдвинуть на 2 байта)
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

Rimsky писал(а):спасибо, заработало, только не обнуляет StringBuf[0].

было 12300, стало 10123. (если сдвинуть на 2 байта)

значит, я всё-таки напутал :) надо if((i-shift) <= 0), а не так, как я написал :)
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Rimsky
Грызет канифоль
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Rimsky »

теперь так:

до 12300 после 10023
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

Rimsky писал(а):теперь так:

до 12300 после 10023

ну тогда сами думайте, раз я такой неуч :)
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Rimsky
Грызет канифоль
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Rimsky »

Мастер Ломастер писал(а):
Rimsky писал(а):теперь так:

до 12300 после 10023

ну тогда сами думайте, раз я такой неуч :)


Думаю :) Все равно спасибо, направление задано.
Аватара пользователя
Rimsky
Грызет канифоль
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Rimsky »

Вот так работает :)

Код: Выделить всё

void str_shr(unsigned char *str, unsigned int size, unsigned int shift)
{
   for(unsigned int i=size - 1; i != -1; i--)
   {
      if((i-shift) < 0)
         str[i] = 0;
      else
         str[i] = str[i-shift];
   }
}
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение vitalik_1984 »

tzzk писал(а):Ну я думаю, что это простое задание для многих из вас, а именно: даны МК: AT90can128 дисплей DV40400, клавиатура телефонная. написать программу проверки на нажатия кнопок...вот такое вот задание

А схема есть? Что сами начали делать?
В поисках истины человек развивается.
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

Re: WinAvr в вопросах и ответах

Сообщение slavokhire5 »

Всем доброго времени суток:) итак, настал тот день, которого я боялся. Нужно делать "проект" из нескольких *.с файлов. т.е. один main и несколько библиотек. как это все правильно в вин-авр настроить, чтобы правильно воспринимались переменные и функции из библиотеки в мейне?
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
Лютик
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Вт мар 25, 2008 22:10:23
Откуда: Минск

Re: WinAvr в вопросах и ответах

Сообщение Лютик »

Мастер Ломастер, а если интересует форматированный вывод, например, на жки и использовать не sprintf, а добавление потока и через printf, памяти будет использоваться столько же, сколько и при sprintf или меньше?
codenamehawk
Вымогатель припоя
Сообщения: 528
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: WinAvr в вопросах и ответах

Сообщение codenamehawk »

slavokhire5 писал(а):Всем доброго времени суток:) итак, настал тот день, которого я боялся. Нужно делать "проект" из нескольких *.с файлов. т.е. один main и несколько библиотек. как это все правильно в вин-авр настроить, чтобы правильно воспринимались переменные и функции из библиотеки в мейне?


Я поступаю так :
создаю файл "headers.h"
в него помещаю все "инклюды"
пример моего файла

Код: Выделить всё

#ifndef HEADERS_H_INCLUDED
#define HEADERS_H_INCLUDED

#include <avr/io.h>
#include <util/delay.h>
#include "menu.h"

#endif // HEADERS_H_INCLUDED


во всех .с файлах подключаю #include "headers.h"

Далее все просто создаются пары файлов name.с и name.h

В файле name.с описываются переменные и процедуры, а в файле name.h
указываются какие из них будут видны в других файлах.

примерно так
файл menu.h

Код: Выделить всё

#ifndef MENU_H_INCLUDED
#define MENU_H_INCLUDED
extern uint8_t              first_press;                    // Knopka nie byla nacisnieta ==0;
extern volatile uint8_t     error;

// port knopki
#define button_pin_port PIND
// vyvod knopki
#define button_pin       PD3

extern uint8_t  redag_cyfre  (char * redag_char,unsigned char max,uint8_t pozx,uint8_t pozy,uint8_t next_pos);   // redagowac cyfre, od zera do max, na pozycii pozx,nast pozycja=poz+next_pos

#endif // MENU_H_INCLUDED


тогда файл menu.с

Код: Выделить всё

#include "headers.h"

uint8_t first_press;                  // Knopka nie byla nacisnieta ==0;
volatile uint8_t error=0;

uint8_t redag_cyfre(char * redag_char,unsigned char max,uint8_t pozx,uint8_t pozy,uint8_t next_pos)   // redagowac cyfre, od zera do max, na pozycii pozx,nast pozycja=poz+next_pos
{
  .. тело процедуры
}
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

Лютик писал(а):Мастер Ломастер, а если интересует форматированный вывод, например, на жки и использовать не sprintf, а добавление потока и через printf, памяти будет использоваться столько же, сколько и при sprintf или меньше?
понятия не имею :)
битва с дураками проиграна, победители торжествуют. слава победителям!
Ответить

Вернуться в «AVR»