Страница 295 из 421

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

Добавлено: Вт дек 24, 2013 10:49:14
ibiza11
Discrim, скопируйте сообщения компилятора после сборки проекта и вставьте сюда.

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

Добавлено: Вт дек 24, 2013 14:52:04
Discrim
ibiza11 писал(а):Discrim, скопируйте сообщения компилятора после сборки проекта и вставьте сюда.
СпойлерBuild configuration: Release
Chip: ATmega16
Clock frequency: 7,370000 MHz
Program type: Application
Memory model: Small
Optimize for: Size
(s)printf features: float, width, precision
(s)scanf features: int, width
Promote 'char' to 'int': No
'char' is unsigned: Yes
global 'const' stored in FLASH: No
8 bit enums: Yes
Enhanced function parameters passing: Yes
Automatic register allocation: Yes
Smart register allocation: Yes

Build: 221
13141 line(s) compiled
No errors
1 warning(s)

Bit variables size: 0 byte(s)

Data Stack area: 0x60 to 0x15F
Data Stack size: 256 byte(s)
Estimated Data Stack usage: 1 byte(s)

RAM Global variables area: 0x160 to 0x167
RAM Global variables size: 8 byte(s)

Hardware Stack area: 0x168 to 0x45F
Hardware Stack size: 760 byte(s)

Heap size: 0 byte(s)

EEPROM usage: 0 byte(s), 0,0% of EEPROM
Program size: 364 words (728 bytes), 4,4% of FLASH
0 words (0 bytes), 0,0% reduced by Code Compression

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

Добавлено: Вт дек 24, 2013 15:46:47
dreamernf
Discrim В папке Release не смотрел hex файл? Там есть опция - что это Debug или Release , соответсвенно hex в нужную папку генерится

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

Добавлено: Вт дек 24, 2013 16:02:42
dimka86
Уважаемые коты подскажите пожалуйста пишу программу которая считывает показания с датчиков по запросу через Usart 'a01e'прием по прерыванию организован, должна ответить 'OK'для проверки, но когда отвечает считывать показания с датчиков она прекращает в чем ошибка
Спойлер//распознование адреса
//мое
if (data=='e') //если получен символ е
{adr[i++]='\0'; //к строке адреса добавитьсимвол конец строки
read_adr=0;//запрет чтения адреса
i=0;//обнулить счетчик адреса
rx_adr=atoi(adr);
if(rx_adr==adr_devase)
{puts("OK");
rx_adr=0;
putchar(0x0d);
puts(adr);
putchar(0x0d);
//itoa( T_sred,buf);
//puts(buf);
//putchar(0x0d);
}//если получен адрес
}//перевод строки в число
if(read_adr==1){adr[i++]= data;}//если чтение адреса разрешено читаем адрес в строку
if(data=='a'){read_adr=1;}//если получен символ "а" разрешить чтение адреса
//мое
дописанно в обработчике прерывания генератора кода
а вот так считываю датчики
Спойлерwhile (1)
{
w1_init();
devices=w1_search( DS1820_SEARCH_ROM_CMD, RomCode ); //поиск датчиков на линии 1-wire
ageyn_1:temp= ds1820_temperature_10( &RomCode[0][0]);
if(temp==-9999)goto ageyn_1;
temp1=temp/80;
itoa( temp1,buf);
puts(buf);
putchar(0x0d);
ageyn_2:temp= ds1820_temperature_10( &RomCode[1][0]);
if(temp==-9999)goto ageyn_2;
temp2=temp/80;
itoa( temp2,buf);
puts(buf);
putchar(0x0d);
ageyn_3:temp= ds1820_temperature_10( &RomCode[2][0]);
if(temp==-9999)goto ageyn_3;
temp3=temp/80;
itoa( temp3,buf);
puts(buf);
putchar(0x0d);
T_sred=(( temp1+ temp2+ temp3)/3);
itoa( T_sred,buf);
puts(buf);
putchar(0x0d);


}//конец бесконечного цикла

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

Добавлено: Вт дек 24, 2013 22:55:00
Apparatchik
vitalik_1984 писал(а): Так для однократного повторения эти операции одинаковы.
Я имел ввиду что между скобками вместо плюса надо порязрядное ИЛИ (если я правильно понял, нужно перевести из двоично-десятичной в двоичную). Еще настораживает что индекс массива начинается с еденицы, а не с нуля.

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

Добавлено: Ср дек 25, 2013 00:41:01
pashaumnov
ребята подскажите пожалуйста, вопрос наверное глупый но как мне подключить в место переменного резистора аккумулятор литиионный, что бы схема индицировала его разряд?? схему прилагаю. если подключаю к ацп плюс а минус к минусу то при уменьшении вольт яркость всех светодиодов уменьшается а нужно что бы гасли поэтапно программа написана на 4в макс и 2.5 миним
вольтметр.JPG
(22.59 КБ) 241 скачивание
с переменным резистором все работает и в протеусе и в железе . без него нет.

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

Добавлено: Ср дек 25, 2013 00:47:25
AndTer
Доброго всем времени суток!
Решил вспомнить программирование, в итоге потратил пол дня впустую...
Ситуация такая, для оживления микроконтроллера и проверки монтажа решил для начала написать простую программу. Мигаем светодиодом:

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

