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

Обсуждаем контроллеры компании Atmel.
User avatar
Antifritz
Прорезались зубы
Posts: 222
Joined: Thu Jul 08, 2010 01:03:40
Location: Украина, Киев

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

Post by Antifritz »

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

Code: Select all

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(), то МК засыпает и уже ни на что, кроме сброса питания не реагирует. Помогите пожалуйста, что я делаю не так?
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Posts: 1995
Joined: Wed May 11, 2011 21:37:45
Location: Цветочный город
Contact:

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

Post by Мастер Ломастер »

для INT0 пробуждение возможно только по запросу "низкий уровень на INT0", а у вас низкий там постоянно. переделайте на пробуждение по PCINT1 - там можно настроить на запрос по любому уровню.

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

P.S. во многих случаях удобно пробуждаться именно по сбросу - кнопку на вывод 1 ставить.
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
User avatar
Antifritz
Прорезались зубы
Posts: 222
Joined: Thu Jul 08, 2010 01:03:40
Location: Украина, Киев

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

Post by Antifritz »

Мастер Ломастер wrote:переделайте на пробуждение по PCINT1
А в чем заключается переделывание?
Мастер Ломастер
Поставщик валерьянки для Кота
Posts: 1995
Joined: Wed May 11, 2011 21:37:45
Location: Цветочный город
Contact:

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

Post by Мастер Ломастер »

в настройке режима прерывания - см. даташит.
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
Эиком - электронные компоненты и радиодетали
TICLIR
Встал на лапы
Posts: 134
Joined: Sun Aug 01, 2010 16:05:25

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

Post by TICLIR »

Доброе время суток! Изучая исходники наткнулся на непонятное(пока) для меня определение
uchar usbInputBufOffset; uchar usbDeviceAddr; я так понимаю это обявляются переменные
а что это за uchar и ещё встречаются schar подскажите пожалуйста.
Пишут что на WinAvr было создано это дело.
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Posts: 1995
Joined: Wed May 11, 2011 21:37:45
Location: Цветочный город
Contact:

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

Post by Мастер Ломастер »

TICLIR wrote:Доброе время суток! Изучая исходники наткнулся на непонятное(пока) для меня определение
uchar usbInputBufOffset; uchar usbDeviceAddr; я так понимаю это обявляются переменные
а что это за uchar и ещё встречаются schar подскажите пожалуйста.
Пишут что на WinAvr было создано это дело.
ищите эти определения в подключаемых хидерах в проекте. скорее всего uchar это unsigned char...
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
TICLIR
Встал на лапы
Posts: 134
Joined: Sun Aug 01, 2010 16:05:25

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

Post by TICLIR »

Мастер Ломастер wrote:
TICLIR wrote:Доброе время суток! Изучая исходники наткнулся на непонятное(пока) для меня определение
uchar usbInputBufOffset; uchar usbDeviceAddr; я так понимаю это обявляются переменные
а что это за uchar и ещё встречаются schar подскажите пожалуйста.
Пишут что на WinAvr было создано это дело.
ищите эти определения в подключаемых хидерах в проекте. скорее всего uchar это unsigned char...
Ну точно, в заголовочном файле и обнаружил
#define schar signed char; #define uchar unsigned char;
благодарю за помощ!
User avatar
GP1
Поставщик валерьянки для Кота
Posts: 2401
Joined: Fri May 23, 2008 19:32:22
Location: Россия, Волгоград
Contact:

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

Post by GP1 »

и так...
ввиду того что я поменял свою подпись :)
сразу возник вопрос:
как "засунуть" константу во flash память?
конструкция

Code: Select all

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

зы юзаю связку студия 4.18+winavr
Чем дальше, тем больше становлюсь занудой...
Image
Rusja2008
Открыл глаза
Posts: 68
Joined: Mon Oct 06, 2008 15:51:58
Location: Черкассы

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

Post by Rusja2008 »

В этой теме уже поднимался такой вопрос

Code: Select all

#include <avr/pgmspace.h>

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

Code: Select all

pgm_read_byte(addr);
pgm_read_word(addr);
pgm_read_dword(addr);
pgm_read_float(addr);
Не умееш - не берись, но не взявшись не научишся.
User avatar
GP1
Поставщик валерьянки для Кота
Posts: 2401
Joined: Fri May 23, 2008 19:32:22
Location: Россия, Волгоград
Contact:

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

Post by GP1 »

спасибо! :beer:
видимо плохо искал. :dont_know:
Чем дальше, тем больше становлюсь занудой...
Image
User avatar
alexx82
Открыл глаза
Posts: 64
Joined: Wed Jul 06, 2011 19:11:44
Location: В цветущих акациях город
Contact:

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

