CodeVision AVR в вопросах и ответах
-
clawham
- Поставщик валерьянки для Кота
- Сообщения: 1957
- Зарегистрирован: Пт окт 31, 2008 09:38:55
- Откуда: Одесса
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
дело не в меге или ещё чёмто мегу если и брать то 168 ибо 16 мега больно жирная и большая...да и смысл? мн ечисто спортивный интерес...так то всё влезло и ещё 2 процента свободно
просто хочется узнать можно ли как-то ещё!
а я вот влоаты ненавижу...попробуйте к числу 1600000000 прибавить 1 хоть 1000 раз прибавлять будете толку от этого будет НОЛЬ!
но в то же время лонгинта мне уже как бы тоже мало...в притык я бы сказал...потому и хочу узнать есть ли резервы освободить флеш текстом(Еепрома то внутренняя имеется ничо не надо подключать....)
чтоб написать свои процедуры работы с 64 битными интами
П.С. А вы мой проект видели?
Там и кварц и ног хватило и входы и прерывания и экран 44780 разместился свободно и ещё свободных осталось ног...
П.С. 1wire 1 ногу отберет а код для одного устройства вообще мизерно места занимает!!!
просто хочется узнать можно ли как-то ещё!
а я вот влоаты ненавижу...попробуйте к числу 1600000000 прибавить 1 хоть 1000 раз прибавлять будете толку от этого будет НОЛЬ!
но в то же время лонгинта мне уже как бы тоже мало...в притык я бы сказал...потому и хочу узнать есть ли резервы освободить флеш текстом(Еепрома то внутренняя имеется ничо не надо подключать....)
чтоб написать свои процедуры работы с 64 битными интами
П.С. А вы мой проект видели?
Там и кварц и ног хватило и входы и прерывания и экран 44780 разместился свободно и ещё свободных осталось ног...
П.С. 1wire 1 ногу отберет а код для одного устройства вообще мизерно места занимает!!!
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Не доверяйте русским лужам - это может быть вход в метро.
Re: CodeVision AVR в вопросах и ответах
Здравствуйте! Помогите новичку в CVAVR.
Совсем моск сломал в голове каша.
Вопрос по передаче из UART на COM порт.
На примере термометра и 2-х DS18b20 делаю все работает ок, терминалом в пк принимаю построчно:
temp 1: 27'C
temp 2: 23'C
и так по кругу.
Если правильно понимаю то код на COM передается в аксии. А мне нужно в последствии передать это на другое приемное устройство не на пк, и не в аксии а в байтах. Причем символы алфавита отсечь а передать только номер датчика и значение температуры.
Как это сделать никак невразумлю. Нужны ли дополнительные преобразования и какие?
Совсем моск сломал в голове каша.
Вопрос по передаче из UART на COM порт.
На примере термометра и 2-х DS18b20 делаю все работает ок, терминалом в пк принимаю построчно:
temp 1: 27'C
temp 2: 23'C
и так по кругу.
Если правильно понимаю то код на COM передается в аксии. А мне нужно в последствии передать это на другое приемное устройство не на пк, и не в аксии а в байтах. Причем символы алфавита отсечь а передать только номер датчика и значение температуры.
Как это сделать никак невразумлю. Нужны ли дополнительные преобразования и какие?
- hd44780
- Встал на лапы
- Сообщения: 132
- Зарегистрирован: Вт июл 14, 2009 09:27:37
- Откуда: Донецк, Украина
Re: CodeVision AVR в вопросах и ответах
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
П.С. почему мне приходится стирать чип - после залития новой прошивки, независимо от того больше она или меньше, или я вообще одну циферку подправил в коде, программатор при проверке залитого выдает CRC error на таком-то адресе, и естесственно устройство не работает...
П.П.С. Камень mega8535. Прогер STK200
Опыт приходит сразу после того, как он был нужен...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
прошейте фьюз EESAVE - и при последующем стирании чипа EEPROM не будет стираться.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Так вот же, переключатель в самом низу окна прошивальщика (см. скриншот).
Ставим галку и EEPROM не будет затираться, не при записи не при стирании.
Ставим галку и 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 в вопросах и ответах
Здравствуйте форумчане.
Посоветуйте пожалуйста внешнее ОЗУ для Atmеga128 c параллельным интерфесом , килобайт на 20-30 , чтобы можно было в CVAVR её подключить и работать не замарачиваясь с написанием процедур. А тоговорят atmelовскую сняли с производства.
ДА , ещё такой вопрос могу ли я повесить на программный i2c в CVAVR 2 разных устройства - RTC PCF8563 и память 24С08 - не будут ли они конфликтовать?
Посоветуйте пожалуйста внешнее ОЗУ для Atmеga128 c параллельным интерфесом , килобайт на 20-30 , чтобы можно было в CVAVR её подключить и работать не замарачиваясь с написанием процедур. А тоговорят atmelовскую сняли с производства.
ДА , ещё такой вопрос могу ли я повесить на программный i2c в CVAVR 2 разных устройства - RTC PCF8563 и память 24С08 - не будут ли они конфликтовать?
Re: CodeVision AVR в вопросах и ответах
Имеется в наличии энкодер. На выходе у него 10 разрядов. Работает по принципу кода Грея.
Хочу реализовать угломер, с выводом данных на lcd дисплей. Так как разрядов на выходе энкодера больше 8, то подключаю его на 2 порта атмеги. Поясняющий рисунок прилагаю во вложении.
Подскажите алгоритм, как реализовать правильно.
Сам думаю так:
<<В цикле из 10 шагов опрашивать состояние каждого бита порта и складывать данные в переменную либо в массив.>> В конце цикла скидывать значение переменной на lcd, с этим вопросов нет. А вот про цикл и массив - я ничего не усложняю? Может как-то проще можно реализовать?
Хочу реализовать угломер, с выводом данных на 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 битбитва с дураками проиграна, победители торжествуют. слава победителям!
Re: CodeVision AVR в вопросах и ответах
Спасибо! Да действительно все проще.. Век живи век учись 
-
maxpetr1993
- Открыл глаза
- Сообщения: 53
- Зарегистрирован: Пт май 13, 2011 21:16:40
- Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Re: CodeVision AVR в вопросах и ответах
доброго времени суток)) вообщем проблема в следующем пишу Бегущею строку ,то есть дисплей 8х64 пикселя
,часы, термометр,ну и соответственно текст ,если перемещать символы со с одного знакоместа на другое то конечно это оч просто и проблем нет,а вот чтоб двигать символы на один пиксель в лева или право бьюсь головой об стол))в низ и вверх тоже оч просто)) а вот в бок( тоесть нужно в один отображаймый байт переписывать какуюто часть одного байта и соседнего байта из буфера в котором уже лежит подготовленная картинка )) не прошу кода хоть намекните на нормальном русском языке,а если кусочек для примера покажите ну просто супер будет))
,часы, термометр,ну и соответственно текст ,если перемещать символы со с одного знакоместа на другое то конечно это оч просто и проблем нет,а вот чтоб двигать символы на один пиксель в лева или право бьюсь головой об стол))в низ и вверх тоже оч просто)) а вот в бок( тоесть нужно в один отображаймый байт переписывать какуюто часть одного байта и соседнего байта из буфера в котором уже лежит подготовленная картинка )) не прошу кода хоть намекните на нормальном русском языке,а если кусочек для примера покажите ну просто супер будет))
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
вы бегущую-то строку как делаете? 64 вертикальных столбика у вас при помощи чего управляются? небось, сдвиговые регистры? может, надо всего-авсего на 1 такт больше-меньше давать в них, чтобы на 1 пиксел сдвинуть всю строку?
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: CodeVision AVR в вопросах и ответах
clawham писал(а):а я вот влоаты ненавижу...попробуйте к числу 1600000000 прибавить 1 хоть 1000 раз прибавлять будете толку от этого будет НОЛЬ!
А вот это зря. Флоаты не виноваты - причина в ограниченной разрядности. Не зря спецы по численнам методам рекомендуют при суммировании больших массивов данных сначала провести сортировку, и начинать с самых меньших значений, тогда погрешность будет меньше.
У меня в одном проекте работал измеритель мощности ( программный, конечно ), результаты индицировались, и еще нужно все это было непрерывно интегрировать, чтобы получить расход энергии ( что-то типа счетчика ) . Float для быстроты у меня была нестандартная , трехбайтная, но для интегрирования была заведена длинная ( 4 байта мантисса ) переменная, что-то вроде Double float, причем результаты суммировались в течение часа, а затем добавлядись в суммарный расход. Так решился вопрос минимизации вычислительных ресурсов, при этом погрешность вычислений была на порядок меньше инструментальной погрешности аналоговой части.
В общем, голь на выдумки хитра
-
maxpetr1993
- Открыл глаза
- Сообщения: 53
- Зарегистрирован: Пт май 13, 2011 21:16:40
- Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Re: CodeVision AVR в вопросах и ответах
шрифт старый ДОСовский, то есть :
1 байт 1 байт 1 байт ........
2 байт 2 байт 2 байт ......
3 байт 3 байт 3 байт
.....
.....
1 знакоместо 2 знакоместо 3 знакоместо
в памяти лежат с лева на право ,с низу в верх то есть 1 байты (1-8) знакместа
далее 2 байты почереди и тд
строка по 8байт выводиться за одни цикл на 8 шт 595
затем 2 затетем теретья....
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 в вопросах и ответах
Ещё довольно распространённый способ -- два аккумулятора.Jack_A писал(а): В общем, голь на выдумки хитра
Грубо: пусть значения могут меняться от 0.001 до 1000.0
Всё, что меньше 1 -- накапливаем в одном аккумуляторе, больше или равно -- в другом.
В конце цикла берём сумму аккумуляторов.
Точность немного ниже, чем при сортировке, но гораздо меньше работы.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: CodeVision AVR в вопросах и ответах
Мастер Ломастер писал(а):и никаких массивовКод: Выделить всё
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 в вопросах и ответах
rs39 писал(а):А следующий вопрос:
Как отправить значение переменной grey_code по UART на COM порт к примеру? Ведь размер получается больше одного байта, и функцией putchar отправить не получится. Искал инфо об том как отправлять большие числа, но везде только про строки пишут. А это мне не подходит, нужно отправить байтами.
ну вы даете! может, стОит букваро по Си почитать маленько?!
Код: Выделить всё
putchar(grey_code & 0xFF);
putchar(grey_code >> 8);это если вам надо передать в БИНАРНОМ виде. а если в символьном - курите формат printf
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Окей спасибо теперь ясно! 
Да в том то и дело, со спринтф и другими ф-циями разобрался, а вот с этой мелочью нет. А может не там искал просто
Да в том то и дело, со спринтф и другими ф-циями разобрался, а вот с этой мелочью нет. А может не там искал просто
Re: CodeVision AVR в вопросах и ответах
доброго времени суток... вопрос касается таймера на атмега8(извините если задавали много раз. сам не нашел). как написать код ?
если 1 на пине мк, то счетчик начинает работать 5 секунд и посылается на другой пин 1. после работы(5 сек) этот пин ставится в 0. в коде можно использовать разные ножки мк я пойму. только прошу пояснить, чтобы понять.
если 1 на пине мк, то счетчик начинает работать 5 секунд и посылается на другой пин 1. после работы(5 сек) этот пин ставится в 0. в коде можно использовать разные ножки мк я пойму. только прошу пояснить, чтобы понять.