AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

И не только RAM, но и все остальное
studio4.19_memory.PNG
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

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

Сообщение Jman »

Всем привет.... У меня тут есть небольшая проблема. Хочу перейти с CV на ATMEL studio7, естественно траблы. Код который работал в CV, не работает в Atmel studio. Вроде подкорректировал, настроил. Запустил, но что-то не алё =( Подскажите, где я не доглядел. Там в коде со студией ошибки в скобочках, я поправил, но что-то все равно не работает.

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

while ((PINB &(1<<PINB1))==0 && (tic_tac>=90)) {
      PORTB &= ~(1<<3);}
      }
         else {
            
            adc_read ();                           //Функция чтения значения из АЦП (0-255);

         if ((on>=90) && ((PINB &(1<<PINB0))==0) && ((PINB &(1<<PINB1))==1) && (outdoor_sensor>=sensivity)) {
         PORTB |= (1<<3);}                                      // Порт включен;
Вложения
Titty13.rar
(16.92 КБ) 123 скачивания
PIR_Garage09022016.rar
(23.77 КБ) 157 скачиваний
PIR_Garage09022016.rar
(23.77 КБ) 130 скачиваний
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

вот здесь while ((PINB &(1<<PINB1))==0 && (tic_tac>=90)) скобочку переставьте вот так: while ((PINB &(1<<PINB1)==0) && (tic_tac>=90))

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

Мой уютный бложик... заходите!
креазот
Встал на лапы
Сообщения: 135
Зарегистрирован: Ср фев 04, 2015 21:08:59

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

Сообщение креазот »

у меня нет опции data, 3 окна только открываются, регистры, регистры ввода\вывода и флеш память. еепром и озу нет. :(
авр студия 4скопейками

Изображение
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Кликните в одном из окон памяти, допустим Program.
memory_data.PNG
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

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

Сообщение Jman »

ARV писал(а):вот здесь while ((PINB &(1<<PINB1))==0 && (tic_tac>=90)) скобочку переставьте вот так: while ((PINB &(1<<PINB1)==0) && (tic_tac>=90))

да, ниже та же самая песня - скобочка в коде не там стоит - в самом нижнем if в самом правом выражении с ==

Ругается, я изначально так и сделал. (Warning suggest parentheses around comparison in operand of '&' [-Wparentheses])
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
креазот
Встал на лапы
Сообщения: 135
Зарегистрирован: Ср фев 04, 2015 21:08:59

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

Сообщение креазот »

вот.
Изображение
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Jman писал(а):Ругается
заставляете вы старика за вас думать :)
((PINB &(1<<PINB1))==0 && (tic_tac>=90)) - я так понимаю, вы хотите, чтобы одновременно пин стал равным 0 и переменная была больше 90, верно?
так вот, условие "пин равен нулю" записывается так !(PINB & _BV(PB1))
если уж хотите явно написать, то так ((PINB & _BV(PB1)) == 0)
в стандартных библиотеках AVR-GCC есть и макрос для удобства bit_is_clear(sfr, bit), то есть можно записать еще "понятнее" bit_is_clear(PINB, PB1)

у вас проблема в том, что вы не учитываете приоритет операций: логические операции, как правило, имеют меньший приоритет по сравнению с другими.

таким образом конкретное выражение должно быть правильно записано одним из следующих способов:
while (((PINB & _BV(PINB1))==0) && (tic_tac>=90))
while (!(PINB & _BV(PINB1)) && (tic_tac>=90))
while (bit_is_clear(PINB, PINB1) && (tic_tac >= 90))


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

Мой уютный бложик... заходите!
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

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

Сообщение Jman »

ARV писал(а):соответственно, нужно подправить и остальные логические выражения

Спасибо большое, попробую. Вот вы мне скажите, а макросы как в Cv похоже использовать нельзя? Как-то например так: #define out _BV(PINB1)
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Jman писал(а):а макросы как в Cv похоже использовать нельзя?
макросы? очень даже можно использовать. только их делать надо корректно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

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

Сообщение Jman »

ARV писал(а):
Jman писал(а):а макросы как в Cv похоже использовать нельзя?
макросы? очень даже можно использовать. только их делать надо корректно.

Если вас не затруднит, проверьте пожалуйста код (объем кстати получается больше чем в CV);

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

while (1)
   {
      
      if ((PINB &_BV(PINB1)) ==0) {                  // Если кнопка нажата и на входе PB1=0;
         //_delay_ms(100);                               // "антидребезг" =);
          PORTB |=(1<<3);                                // Приоритет включения по клавише, пока нажат, не реагируем на сенсоры;
           
      while (((PINB & _BV(PINB1))==0) && (tic_tac>=90)) { 
                                             
         PORTB &= ~(1<<3);}
      }
         else {
            
            adc_read ();                           //Функция чтения значения из АЦП (0-255);

         if ((on>=90) && ((PINB &_BV(PINB0))==0) && ((PINB &_BV(PINB1))==1) && (outdoor_sensor>=sensivity)) {
         PORTB |= (1<<3);}                                      // Порт включен;
         else{
            PORTB &= ~(1<<3); }                                // Порт выключен;
      }
   }

На кнопку реагирует, но промаргивает и не выключает. По сенсору ждет задержку 5 сек и промаргивает (светодиод не горит).
Прерывание:

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

ISR (TIM0_COMPA_vect) 
{
   TCNT0=0x00;
   if ((PINB &_BV(PINB1))==0){
   tic_tac++;}
   else tic_tac=0;
   if (((PINB &_BV(PINB0))==0) && ((PINB &_BV(PINB1))==1)   && (outdoor_sensor>=sensivity)){    // Задержка на включение, антидребезг ПИР дачика;
      on++;
   }
   else   {
      on=0;
      TCNT0=0;
   }

}

Частота 128кГц, прескаллер 256.

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

   
        TIMSK0=0x06;
   TIMSK0 |= 0<<OCIE0B;
   TIMSK0 |= 1<<OCIE0A;
   TIMSK0 |= 0<<TOIE0;
   СLKPR |= 1<<CLKPCE;  // Предделитель;
В регистре сравнение 255;
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

ну и главное: не забывайте, что все переменные, которые используются в главном цикле, а изменяются в обработчике прерываний, должны быть обязательно volatile - это вам не CV.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

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

Сообщение Jman »

ARV писал(а):не забывайте, что все переменные, которые используются в главном цикле, а изменяются в обработчике прерываний, должны быть обязательно volatile - это вам не CV.

Я это делаю и в CV. Просто мне интересно, в CV алгоритм рабочий. В протеусе и на макетке работает. А тут я пока просто не разберусь, может где что не так про инициализировал. После CV Atmel studio прям как темный лес. Нахрапом не получается ) Логика ну совсем простая.
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

