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

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 601
Зарегистрирован: Пт фев 13, 2009 20:58:13
Откуда: Донецк

Сообщение DataLife »

Может, конечно, но дело уже на принцип пошло.
Растолкуйте на пальцах, пожалуйста (только без среднего).
Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

Сообщение ValBag »

DataLife
Поставьте внутреннюю подтяжку: PORTB.3=1;
Реклама
Родился
Сообщения: 2
Зарегистрирован: Вс июн 05, 2011 16:29:52

Сообщение ukw13 »

DataLife писал(а):Тыкните меня носом в то место, где я не так делаю?

PINB.3=1; - до начала программы, что бы дальнейший цикл не начался раньше времени, подаю на пинБ.3 лог_1.
PORTB=0x00; - все ноги на "выходе", вроде бы как...

Расталкуйте, что тут имеется в виду под подтяжкой? Я что-то запутался.

Голова кругом... не моё это программирование...
SOS! :idea:
Неплохо бы конечно почитать про устройство портов для начала, а то ШИМ, понимаешь..
PINB.3=1; - до начала программы, что бы дальнейший цикл не начался раньше времени, подаю на пинБ.3 лог_1.
Как физически выглядит ваше устройство? Вы можете записывать в ПИНБ.3 все что угодно, но при последующей проверке в цикле значение этого ПИНБ.3 будет определяться уровнями напряжений на нем. Сейчас у вас ПОРТБ.3 в воздухе болтается, вот

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

PORTB=0x00;
DDRB=0x03;
Значит что? А то что состояние Пина непредсказуемо, может быть как единицей, так и нулем в зависимости от погоды и мощности ближайшей радиостанции. Переведите в биты и увидьте что это означает что третий пин порта является входом без подтяжки. Подтяжка - в данном случае имеется ввиду подключение (внутри микроконтроллера) источника питания к выводу порта через некое большое (10К - 100К) сопротивление. Для того чтобы включить подтяжку в режиме работы Пина на вход (у вас DDRB=0x03;, соответственно 0 и 1 пины выход, а 3 и все остальные вход) необходимо записать в соответствующий(третий) Пин порта единицу, PORTB.3=1; Когда подтяжка включена на Пин порта, Пин порта является входом, и если больше ничего к этому Пину не подключено(а если и подключено) то по закону Ома можете прикинуть какой логический уровень будет в Пин? Единица будет.
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Сообщение demiurg301 »

Подскажите пжлст какая реальная скорость программного i2c в CVAVR. Где то читал что можно её увеличить путём уменьшения задержек в скомпиленно коде - мож кто поделится опытом ? - а то я c ASMoм на вы!!!
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср июн 08, 2011 11:32:49

Сообщение aleksandr88 »

Подскажите почему вылетает ошибка при определении порта и бита для датчика ds18b20
#asm
.equ __w1_port=0x15; PORTC
.equ __w1_bit=3
#endasm
ОШИБКА "Error(s) occured assembly" появляется вкладка библиотеки 1asm и в ней указывается на строки
.equ __w1_port=0x1B
.equ __w1_bit=0x00
если подключаю к этому порту и биту все фу рычит а другой назначить не могу
библиотека <1wire.h> подключена :cry:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Так напиши там, куда указывает ошибка, то же, что и до этого написал.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Реклама
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср июн 08, 2011 11:32:49

Сообщение aleksandr88 »

я прописываю но после компиляции все значение в 1.asm скидываются на прежние значение .вот скрин
Вложения
123.JPG
1
(59.09 КБ) 318 скачиваний
Последний раз редактировалось aleksandr88 Ср июн 08, 2011 12:32:08, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Скрин не видать. Какие вообще библиотеки подключены?
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср июн 08, 2011 11:32:49

Сообщение aleksandr88 »

