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

Обсуждаем контроллеры компании Atmel.
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

дело не в меге или ещё чёмто мегу если и брать то 168 ибо 16 мега больно жирная и большая...да и смысл? мн ечисто спортивный интерес...так то всё влезло и ещё 2 процента свободно
просто хочется узнать можно ли как-то ещё!
а я вот влоаты ненавижу...попробуйте к числу 1600000000 прибавить 1 хоть 1000 раз прибавлять будете толку от этого будет НОЛЬ!
но в то же время лонгинта мне уже как бы тоже мало...в притык я бы сказал...потому и хочу узнать есть ли резервы освободить флеш текстом(Еепрома то внутренняя имеется ничо не надо подключать....)
чтоб написать свои процедуры работы с 64 битными интами
П.С. А вы мой проект видели?
Там и кварц и ног хватило и входы и прерывания и экран 44780 разместился свободно и ещё свободных осталось ног...
П.С. 1wire 1 ногу отберет а код для одного устройства вообще мизерно места занимает!!!
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
rs39
Открыл глаза
Сообщения: 53
Зарегистрирован: Сб май 07, 2011 14:35:24
Откуда: Россия

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

Сообщение rs39 »

Здравствуйте! Помогите новичку в CVAVR.
Совсем моск сломал в голове каша.
Вопрос по передаче из UART на COM порт.
На примере термометра и 2-х DS18b20 делаю все работает ок, терминалом в пк принимаю построчно:
temp 1: 27'C
temp 2: 23'C
и так по кругу.
Если правильно понимаю то код на COM передается в аксии. А мне нужно в последствии передать это на другое приемное устройство не на пк, и не в аксии а в байтах. Причем символы алфавита отсечь а передать только номер датчика и значение температуры.
Как это сделать никак невразумлю. Нужны ли дополнительные преобразования и какие?
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

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

Сообщение hd44780 »

rs39 писал(а):Как это сделать никак невразумлю. Нужны ли дополнительные преобразования и какие?


Ну как-то так.

шлёшь 3 байта на датчик:
1-й байт - номер датчика
2,3 байты - температура, умноженная на 10 (чтоб десятые были и не возиться с плав. точкой). В порядке младший-старший. Или наоборот - всё равно.

Сколько датчиков столько таких 3-х байтовых посылок.
Я что-то родственное делал лет 6-7 назад. Работало идеально :)) .
Правда датчик был один, но это непринципиально.
Аватара пользователя
Волосатый
Сверлит текстолит когтями
Сообщения: 1288
Зарегистрирован: Пн апр 14, 2008 12:54:35
Откуда: Город ГЕРОЙ Ленинград
Контактная информация:

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

Сообщение Волосатый »

Помогите советом. Прошиваю МК встроенным в CVAVR прогером. Что бы залить новую прошивку мне приходится нажимать "Erase chip". При этом стирается и eeprom. Так вот есть ли способ стереть только flash память не трогая eeprom?

П.С. почему мне приходится стирать чип - после залития новой прошивки, независимо от того больше она или меньше, или я вообще одну циферку подправил в коде, программатор при проверке залитого выдает CRC error на таком-то адресе, и естесственно устройство не работает...

П.П.С. Камень mega8535. Прогер STK200
Опыт приходит сразу после того, как он был нужен...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

прошейте фьюз EESAVE - и при последующем стирании чипа EEPROM не будет стираться.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
rs39
Открыл глаза
Сообщения: 53
Зарегистрирован: Сб май 07, 2011 14:35:24
Откуда: Россия

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

Сообщение rs39 »

Так вот же, переключатель в самом низу окна прошивальщика (см. скриншот).
Ставим галку и EEPROM не будет затираться, не при записи не при стирании.
Вложения
eeprom.PNG
(20.31 КБ) 411 скачиваний
Аватара пользователя
Волосатый
Сверлит текстолит когтями
Сообщения: 1288
Зарегистрирован: Пн апр 14, 2008 12:54:35
Откуда: Город ГЕРОЙ Ленинград
Контактная информация:

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

Сообщение Волосатый »

ARV писал(а):прошейте фьюз EESAVE - и при последующем стирании чипа EEPROM не будет стираться.
Спасибо, помогло :)
rs39 писал(а):Так вот же, переключатель в самом низу окна прошивальщика (см. скриншот).
Ставим галку и EEPROM не будет затираться, не при записи не при стирании.
А эта опция автоматом заливает еепром после стирания чипа, это не подходит потому что мне не надо перезаписывать еепром.
Опыт приходит сразу после того, как он был нужен...
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Здравствуйте форумчане.
Посоветуйте пожалуйста внешнее ОЗУ для Atmеga128 c параллельным интерфесом , килобайт на 20-30 , чтобы можно было в CVAVR её подключить и работать не замарачиваясь с написанием процедур. А тоговорят atmelовскую сняли с производства.

ДА , ещё такой вопрос могу ли я повесить на программный i2c в CVAVR 2 разных устройства - RTC PCF8563 и память 24С08 - не будут ли они конфликтовать?
Аватара пользователя
rs39
Открыл глаза
Сообщения: 53
Зарегистрирован: Сб май 07, 2011 14:35:24
Откуда: Россия

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

Сообщение rs39 »

Имеется в наличии энкодер. На выходе у него 10 разрядов. Работает по принципу кода Грея.
Хочу реализовать угломер, с выводом данных на lcd дисплей. Так как разрядов на выходе энкодера больше 8, то подключаю его на 2 порта атмеги. Поясняющий рисунок прилагаю во вложении.
Подскажите алгоритм, как реализовать правильно.
Сам думаю так:
<<В цикле из 10 шагов опрашивать состояние каждого бита порта и складывать данные в переменную либо в массив.>> В конце цикла скидывать значение переменной на lcd, с этим вопросов нет. А вот про цикл и массив - я ничего не усложняю? Может как-то проще можно реализовать? :)
Вложения
encoder.PNG
(6.78 КБ) 422 скачивания
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

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

int grey_code = ((PINA & 0x03) << 8) | PINB; // PINA - старшие 2 бита с энкодера, PINB - младшие 8 бит
и никаких массивов
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
rs39
Открыл глаза
Сообщения: 53
Зарегистрирован: Сб май 07, 2011 14:35:24
Откуда: Россия

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

Сообщение rs39 »

Спасибо! Да действительно все проще.. Век живи век учись :)
maxpetr1993
Открыл глаза
Сообщения: 53
Зарегистрирован: Пт май 13, 2011 21:16:40
Откуда: НИЖЕГОРОДСКАЯ ОБЛ

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

Сообщение maxpetr1993 »

доброго времени суток)) вообщем проблема в следующем пишу Бегущею строку ,то есть дисплей 8х64 пикселя
,часы, термометр,ну и соответственно текст ,если перемещать символы со с одного знакоместа на другое то конечно это оч просто и проблем нет,а вот чтоб двигать символы на один пиксель в лева или право бьюсь головой об стол))в низ и вверх тоже оч просто)) а вот в бок( тоесть нужно в один отображаймый байт переписывать какуюто часть одного байта и соседнего байта из буфера в котором уже лежит подготовленная картинка )) не прошу кода хоть намекните на нормальном русском языке,а если кусочек для примера покажите ну просто супер будет))
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

вы бегущую-то строку как делаете? 64 вертикальных столбика у вас при помощи чего управляются? небось, сдвиговые регистры? может, надо всего-авсего на 1 такт больше-меньше давать в них, чтобы на 1 пиксел сдвинуть всю строку?
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

clawham писал(а):а я вот влоаты ненавижу...попробуйте к числу 1600000000 прибавить 1 хоть 1000 раз прибавлять будете толку от этого будет НОЛЬ!

А вот это зря. Флоаты не виноваты - причина в ограниченной разрядности. Не зря спецы по численнам методам рекомендуют при суммировании больших массивов данных сначала провести сортировку, и начинать с самых меньших значений, тогда погрешность будет меньше.
У меня в одном проекте работал измеритель мощности ( программный, конечно ), результаты индицировались, и еще нужно все это было непрерывно интегрировать, чтобы получить расход энергии ( что-то типа счетчика ) . Float для быстроты у меня была нестандартная , трехбайтная, но для интегрирования была заведена длинная ( 4 байта мантисса ) переменная, что-то вроде Double float, причем результаты суммировались в течение часа, а затем добавлядись в суммарный расход. Так решился вопрос минимизации вычислительных ресурсов, при этом погрешность вычислений была на порядок меньше инструментальной погрешности аналоговой части.
В общем, голь на выдумки хитра :))
maxpetr1993
Открыл глаза
Сообщения: 53
Зарегистрирован: Пт май 13, 2011 21:16:40
Откуда: НИЖЕГОРОДСКАЯ ОБЛ

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

Сообщение maxpetr1993 »

шрифт старый ДОСовский, то есть :

1 байт 1 байт 1 байт ........
2 байт 2 байт 2 байт ......
3 байт 3 байт 3 байт
.....
.....

1 знакоместо 2 знакоместо 3 знакоместо



в памяти лежат с лева на право ,с низу в верх то есть 1 байты (1-8) знакместа
далее 2 байты почереди и тд
строка по 8байт выводиться за одни цикл на 8 шт 595
затем 2 затетем теретья....
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

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

Сообщение avreal »

Jack_A писал(а): В общем, голь на выдумки хитра :))
Ещё довольно распространённый способ -- два аккумулятора.
Грубо: пусть значения могут меняться от 0.001 до 1000.0
Всё, что меньше 1 -- накапливаем в одном аккумуляторе, больше или равно -- в другом.
В конце цикла берём сумму аккумуляторов.
Точность немного ниже, чем при сортировке, но гораздо меньше работы.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
rs39
Открыл глаза
Сообщения: 53
Зарегистрирован: Сб май 07, 2011 14:35:24
Откуда: Россия

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

Сообщение rs39 »

Мастер Ломастер писал(а):

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

int grey_code = ((PINA & 0x03) << 8) | PINB; // PINA - старшие 2 бита с энкодера, PINB - младшие 8 бит
и никаких массивов

Ок, с этим разобрался с вашей помощью. Еще раз спасибо! :)
А следующий вопрос:
Как отправить значение переменной grey_code по UART на COM порт к примеру? Ведь размер получается больше одного байта, и функцией putchar отправить не получится. Искал инфо об том как отправлять большие числа, но везде только про строки пишут. А это мне не подходит, нужно отправить байтами.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

rs39 писал(а):А следующий вопрос:
Как отправить значение переменной grey_code по UART на COM порт к примеру? Ведь размер получается больше одного байта, и функцией putchar отправить не получится. Искал инфо об том как отправлять большие числа, но везде только про строки пишут. А это мне не подходит, нужно отправить байтами.

ну вы даете! может, стОит букваро по Си почитать маленько?!

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

putchar(grey_code & 0xFF);
putchar(grey_code >> 8);

это если вам надо передать в БИНАРНОМ виде. а если в символьном - курите формат printf
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
rs39
Открыл глаза
Сообщения: 53
Зарегистрирован: Сб май 07, 2011 14:35:24
Откуда: Россия

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

Сообщение rs39 »

Окей спасибо теперь ясно! :)
Да в том то и дело, со спринтф и другими ф-циями разобрался, а вот с этой мелочью нет. А может не там искал просто :))
nedman
Родился
Сообщения: 2
Зарегистрирован: Пн май 16, 2011 13:53:25

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

Сообщение nedman »

доброго времени суток... вопрос касается таймера на атмега8(извините если задавали много раз. сам не нашел). как написать код ?
если 1 на пине мк, то счетчик начинает работать 5 секунд и посылается на другой пин 1. после работы(5 сек) этот пин ставится в 0. в коде можно использовать разные ножки мк я пойму. только прошу пояснить, чтобы понять.
Ответить

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