простая логика, говорите? ну, расскажите мне тогда:
1. зачем в обработчике прерываний вы ДВАЖДЫ обнуляете TCNT? один раз в начале функции, другой раз в конце при каком-то условии.
2. if ((PINB &_BV(PINB1))==0){ tic_tac++;} else tic_tac = 0; это вы как бы считаете время присутствия низкого уровня на пине - верно? но тогда в главном цикле вы СНОВА проверяете уровень на пине? ведь у вас tic_tac либо равно нулю, либо растет - строго в соответствии с уровнем на пине! хватило бы просто проверки tic_tac.
3. если уровень на пине PB1 низкий очень долго, то tic_tac перекрутится, т.е. после того, как побудет больше 90 снова станет меньше и будет расти. у вас в коде этот момент никак не отрабатывается. может, так и надо, мне неизвестно...

это несколько вопросов с ходу, но можно и дальше задавать.

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

Мой уютный бложик... заходите!
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

Какой чип вы выбрали в студии? У некоторых самых мелких нет ОЗУ, например Tiny11, Tiny15.
креазот писал(а):авр студия 4скопейками

Копейки бывают важны. В старых версиях могут содержаться ошибки в базе данных устройств и симуляторов.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

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

Сообщение Pnjom-Penb »

Jman писал(а):Хочу перейти с CV на ATMEL studio7, естественно - траблы.
Устами ребенка глаголет Истина, мля! Изображение Или, как говаривал Шахрияр, эти слова должны быть записаны алмазными иглами в уголках (ваших) глаз!
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Надо изначально было не отвлекаться на CV...
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

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

Сообщение Jman »

Pnjom-Penb писал(а):
Jman писал(а):Хочу перейти с CV на ATMEL studio7, естественно - траблы.
Устами ребенка глаголет Истина, мля! Изображение Или, как говаривал Шахрияр, эти слова должны быть записаны алмазными иглами в уголках (ваших) глаз!

Поговорить любой мастак, я задал конкретные вопросы и выложил исходники.
Надо изначально было не отвлекаться на CV...

Надо было изначально не отвлекаться на мой пост. Я задал вопрос, ветка форума как-бы предполагает. Надо было, или не надо было, поздно пить боржоми.
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

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

Сообщение Pnjom-Penb »

Jman писал(а):Надо было, или не надо было, поздно пить боржоми.
О, как Вы заблуждаетесь! :))) Этот "боржоми" - тухлый изначально и, поскольку испортиться еще больше он не может, он вечен! Жертв ЦВ так много и они им так отравлены, что любой положительный пример хорош уже хотя бы тем, что он высказан. Так что - спасибо, что не промолчали. :)
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

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

Сообщение Jman »

Pnjom-Penb писал(а): Так что - спасибо, что не промолчали. :)

1. Вы знаете, мне с пеной у рта доказывали люди обратное =);
2. FlowCode - некоторые даже деньги зарабатывают, отравляя себя рисованием;
3. О! Arduino!;
ATMEL Studio? А как же IAR Workbench?

Лучше помогите, дайте, как вы говорите "отравленному", противоядие :)
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Ответить

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