#include <mega32a.h>
#include <delay.h>

void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x40;

while (1)
      {
      PORTD.6 = 0b1;
      delay_ms(1000);
      PORTD.6 = 0b0;
      delay_ms(1000);
      }
}
МК Atmega32A. Светодиод загорается и... всё... такое ощущение что виснет на задержке.
Потратил пол дня, пока не решил попробовать старую мегу. То есть без буквы "А".
Воткнул на туже плату, прошил (только в проекте сменил на atmega32 без буквы "А"), тот же код и... мигает...
Далее попытки разные с разными хедерами и 32L и 32 и 32A... Короче не хочет и всё...

Таймер отдельно пробовал, работал нормально, регистры внешние заполняет нормально, отсюда вывод что работает без delay_ms, а как его воткну в код, на нём виснет...

В чём может быть проблема? В CVAvr что то нужно сделать ещё для "А"? Или может брак?

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

Добавлено: Ср дек 25, 2013 07:56:11
Panda_Y2K
Порт которым мигаешь настроен на вход.

PORTD = 0b1 ----> 0b00000001
а нужно 0b01000000
или 0x40;

PORTD = 0x40;

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

Добавлено: Ср дек 25, 2013 10:30:32
AndTer
Panda_Y2K писал(а):...
Да нет, всё правильно у меня. Я шлю не просто в порт D, а в порт D.6...
Проблема именно либо в самом контроллере, либо CVAVR для контроллера с буквой "А" работает неправильно или что-то не настроено...

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

Добавлено: Ср дек 25, 2013 12:59:45
isx
Попробуйте сделать задержку еа аппаратном таймере, либо сделайте программно счётчик, а по нему таймер. Так же можно попробовать в протеусе прогнать (если там есть такой МК).

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

Добавлено: Ср дек 25, 2013 17:56:58
@nod
Доброго времени суток!

Начинаю изучать CVAVR и Протеус.

Вот, собс-но хотел "поковырять"
http://radioparty.ru/index.php/componen ... n2-ds18b20

Скомпилить не удалось.

Пишет ошибка.

Предполагаю файл ( единственный на моём компе ) interrupt.h не той редакции?

Если да, то где взять другой? Самому писать?

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

Добавлено: Ср дек 25, 2013 18:26:23
pashaumnov
вместо ISR надо interaupt, прога похоже написана в компиляторе вин авр.
да и если я не ошибаюсь в #include тоже не правильно описано.

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

Добавлено: Ср дек 25, 2013 18:28:53
oleg110592
Для отсчета временных задержек используем стандартную функцию WINAVR util/delay.h
видно что исходник для WinAVR - для Codevision придется переделать.

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

Добавлено: Ср дек 25, 2013 18:40:01
@nod
Спасибо!
Качну winavr.
Проще будет.

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

Добавлено: Ср дек 25, 2013 23:25:30
yvd
Подскажите пожалуйста новичку - есть где то готовые прошивки( мне нужно для защиты от перенапряжений сети). Нашел на форуме Кота интересные схемы, только эта ветка брошена еще в 2009 г. Писал в личку участникам форума которые писали что собирали но обратной связи к сожалению нету. Возможно единственный выход учится самому. Еще интересует где можно скачать CODEVISION AVR c паролями?

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

Добавлено: Чт дек 26, 2013 06:52:39
Panda_Y2K
Проблема именно либо в самом контроллере, либо CVAVR для контроллера с буквой "А" работает неправильно или что-то не настроено...
попробуй действительно с хидером для 32й без букв
вот так
i = 30000;
while(i) i--;

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

Добавлено: Чт дек 26, 2013 10:03:15
AndTer
Panda_Y2K писал(а):...
Пробовал разными, всё равно виснет. Задержку то можно реализовать по другому, но заново писать ту же i2c.lib как то не охота... С ней тоже виснет...
Прихожу к выводу что всё таки МК бракованный... Старый, который без "А", работает нормально...

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

Добавлено: Чт дек 26, 2013 10:08:36
AndTer
Подскажите, есть ли в CVAVR аналог баскомовской функции Shiftout и pulseout? Которые последовательно на ножку порта выводят побитно байт?
Суть в управлении внешним сдвиговым регистром. i2c функции не подходят, ибо уже используются на других ногах.
Есть какие то "красивые" решения? В том плане чтобы не было затратно для МК и в плане скорости и в плане размера кода?

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

Добавлено: Чт дек 26, 2013 10:25:37
oleg110592
отсюда http://avru.cwx.ru/uchebnik/avr_and_reg ... hc164.html

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

void hc164_wr(unsigned char dig){  //подпрограмма вывода данных в регистр
unsigned char a;
 for(a=0; a<8; a++){            //цикл для вывода 8 бит данных из массива
   PORTB.0 = buf[dig] & 1<<a;   //выводим в линию DATA текущий бит 
   PORTB.1=0;         //опускаем линию CLK в лог.0
   PORTB.1=1;         //поднимаем линию CLK в лог.1
 }
}    

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

Добавлено: Чт дек 26, 2013 15:59:04
BCluster
AndTer писал(а):Которые последовательно на ножку порта выводят побитно байт?
вообще народ обленился :facepalm: