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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Antifritz
Прорезались зубы
Сообщения: 222
Зарегистрирован: Чт июл 08, 2010 01:03:40
Откуда: Украина, Киев

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

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

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

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

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

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

P.S. во многих случаях удобно пробуждаться именно по сбросу - кнопку на вывод 1 ставить.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Antifritz
Прорезались зубы
Сообщения: 222
Зарегистрирован: Чт июл 08, 2010 01:03:40
Откуда: Украина, Киев

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

Сообщение Antifritz »

Мастер Ломастер писал(а):переделайте на пробуждение по PCINT1

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

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

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

в настройке режима прерывания - см. даташит.
битва с дураками проиграна, победители торжествуют. слава победителям!
TICLIR
Встал на лапы
Сообщения: 134
Зарегистрирован: Вс авг 01, 2010 16:05:25

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

Сообщение TICLIR »

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

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

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

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

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

Сообщение TICLIR »

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

Ну точно, в заголовочном файле и обнаружил
#define schar signed char; #define uchar unsigned char;
благодарю за помощ!
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

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

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

const int ks=6000;

лепит мою константу в RAM... :roll:

зы юзаю связку студия 4.18+winavr
Чем дальше, тем больше становлюсь занудой...
Изображение
Rusja2008
Открыл глаза
Сообщения: 68
Зарегистрирован: Пн окт 06, 2008 15:51:58
Откуда: Черкассы

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

Сообщение 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);
Не умееш - не берись, но не взявшись не научишся.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

спасибо! :beer:
видимо плохо искал. :dont_know:
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
alexx82
Открыл глаза
Сообщения: 64
Зарегистрирован: Ср июл 06, 2011 19:11:44
Откуда: В цветущих акациях город
Контактная информация:

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

Сообщение alexx82 »

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

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

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

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

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

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

Сообщение alexx82 »

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

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

Сообщение ____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
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

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

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

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

Сообщение ____Eugene____ »

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


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

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

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

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

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

Сообщение TICLIR »

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

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

Сообщение TICLIR »

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

И всё-таки я нашёл как это сделать - View/Folding/Collapse All Folds
svs39
Встал на лапы
Сообщения: 95
Зарегистрирован: Вс авг 22, 2010 09:23:08

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

Сообщение svs39 »

TICLIR писал(а):И всё-таки я нашёл как это сделать - View/Folding/Collapse All Folds

но это надо делать каждый раз после открытия проекта?
Ответить

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