да скрин не хочет грузится(
библиотеки 1wire,delay.h,ds18b20.h,lcd.h,stdio.h и проект подключил автоматом mega16_bits.h,stdarg.h
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Если можно дайте пожалуйста код на Си.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср июн 08, 2011 11:32:49

Сообщение aleksandr88 »

вот код держите
Вложения
1.txt
(2.02 КБ) 286 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Посмотрел, вроде всё правильно... Извините за наглость, но потребовался проект. Попробую скомпилировать.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср июн 08, 2011 11:32:49

Сообщение aleksandr88 »

уф )))) все разрешилось методом научного тыка ))) я ассемблерную вставку просто перенес в самый верх программы
и заработало все. Спасибо вам *Trigger* за оперативность ответа и желание помочь не думал что кто то сразу откликаться на мой вопрос )еще раз спасибо!!!
Встал на лапы
Аватара пользователя
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса

Сообщение demonchik »

КОТЫ!! привет!!! возник вопрос, но поиск по теме ничего не находит, вот я его и задам... есть необходимость передавать в функцию массив по указателю. ДА!!! плевое дело!!! но с передачей строки. а вот с передачей двумерного массива по ссылке уже стало проблемой. пишет что Error: 2.c(68): function argument #1 of type 'unsigned char [10][8]' is incompatible with required parameter of type 'unsigned char *'. как сделать чтоб понял кодвижен. тут есть наверно отступление от стандартов, свойственных данной среде?
радиоэлектроника - жизнь моя...
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула

Сообщение IfoR »

Ну динамический массив описывается как указатель на блок указателей на блок элементов. В таком случае в функцию достаточно было бы вписать параметр

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

unsigned char **X
. Здесь проблем никаких не будет.
Но у вас используется статический массив, который представляется как указатель на одномерный массив, а обращение к элементу осуществляется с помощью высчитывания смещения, учитывая заданные границы массива.
Отсюда вывод: обращаться к матрице так, как вы обращаетесь технически можно, но компилятор вам не даёт это сделать по этическим соображениям. :)
Например, можно так:

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

char M[10][10];

void func(char *X)
{
}

int main()
{
 func( (char *)M ): 

 return 0;
}
Или так:

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

char M[10][10];

void func(void *X)
{
}

int main()
{
 func( M ): 

 return 0;
}
Однако, здесь возникает проблема: А как, не зная размеры матрицы, высчитать смещение? Тогда придется передать функции ещё и размер матрицы и вручную вычислять смещение.
По этому в параметре функции, в общем случае, придётся объявлять опять же статический массив:

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

char M[10][10];

void func(char X[10][10])
{
}

int main()
{
 func( M ): 

 return 0;
}
К слову, первое число в объявлении не обязательно, т.к. оно не участвует в формировании смещения:

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

void func(char X[][10])
Ну а далее по ситуации.

P.S. да, стати, по ссылке массив передавать, ну скажем так, не имеет смысла, т.к. сама конструкция массива уже подразумевает присутствие указателя на этот массив. По этому вычислять ещё один указатель (который будет указывать на указатель на массив) для передачи по ссылке...
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса

Сообщение demonchik »

IfoR, спасиб за вразумительное обьяснение!!! понял. :tea: буду идти дальше. вот примонтировал карточку к контроллеру, перенес дисплей на програмный SPI, теперь думаю писать что-то вроде файлового менеджера. СПАСИБ ОГРОМНОЕ ЗА ПОМОЩЬ, IfoR, и всем остальным также, откликавшимся ранее!!!
радиоэлектроника - жизнь моя...
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 123
Зарегистрирован: Сб ноя 18, 2006 17:14:15

Сообщение boobonick »

Подскажите, плиз, а как копировать ворнинги и ошибки в буфер обмена?
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Правой клавишей -> Copy.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Встал на лапы
Аватара пользователя
Сообщения: 123
Зарегистрирован: Сб ноя 18, 2006 17:14:15

Сообщение boobonick »

Наверное не там смотрю))
Вложения
123.JPG
(138.54 КБ) 435 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Надо снизе нажимать. В поле Messages.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Ответить

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