Post by alexx82 »

Подозреваю что данный вопрос обсуждался уже 100500 раз. Но у меня нет сил просматривать все 40 страниц данной темы.

Обьясните кто-нибудь придурку (то бишь мне), что делать с линуксовым файлом Makefile, лежащим во многих проектах, написанных под WinAVR? Чем его открывать?
Мастер Ломастер
Поставщик валерьянки для Кота
Posts: 1995
Joined: Wed May 11, 2011 21:37:45
Location: Цветочный город
Contact:

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

Post by Мастер Ломастер »

alexx82 wrote:Обьясните кто-нибудь придурку (то бишь мне), что делать с линуксовым файлом Makefile, лежащим во многих проектах, написанных под WinAVR? Чем его открывать?
открывать этот файл надо текстовым редатором, хоть бы и notepad-ом. это если вам нужно внести в него изменения. а если собрать проект, то ничего открывать не надо, надо (имея корректно установленный WinAVR) просто открыть папку, в которой есть makefile и выполнить из командной строки команду make all. то есть, если ваш проект находится в папке C:\MyPrj, надо открыть консоль (запуск cmd.exe) и ввести следующее:
cd c:\myprj
make all
битва с дураками проиграна, победители торжествуют. слава победителям!
User avatar
alexx82
Открыл глаза
Posts: 64
Joined: Wed Jul 06, 2011 19:11:44
Location: В цветущих акациях город
Contact:

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

Post by alexx82 »

просто открыть папку, в которой есть makefile и выполнить из командной строки команду make all
Пасиб. Сам бы за что бы не догадался.
____Eugene____
Открыл глаза
Posts: 47
Joined: Tue Aug 31, 2010 18:26:35

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

Post by ____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
Мастер Ломастер
Поставщик валерьянки для Кота
Posts: 1995
Joined: Wed May 11, 2011 21:37:45
Location: Цветочный город
Contact:

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

Post by Мастер Ломастер »

____Eugene____ wrote:почему функция SUM добавляется в код веть она даже не вызывается
потому что вы не дали указание компоновщику исключать неиспользуемые функции из кода.
битва с дураками проиграна, победители торжествуют. слава победителям!
____Eugene____
Открыл глаза
Posts: 47
Joined: Tue Aug 31, 2010 18:26:35

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

Post by ____Eugene____ »

Мастер Ломастер wrote:
____Eugene____ wrote:почему функция SUM добавляется в код веть она даже не вызывается
потому что вы не дали указание компоновщику исключать неиспользуемые функции из кода.
а можно на примере как и куда прописывать ключи
Мастер Ломастер
Поставщик валерьянки для Кота
Posts: 1995
Joined: Wed May 11, 2011 21:37:45
Location: Цветочный город
Contact:

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

Post by Мастер Ломастер »

в командной строке компилятору надо указать -ffunction-sections -Wl,-gc-sections
внимание! надо вводить точно так, как тут написано, не добавлять пробелов, не менять регистр и т.п. самодеятельности. если работаете в AVR Studio, эти ключики надо указать в дополнительных настройках проекта - первый для компилятора, второй для компоновщика. результат вас поразит :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
TICLIR
Встал на лапы
Posts: 134
Joined: Sun Aug 01, 2010 16:05:25

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

Post by TICLIR »

Доброе время суток! Вопросик так себе! При открывание WinAvr , если программа для контроллера большая, то для компактности
приходится давить на минусики что бы свернулись некоторые функции или массивы , а может просто надо где нибудь поставить или убрать галочку , что бы при открывании они сразу уже были свёрнуты.
TICLIR
Встал на лапы
Posts: 134
Joined: Sun Aug 01, 2010 16:05:25

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

Post by TICLIR »

TICLIR wrote:Доброе время суток! Вопросик так себе! При открывание WinAvr , если программа для контроллера большая, то для компактности
приходится давить на минусики что бы свернулись некоторые функции или массивы , а может просто надо где нибудь поставить или убрать галочку , что бы при открывании они сразу уже были свёрнуты.
И всё-таки я нашёл как это сделать - View/Folding/Collapse All Folds
svs39
Встал на лапы
Posts: 95
Joined: Sun Aug 22, 2010 09:23:08

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

Post by svs39 »

TICLIR wrote: И всё-таки я нашёл как это сделать - View/Folding/Collapse All Folds
но это надо делать каждый раз после открытия проекта?
Post Reply

Return to “AVR”