Страница 41 из 111

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

Добавлено: Чт авг 11, 2011 08:55:12
Antifritz
Есть МК ATTiny13. К ноге PB1/INT0 подключена кнопка (еще через резистор эта ножка подключена к GND, чтобы создавать лог. "0", пока кнопка не нажата). Требуется по нажатию этой кнопки переводить МК в спящий режим (Power down), а при последующем нажатии выводить из него.

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

if(bit_is_set(PINB,1))
{
	while(bit_is_set(PINB,1))
	{}
			
        DDRB=0xFF;
        PORTB=0;
        TCCR0A=0;
        TCCR0B=0;
        GIMSK=64;
        MCUCR=3;
        sei();
        set_sleep_mode(SLEEP_MODE_PWR_DOWN);				
        sleep_mode();
}
В таком случае МК как бы отрубается(но не факт), но через мгновение снова включается (если верить дебагеру AVRStudio, то после пробуждения программа начинает работать с самого начала). Если убрать sei(), то МК засыпает и уже ни на что, кроме сброса питания не реагирует. Помогите пожалуйста, что я делаю не так?

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

Добавлено: Чт авг 11, 2011 09:01:45
Мастер Ломастер
для INT0 пробуждение возможно только по запросу "низкий уровень на INT0", а у вас низкий там постоянно. переделайте на пробуждение по PCINT1 - там можно настроить на запрос по любому уровню.

ну и не забывайте, что кнопка - это источник дребезга, так что и при засыпании, и при пробуждении с ним надо бороться.

P.S. во многих случаях удобно пробуждаться именно по сбросу - кнопку на вывод 1 ставить.

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

Добавлено: Чт авг 11, 2011 09:17:04
Antifritz
Мастер Ломастер писал(а):переделайте на пробуждение по PCINT1
А в чем заключается переделывание?

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

Добавлено: Чт авг 11, 2011 09:17:59
Мастер Ломастер
в настройке режима прерывания - см. даташит.

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

Добавлено: Пн авг 29, 2011 18:27:13
TICLIR
Доброе время суток! Изучая исходники наткнулся на непонятное(пока) для меня определение
uchar usbInputBufOffset; uchar usbDeviceAddr; я так понимаю это обявляются переменные
а что это за uchar и ещё встречаются schar подскажите пожалуйста.
Пишут что на WinAvr было создано это дело.

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

Добавлено: Пн авг 29, 2011 18:34:05
Мастер Ломастер
TICLIR писал(а):Доброе время суток! Изучая исходники наткнулся на непонятное(пока) для меня определение
uchar usbInputBufOffset; uchar usbDeviceAddr; я так понимаю это обявляются переменные
а что это за uchar и ещё встречаются schar подскажите пожалуйста.
Пишут что на WinAvr было создано это дело.
ищите эти определения в подключаемых хидерах в проекте. скорее всего uchar это unsigned char...

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

Добавлено: Пн авг 29, 2011 18:57:57
TICLIR
Мастер Ломастер писал(а):
TICLIR писал(а):Доброе время суток! Изучая исходники наткнулся на непонятное(пока) для меня определение
uchar usbInputBufOffset; uchar usbDeviceAddr; я так понимаю это обявляются переменные
а что это за uchar и ещё встречаются schar подскажите пожалуйста.
Пишут что на WinAvr было создано это дело.
ищите эти определения в подключаемых хидерах в проекте. скорее всего uchar это unsigned char...
Ну точно, в заголовочном файле и обнаружил
#define schar signed char; #define uchar unsigned char;
благодарю за помощ!

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

Добавлено: Чт сен 01, 2011 14:45:20
GP1
и так...
ввиду того что я поменял свою подпись :)
сразу возник вопрос:
как "засунуть" константу во flash память?
конструкция

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

const int ks=6000;
лепит мою константу в RAM... :roll:

зы юзаю связку студия 4.18+winavr

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

Добавлено: Чт сен 01, 2011 15:32:39
Rusja2008
В этой теме уже поднимался такой вопрос

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

#include <avr/pgmspace.h>

int ks PROGMEM=6000;
считывать с помощью

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

pgm_read_byte(addr);
pgm_read_word(addr);
pgm_read_dword(addr);
pgm_read_float(addr);

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

