программа написанная в AVR Studio na CVAVR

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение vitalik_1984 »

Ну понятно будет жаловаться! Если переменная локальная и нет объявления, но при этом всем происходит к ней обращение, соответственно читать оттуда нечего,то может и не работать ваша прога.

Вы ведь объявление переменной сделали в главном блоке (main) а она скорее всего должна быть глобальной.

Может поэтому не пишет теперь ошибку линкера, как раньше было? Уберите структуру из main, пусть она будет как и была в дополнительном модуле rc5.h

По мне так лучше решить синтаксическую ошибку, чем собрать неработающую программу.
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение urry »

Поправил "грамматику и орфографию", не вчитываясь в текст.
Вложения
remote.zip
(88.27 КБ) 176 скачиваний
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение YS »

оба .c файла


Ага!

Модуль rc5.h не содержит include guard'а. От этого и проблемы...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение urry »

не, там созданы 2 структуры rc5 -одна в мейне, вторая в файле rc5.c
поскольку ни одна не вынесена екстерном в заголовочный файл, конфликт не возник.
Для 2 файлов можно как бы этот предохранитель и не ставить, но здесь дело почерка, я поставил :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение YS »

Для 2 файлов можно как бы этот предохранитель и не ставить


Хе-хе, это сейчас два файла. А что будет потом - никто не знает. :)

я поставил


И правильно сделали. :) :beer:
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

urry писал(а):Поправил "грамматику и орфографию", не вчитываясь в текст.
ух ты вот это сюрприз!! вставил ваш скомпиленый hex в протеус и всё работает!! :music: :music: спасибо огромное :beer: вот только у меня наверно что то с компилятором? сам перекомпильть проект не могу, undefined member набросало 12 ошибок http://s2.postimg.cc/xu17z1oxl/Clipboard01.jpg
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение urry »

моя версия кв 2.4.4а - попробуй пересобрать проект с 0.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

urry писал(а):моя версия кв 2.4.4а - попробуй пересобрать проект с 0.

какой то глюк в компиляторе был, перезаписал другую версию и всё ок стало, большое вам спасибо за помощь :) еще короткий вопрос не в тему, я добавил это в свой основной проект который использовал и у меня в атмеге 8 уже забито 96% flash памяти. Это много мороки было бы мне как видите вообще почти не разбирающемуся перенести на атмегу 16 программу ? :))
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение urry »

нет
Valaster
Родился
Сообщения: 3
Зарегистрирован: Пн фев 02, 2015 23:06:33

Re: программа написанная в AVR Studio na CVAVR

Сообщение Valaster »

Здравствуйте!
Подскажите, пожалуйста, где в коде прописывается к какой ноге подключен выход ИК-приемника.
Хочу приемник перенести с вывода PB0 на PB7. Не могу найти, ткните пальцем, пожалуйста...
Valaster
Родился
Сообщения: 3
Зарегистрирован: Пн фев 02, 2015 23:06:33

Re: программа написанная в AVR Studio na CVAVR

Сообщение Valaster »

Valaster писал(а):Здравствуйте!
Подскажите, пожалуйста, где в коде прописывается к какой ноге подключен выход ИК-приемника.
Хочу приемник перенести с вывода PB0 на PB7. Не могу найти, ткните пальцем, пожалуйста...
С этим вопросом разобрался...
А как сделать чтобы гирлянду можно было потушить и включить кнопкой Power. При включении должна вновь работать программа, которая была выбрана до выключения. И может быть, дополнить функционал управлением скоростью переключения, т.е. ускорить индикацию или замедлить.
Valaster
Родился
Сообщения: 3
Зарегистрирован: Пн фев 02, 2015 23:06:33

Re: программа написанная в AVR Studio na CVAVR

Сообщение Valaster »

Прошу помощи у корифеев!
Задача заключается в том, чтобы кнопкой power потушить гирлянду, а повторным нажатием на power включить гирлянду с того же case, на котором она была выключена?
Чтобы программа также продолжила работу после отключения питания контроллера.

Что я не так делаю? Срабатывание от кнопки POWER не постоянное (иногда надо трижды нажать, чтобы произошло переключение программы или вызов программы после отключения питания). И не удается включить последнюю исполняемую программу после подачи питания (т.е. не задействую кнопку POWER, подать питание и сразу включилась бы последняя исполняемая программа).

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

#include "delay.h"
#include "rc5.h"
#include "main.h"


eeprom int d_eep;       

int lastCommand = 1; // последняя полученая комманда. Счиитываем её с eeprom    
int state = 0; // состояние             

void main (void)

{
PORTB = 0b00000000; DDRB = 0b00000000; // тут светодиоды и на РВ7 ИК-порт
PORTC = 0b00000000; DDRC = 0b00000000;
PORTD = 0b00000000; DDRD = 0b11111100; // тут светодиоды
         Rc5_SetRx();

lastCommand = d_eep;            
                                
#asm ("sei")            
        
                        
while(1)
         {
                 if (rc5.dataOK) {
                 rc5.dataOK = 0;        
                
                
                 if (rc5.command == 12) { // нажатие кнопки POWER
                 if (state) { // если гирлянда включена
                 state = 0;     
                 PORTD=0b00000000;
                 delay_ms(40);
                 d_eep = lastCommand;            /// тушим гирлянду и сохраняем lastCommand в eeprom
                                 }
                         else {
                                   state = 1;
                                   rc5.command = lastCommand;
                                        
                                 }
                                                
                 }                                                                                                      
                 if (state) // если включено
                                                        
                 switch (rc5.command) {
                 case 1: while (rc5.dataOK==0) {         // программа по нажатию 1
                 lastCommand = rc5.command; // сохраняем последнее нажатие
                 d_eep = lastCommand;   
                         PORTD=0b00000100;
                         delay_ms(500);
                         PORTD=0b00001000;
                         delay_ms(500);
                         PORTD=0b00000100;
                         delay_ms(500);
                 } break;       
                
                 case 2: while (rc5.dataOK==0) {
                 lastCommand = rc5.command; // сохраняем последнее нажатие
                 d_eep = lastCommand;   
                         PORTD=0b00001100;
                         delay_ms(500);
                         PORTD=0b00011000;
                         delay_ms(500);
                         PORTD=0b00010100;
                         delay_ms(500);
                 } break;

                 case 3: while (rc5.dataOK==0) {
                 lastCommand = rc5.command; // сохраняем последнее нажатие
                 d_eep = lastCommand;
                         PORTB=0b00000000;
                         PORTD=0b00000100;
                         delay_ms(100);
                         PORTB=0b00000000;
                         PORTD=0b00001100;
                         delay_ms(100);
                         PORTB=0b00000000;
                         PORTD=0b00011100;
                         delay_ms(100);
                         PORTB=0b00000000;
                         PORTD=0b00111100;
                         delay_ms(100);
                         PORTB=0b00000000;
                         PORTD=0b01111100;
                         delay_ms(100);
                         PORTB=0b00000000;
                         PORTD=0b11111100;
                         delay_ms(100);
                         PORTB=0b00000001;
                         PORTD=0b11111100;
                         delay_ms(100);
                         PORTB=0b00000011;
                         PORTD=0b11111100;
                         delay_ms(100);
                 } break;
                                        
                 }                      
         }                              
}

         delay_ms(700);
         rc5.dataOK = 0;                
}


Ответить

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