roboforum.ru

Технический форум по робототехнике.

помогите разобратся

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

помогите разобратся

Сообщение inc » 13 ноя 2009, 13:28

Написал на С программу в Codevision с ипользованием флагов размером в 1бит и вот такими IF:
if((in_work==0)&&(time_work_set==1)&&(time_pause_set==0)
программа нормально компилируется , но работать не хочет в отладчике видно, что она на ифы тупо забивает и идет
дальше.
Подскажите в чём дело как этим боротся?
Вложения
dizel.rar
(3.29 КиБ) Скачиваний: 9
inc
 
Сообщения: 3
Зарегистрирован: 13 ноя 2009, 11:54
Откуда: Луганск

Re: помогите разобратся

Сообщение Duhas » 13 ноя 2009, 13:46

мне вот интересно где флаги эти хранятся после компиляции )

а по теме - хз ) я давно на сях не пишу.. но явных косяков не вижу..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: помогите разобратся

Сообщение EdGull » 13 ноя 2009, 13:49

inc дай внятное название теме, иначе получишь предупреждение.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: помогите разобратся

Сообщение Master » 13 ноя 2009, 13:59

По моему, такие записи не корректны, нельзя в дефайнах писать через ";" команды
Код: Выделить всёРазвернуть
#define sound_on TCCR0=0x3D;TCNT0=0x00;OCR0=0xFA
#define  sound_down TCCR0=0x00; TCNT0=0x00;OCR0=0x00
#define time_start TCCR1A=0x00; TCCR1B=0x05;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x3A;OCR1AL=0x98;OCR1BH=0x00;OCR1BL=0x00
#define time_stop TCCR1A=0x00;TCCR1B=0x08;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x3A;OCR1AL=0x98;OCR1BH=0x00;OCR1BL=0x00


Добавлено спустя 5 минут 22 секунды:
Попробуй закоментировать строчку, кажется в ней прога будет зависать.

Код: Выделить всёРазвернуть
while(start_butt==0){}
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: помогите разобратся

Сообщение SSG » 13 ноя 2009, 14:11

А у меня ругается вот как:
Вложения
Error.png
Error.png (3.04 КиБ) Просмотров: 1579
I live My life!
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Re: помогите разобратся

Сообщение Master » 13 ноя 2009, 14:16

А как ты его компилишь, он же выложил тока сишный файл, а остальных нету?
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: помогите разобратся

Сообщение inc » 13 ноя 2009, 15:02

сейчас выкладываю весь проект. Спасибо, но почему он в ифы не заходит? (while(start_butt==0){}-работает как и должно)
p.s.извиняюсь за дублирование темы- запарился.
Вложения
code_vis.rar
проект
(59.85 КиБ) Скачиваний: 7
inc
 
Сообщения: 3
Зарегистрирован: 13 ноя 2009, 11:54
Откуда: Луганск

Re: помогите разобратся

Сообщение Master » 13 ноя 2009, 15:40

while(start_butt==0){}-работает как и должно

А не получается что когда start_butt=0 вы в этой процедуре весите и до ифов дело не доходи или он их игнорирует даже если кнопка не нажата?
И в чем вы симулируете?

Добавлено спустя 3 минуты 34 секунды:
Для начала нужно удалить запятые везде после фигурных скобок
};
После них точка с запятой после них никогда не ставится, и очень странно что ваш CV не выдал ошибки.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: помогите разобратся

Сообщение Michael_K » 13 ноя 2009, 15:58

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

1. Как минимум точки с запятой наставить после дефайнов, где несколько команд.
А вообще принято так
#define sound_on() {blabla=77; count++; PORT|=0x55;}

2. Точки с запятой после фигурных скобок лишние не бывают.
(вообще по стандарту точки с запятой можно лишние втыкать между операторами - это не ошибка,
поэтому компилер и не ругается, и не должен).

3. Посмотреть как определен бит в хедерах у кодевижена.
Вполне вероятно, что через чар, тогда сравнивать его с единицей
(а может и нулем - от реализации зависит) некорректно.

Правильнее, имхо, писать так: if((bit1)&(!bit2)).
Но лучше понять как в кодевижене реализован тип бит.
Последний раз редактировалось Michael_K 13 ноя 2009, 16:31, всего редактировалось 1 раз.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: помогите разобратся

Сообщение Master » 13 ноя 2009, 16:06

2. Точки с запятой после фигурных скобок лишние не бывают.
(вообще по стандарту точки с запятой можно лишние втыкать между операторами - это не ошибка,
поэтому компилер и не ругается, и не должен).

У меня ругается, значит это заморочки CV.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: помогите разобратся

Сообщение inc » 13 ноя 2009, 16:55

спасибо, буду дальше разбиратся

Добавлено спустя 10 минут 58 секунд:
да, точно bit определяется через char,и как можно поступить в данном случае?
inc
 
Сообщения: 3
Зарегистрирован: 13 ноя 2009, 11:54
Откуда: Луганск

Re: помогите разобратся

Сообщение Master » 13 ноя 2009, 17:05

юзайте не bit, а char, памяти вроде хватит.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: помогите разобратся

Сообщение SSG » 13 ноя 2009, 17:45

Набросал тестовую программку под Atmega 8 с двумя флагами и одним ифом. Все откомпилировалось и в VMLab нормально работает (в ифы заходит).

Добавлено спустя 1 минуту 23 секунды:
Master писал(а):юзайте не bit, а char, памяти вроде хватит.

Действительно. Можно все флаги в один или несколько чаров собрать и устанавливать-читать только нужные биты байта.
I live My life!
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18