Страница 2 из 2

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

Добавлено: Пн май 06, 2013 15:45:28
vitalik_1984
Ну понятно будет жаловаться! Если переменная локальная и нет объявления, но при этом всем происходит к ней обращение, соответственно читать оттуда нечего,то может и не работать ваша прога.

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

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

По мне так лучше решить синтаксическую ошибку, чем собрать неработающую программу.

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

Добавлено: Пн май 06, 2013 19:05:44
urry
Поправил "грамматику и орфографию", не вчитываясь в текст.

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

Добавлено: Пн май 06, 2013 20:53:02
YS
оба .c файла
Ага!

Модуль rc5.h не содержит include guard'а. От этого и проблемы...

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

Добавлено: Пн май 06, 2013 21:14:32
urry
не, там созданы 2 структуры rc5 -одна в мейне, вторая в файле rc5.c
поскольку ни одна не вынесена екстерном в заголовочный файл, конфликт не возник.
Для 2 файлов можно как бы этот предохранитель и не ставить, но здесь дело почерка, я поставил :)

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

Добавлено: Пн май 06, 2013 21:23:07
YS
Для 2 файлов можно как бы этот предохранитель и не ставить
Хе-хе, это сейчас два файла. А что будет потом - никто не знает. :)
я поставил
И правильно сделали. :) :beer:

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

Добавлено: Пн май 06, 2013 21:45:06
sirga
urry писал(а):Поправил "грамматику и орфографию", не вчитываясь в текст.
ух ты вот это сюрприз!! вставил ваш скомпиленый hex в протеус и всё работает!! :music: :music: спасибо огромное :beer: вот только у меня наверно что то с компилятором? сам перекомпильть проект не могу, undefined member набросало 12 ошибок http://s2.postimg.cc/xu17z1oxl/Clipboard01.jpg

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

Добавлено: Пн май 06, 2013 22:09:25
urry
моя версия кв 2.4.4а - попробуй пересобрать проект с 0.

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

Добавлено: Вт май 07, 2013 19:48:15
sirga
urry писал(а):моя версия кв 2.4.4а - попробуй пересобрать проект с 0.
какой то глюк в компиляторе был, перезаписал другую версию и всё ок стало, большое вам спасибо за помощь :) еще короткий вопрос не в тему, я добавил это в свой основной проект который использовал и у меня в атмеге 8 уже забито 96% flash памяти. Это много мороки было бы мне как видите вообще почти не разбирающемуся перенести на атмегу 16 программу ? :))

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

Добавлено: Ср май 08, 2013 07:38:16
urry
нет

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

Добавлено: Чт фев 05, 2015 09:18:53
Valaster
Здравствуйте!
Подскажите, пожалуйста, где в коде прописывается к какой ноге подключен выход ИК-приемника.
Хочу приемник перенести с вывода PB0 на PB7. Не могу найти, ткните пальцем, пожалуйста...

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

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

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

Добавлено: Чт мар 05, 2015 19:17:40
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;                
}