WinAvr в вопросах и ответах
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: WinAvr в вопросах и ответах
резкое увеличение размера кода происходит при подключении библиотеки, содержащей sprintf. после этого размер будет прирастать только той частью кода, которую вы будете сами дописывать, т.е. незначительно. sprintf-ом имеет смысл пользоваться, если вам нужно делать весьма "заковыристое" форматирование текста и чисел, а так же с расчетом на будущее расширение (например, при добавлении SD-карты и записи на нее в виде файла ваших данных).
битва с дураками проиграна, победители торжествуют. слава победителям!
- shurikss123
- Грызет канифоль
- Сообщения: 271
- Зарегистрирован: Пн окт 25, 2010 20:47:04
- Откуда: Казахстан, Астана
Re: WinAvr в вопросах и ответах
Мастер Ломастер писал(а):резкое увеличение размера кода происходит при подключении библиотеки, содержащей sprintf. после этого размер будет прирастать только той частью кода, которую вы будете сами дописывать, т.е. незначительно. sprintf-ом имеет смысл пользоваться, если вам нужно делать весьма "заковыристое" форматирование текста и чисел, а так же с расчетом на будущее расширение (например, при добавлении SD-карты и записи на нее в виде файла ваших данных).
как раз для этих целей и планирую, Спасибо!
Re: WinAvr в вопросах и ответах
Здравствуйте, уважаемые форумчане. Я тут новичок как и в области программирования МК.
Компилятор выбрал WinAVR отладку делаю в AVRStudio 4.18
От преподавателя сразу получил очень сложное задание, которое мне нужно сделать в короткие сроки, такое ощущение, что он думает, что я должен всё сам уже знать, но не в этом суть.
Долго думал в какую ветку форума написать, написал сюда. Не могли бы вы подсказать, куда можно обратиться за помощью в написании программы?
Заранее благодарен.
Компилятор выбрал WinAVR отладку делаю в AVRStudio 4.18
От преподавателя сразу получил очень сложное задание, которое мне нужно сделать в короткие сроки, такое ощущение, что он думает, что я должен всё сам уже знать, но не в этом суть.
Долго думал в какую ветку форума написать, написал сюда. Не могли бы вы подсказать, куда можно обратиться за помощью в написании программы?
Заранее благодарен.
Кот кота видит издалека)
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: WinAvr в вопросах и ответах
вы бы хоть намекнули какое задание и какой бюджет проекта.
а так можно отправить только в платные бюро.по любому найдутся жадные до ваших денег программисты которые за пару десятков сотенных рублей решат вашу задачку за полчаса.
а так можно отправить только в платные бюро.по любому найдутся жадные до ваших денег программисты которые за пару десятков сотенных рублей решат вашу задачку за полчаса.
В поисках истины человек развивается.
Re: WinAvr в вопросах и ответах
Ну я думаю, что это простое задание для многих из вас, а именно: даны МК: AT90can128 дисплей DV40400, клавиатура телефонная. написать программу проверки на нажатия кнопок...вот такое вот задание
Кот кота видит издалека)
- Rimsky
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Вт июн 15, 2010 07:16:42
- Откуда: Иркутск
- Контактная информация:
Re: WinAvr в вопросах и ответах
Здравствуйте. Подскажите пожалуйста, как средствами 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';
Спасибо.
Пример:
до:
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 в вопросах и ответах
Мастер Ломастер писал(а):точно так же, как и в любом другом компиляторе - циклом.
Извиняюсь, а можно пример, может и не в ту ветку обратился, но я только начинаю работать на С.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 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 в вопросах и ответах
спасибо, заработало, только не обнуляет StringBuf[0].
было 12300, стало 10123. (если сдвинуть на 2 байта)
было 12300, стало 10123. (если сдвинуть на 2 байта)
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: WinAvr в вопросах и ответах
Rimsky писал(а):спасибо, заработало, только не обнуляет StringBuf[0].
было 12300, стало 10123. (если сдвинуть на 2 байта)
значит, я всё-таки напутал
битва с дураками проиграна, победители торжествуют. слава победителям!
- Rimsky
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Вт июн 15, 2010 07:16:42
- Откуда: Иркутск
- Контактная информация:
Re: WinAvr в вопросах и ответах
теперь так:
до 12300 после 10023
до 12300 после 10023
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: WinAvr в вопросах и ответах
Rimsky писал(а):теперь так:
до 12300 после 10023
ну тогда сами думайте, раз я такой неуч
битва с дураками проиграна, победители торжествуют. слава победителям!
- Rimsky
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Вт июн 15, 2010 07:16:42
- Откуда: Иркутск
- Контактная информация:
Re: WinAvr в вопросах и ответах
Мастер Ломастер писал(а):Rimsky писал(а):теперь так:
до 12300 после 10023
ну тогда сами думайте, раз я такой неуч
Думаю
- Rimsky
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Вт июн 15, 2010 07:16:42
- Откуда: Иркутск
- Контактная информация:
Re: WinAvr в вопросах и ответах
Вот так работает 
Код: Выделить всё
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 в вопросах и ответах
tzzk писал(а):Ну я думаю, что это простое задание для многих из вас, а именно: даны МК: AT90can128 дисплей DV40400, клавиатура телефонная. написать программу проверки на нажатия кнопок...вот такое вот задание
А схема есть? Что сами начали делать?
В поисках истины человек развивается.
- slavokhire5
- Прорезались зубы
- Сообщения: 202
- Зарегистрирован: Пн сен 26, 2011 13:48:25
- Откуда: Харьков
Re: WinAvr в вопросах и ответах
Всем доброго времени суток:) итак, настал тот день, которого я боялся. Нужно делать "проект" из нескольких *.с файлов. т.е. один main и несколько библиотек. как это все правильно в вин-авр настроить, чтобы правильно воспринимались переменные и функции из библиотеки в мейне?
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
--------------------------
Пишу на Си за еду
-
Лютик
- Нашел транзистор. Понюхал.
- Сообщения: 161
- Зарегистрирован: Вт мар 25, 2008 22:10:23
- Откуда: Минск
Re: WinAvr в вопросах и ответах
Мастер Ломастер, а если интересует форматированный вывод, например, на жки и использовать не sprintf, а добавление потока и через printf, памяти будет использоваться столько же, сколько и при sprintf или меньше?
-
codenamehawk
- Вымогатель припоя
- Сообщения: 528
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Re: WinAvr в вопросах и ответах
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 или меньше?
битва с дураками проиграна, победители торжествуют. слава победителям!