Добавлено: Чт сен 01, 2011 17:32:02
GP1
спасибо! :beer:
видимо плохо искал. :dont_know:

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

Добавлено: Сб сен 17, 2011 11:12:38
alexx82
Подозреваю что данный вопрос обсуждался уже 100500 раз. Но у меня нет сил просматривать все 40 страниц данной темы.

Обьясните кто-нибудь придурку (то бишь мне), что делать с линуксовым файлом Makefile, лежащим во многих проектах, написанных под WinAVR? Чем его открывать?

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

Добавлено: Сб сен 17, 2011 13:26:05
Мастер Ломастер
alexx82 писал(а):Обьясните кто-нибудь придурку (то бишь мне), что делать с линуксовым файлом Makefile, лежащим во многих проектах, написанных под WinAVR? Чем его открывать?
открывать этот файл надо текстовым редатором, хоть бы и notepad-ом. это если вам нужно внести в него изменения. а если собрать проект, то ничего открывать не надо, надо (имея корректно установленный WinAVR) просто открыть папку, в которой есть makefile и выполнить из командной строки команду make all. то есть, если ваш проект находится в папке C:\MyPrj, надо открыть консоль (запуск cmd.exe) и ввести следующее:
cd c:\myprj
make all

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

Добавлено: Сб сен 17, 2011 13:59:47
alexx82
просто открыть папку, в которой есть makefile и выполнить из командной строки команду make all
Пасиб. Сам бы за что бы не догадался.

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

Добавлено: Пн сен 19, 2011 20:19:16
____Eugene____
здраствуйте
почему функция SUM добавляется в код веть она даже не вызывается

//WinAVR-20100110//AVR Studio 4.16 Build628
#include <avr/io.h>

unsigned char sum (unsigned char i,unsigned char u);

int main( void )
{
while (1){PORTB=1,PORTB=0;}

return 0;
}//main

unsigned char sum (unsigned char i,unsigned char u)
{//sum
PORTB=i;
PORTB=(i-u);
PORTB=(i+u);
PORTB=(i/u);
PORTB=(i+u);
PORTB==(i-u);
PORTB-=(i+u);
PORTB*=(i/u);
PORTB/=(i+u);
return i+u;
}//sum

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

Добавлено: Пн сен 19, 2011 21:09:44
Мастер Ломастер
____Eugene____ писал(а):почему функция SUM добавляется в код веть она даже не вызывается
потому что вы не дали указание компоновщику исключать неиспользуемые функции из кода.

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

Добавлено: Ср сен 21, 2011 14:24:21
____Eugene____
Мастер Ломастер писал(а):
____Eugene____ писал(а):почему функция SUM добавляется в код веть она даже не вызывается
потому что вы не дали указание компоновщику исключать неиспользуемые функции из кода.
а можно на примере как и куда прописывать ключи

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

Добавлено: Ср сен 21, 2011 15:03:52
Мастер Ломастер
в командной строке компилятору надо указать -ffunction-sections -Wl,-gc-sections
внимание! надо вводить точно так, как тут написано, не добавлять пробелов, не менять регистр и т.п. самодеятельности. если работаете в AVR Studio, эти ключики надо указать в дополнительных настройках проекта - первый для компилятора, второй для компоновщика. результат вас поразит :)))

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

Добавлено: Сб сен 24, 2011 16:34:20
TICLIR
Доброе время суток! Вопросик так себе! При открывание WinAvr , если программа для контроллера большая, то для компактности
приходится давить на минусики что бы свернулись некоторые функции или массивы , а может просто надо где нибудь поставить или убрать галочку , что бы при открывании они сразу уже были свёрнуты.

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

Добавлено: Пн окт 03, 2011 17:56:36
TICLIR
TICLIR писал(а):Доброе время суток! Вопросик так себе! При открывание WinAvr , если программа для контроллера большая, то для компактности
приходится давить на минусики что бы свернулись некоторые функции или массивы , а может просто надо где нибудь поставить или убрать галочку , что бы при открывании они сразу уже были свёрнуты.
И всё-таки я нашёл как это сделать - View/Folding/Collapse All Folds

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

Добавлено: Пн окт 10, 2011 20:53:33
svs39
TICLIR писал(а): И всё-таки я нашёл как это сделать - View/Folding/Collapse All Folds
но это надо делать каждый раз после открытия проекта?