Не компилируется проэкт..
|
|
master3763 | Дата: Пятница, 30.03.2012, 00:36 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Здравствуйте !
Помогите разобратся с компиляцией проэкта. Пишу вот эту программу термостата : http://my-avr.at.ua/publ/1-1-0-11 с помощю мастера Wizard.
Полсе компиляции получаю Error: C:\...\termostat\List\term.asm(1420): Invalid redefinition of '__w1_port' Error: C:\...\termostat\List\term.asm(1421): Invalid redefinition of '__w1_bit'
Какой CodeVision вы используете ? У меня версия 2.05.4 Evalution. Может не той версией пользуюсь ?
|
|
| |
HiSER | Дата: Суббота, 31.03.2012, 08:29 | Сообщение # 2 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| hi ПроЕкт!!!
обрати внимание на Code #asm .equ __w1_port=0x18 ;PORTB .equ __w1_bit=0 #endasm
|
|
| |
master3763 | Дата: Воскресенье, 01.04.2012, 12:01 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Здравствуйте. А на что именно обратить внимание ?
Понятно что в этих строчках кода сообщаем куда подключен датчик. Тоесть на порт B и на пин B.0. Еще можно заметить что код должен быть вот в таком виде :
Code #asm .equ __w1_port=0x18; PORTB .equ __w1_bit=0 #endasm
Но думаю разницы некакой. Проект без изменений, не компилируется... Делаю так как описанно в статье, через мастер wizard настраиваю протокол 1-wire на порт B пин 0.
Может всетаки это связанно с версией CodeVision ? У меня CodeVision 2.05.4 Evalution.
|
|
| |
HiSER | Дата: Понедельник, 02.04.2012, 23:15 | Сообщение # 4 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| Возможно в компиляторе ограничения...
|
|
| |
master3763 | Дата: Понедельник, 02.04.2012, 23:45 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| А как убрать эти ограничения ? Или всетаки мне установить какую нибудь другую версию CodeVision ? Какую посоветуете и где можно было бы ее скачать вместе с кряком ?
|
|
| |
HiSER | Дата: Вторник, 03.04.2012, 00:14 | Сообщение # 6 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| версию не Evalution!
|
|
| |
master3763 | Дата: Вторник, 03.04.2012, 00:53 | Сообщение # 7 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Скажите пажалуйста а это точно правильный синтаксис программы ?
Code #asm .equ __w1_port=0x18; PORTB .equ __w1_bit=0 #endasm
Или мможет надо делать так ?
Code #asm .equ _w1_port=0x18; PORTB .equ _w1_bit=0 #endasm
Сообщение отредактировал master3763 - Вторник, 03.04.2012, 00:54 |
|
| |
HiSER | Дата: Вторник, 03.04.2012, 13:31 | Сообщение # 8 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| в ошибке у тебя имя константы было. соответственно первый правильно. Урезанная версия компилятора не разрешает использовать библиотеку, либо не в том месте стоит #asm....#endasm.
|
|
| |
master3763 | Дата: Вторник, 03.04.2012, 16:10 | Сообщение # 9 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Скачал заново CodeVision Profesional 2.05.0 . Крякнул вродебы. Компиляция проходит успешно, только вот после Project -- > Build All
выводит также
Error: C:\...\termostat\List\term.asm(1420): Invalid redefinition of '__w1_port' Error: C:\...\termostat\List\term.asm(1421): Invalid redefinition of '__w1_bit'
Некак не могу разобратся! Пробовал писать в ручную весь код
Code #asm .equ __w1_port=0x18; PORTB .equ __w1_bit=0 #endasm
Ничего не получается. Скорее дело в Codevision... А где можно достать полную версию компилятора CodeVision ?
|
|
| |
HiSER | Дата: Вторник, 03.04.2012, 18:20 | Сообщение # 10 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| покажи весь код
|
|
| |
master3763 | Дата: Вторник, 03.04.2012, 19:19 | Сообщение # 11 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Code #include <mega8.h> #include <delay.h> #asm .equ __w1_port=0x18 ;PORTB .equ __w1_bit=0 #endasm #include <1wire.h>
#include <ds18b20.h> void main(void) {
unsigned char devices; int temp; devices = w1_init(); PORTD = 0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D DDRD = 0xFF; while(devices>0) { temp=ds18b20_temperature(0); //читаем температуру if (temp>1000) //если датчик выдаёт больше 1000 { temp=4096-temp; //отнимаем от данных 4096 temp=-temp; //и ставим знак "минус" }
if (temp<18) // устанавливаем нижней порог PORTD.0 = 1; else PORTD.0=0; if (temp>28) // установим верхний порог PORTD.1=1; else PORTD.1=0; }
}
|
|
| |
Alik77 | Дата: Четверг, 28.06.2012, 22:01 | Сообщение # 12 |
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Код написан правильно и у меня компилируется нормально в CodeVisionAVR 1.25.5 Professional
Проблема в компиляторе.
Сообщение отредактировал Alik77 - Четверг, 28.06.2012, 22:02 |
|
| |