Краткий Курс - программирование AVR - часть V

 
1 6 7 8 9 10 11 12

SAA

втянувшийся

AAS>> Вот еще одна более менее удобная схема, но с доп. элементами. По возникновению INT0 даешь устаканиться дребезгу Y ms и считываешь порт P(A,B,C,D,E) на который заведены клавиши. Порт P прижат к VCC через пул-ап или через блок внешних резисторов, это же касается и INT0. [»]
+AlS+> Добрый день!
+AlS+> AAS, не подскажешь, а для чего нужны диоды подключенные к INT0??
+AlS+> Спасибо! [»]

Предположим что их нет, и для генерации INT по нажатию любой клавиши мы подводим их напрямую к INT. Таким образом при нажатии любой из клавиш [S1..S5] на каждую линию порта P [P0..P4] проходит сигнал "0", так как все, будем говорить левые по схеме, контакты клавиш замкнуты в один узел. Теперь любая клавиша хоть и будет генерировать прерывание, код будет выставлять P=$1F. Как нам разобраться какая клавиша была нажата????? :rolleyes: Используя диоды мы развязываем узел, не давая проходить "0" в обратную (правую по схеме сторону), одновременно объединяя все клавиши по схеме "ИЛИ".
 

+AlS+

новичок

SAA> Предположим что их нет, и для генерации INT....[»]

Спасибо за развернутый ответ! Все предельно просто!
 

janus

втянувшийся
SAA> Как быть с этим?
SAA>
SAA> CAUTION: There are caveats on using C++. See the avr-libc FAQ.
 
[»]


А вот это как раз ключевая фраза. Правда, прошу прощения, я не точно выразился...Портирован и С++, но пользоваться им не очень рекомендуют, да и библиотек нет, насколько я знаю...
WBR, janus. http://janus.rbcmail.ru  
RU termostat #14.03.2005 14:21
+
-
edit
 

termostat

аксакал

Lioxa >
Наконец получил 24LC512 - хватает на 3 мин.

h--p://forums.airbase.ru/index.php?showtopic=31582&st=120#
 


64 кБайт, Здорово! и сколько такая стоит?

Есть at45db161b на 2 МБайта стоит 4 доллара - на несколько часов записи, или на кучу полетов, тестов. пример использования в задаче 07 курса.
+
-
edit
 

Lioxa

втянувшийся
termostat>
Lioxa >
termostat> Наконец получил 24LC512 - хватает на 3 мин.
termostat> h--p://forums.airbase.ru/index.php?showtopic=31582&st=120#
termostat>
 

termostat> 64 кБайт, Здорово! и сколько такая стоит?
termostat> Есть at45db161b на 2 МБайта стоит 4 доллара - на несколько часов записи, или на кучу полетов, тестов. пример использования в задаче 07 курса. [»]

Ключивой момент здесь что ничего нестоило :D . Получил сэмплы из microchip.com. Реально такая микруха у нас стоила-бы ~4$ но проблема в том что нету здесь таких, даже заказать негде :( ,24LC256 сколько хочеш, на плате места мало каскадировать негде . Семплы слал через друга (United Kingdom) так как в Литву нешлют, видать туземци мы для них :(
 

Yuran

опытный

я вот для акселерометров взял at45db321B ( 4 Мегабайта) чтобы с большой частотой писать туда =)
 
RU termostat #15.03.2005 12:51
+
-
edit
 

termostat

аксакал

Вот говорят появилась популярная прога для рисования схем
и разводки плат Cadsoft Eagle

версия для народа Изравлены глюки :-)

Cadsoft Eagle - Speccy - наш выбор!

Cadsoft Eagle Барахолка

// www.zx.pk.ru
 
 


Скачайте кому надо. Я линк не проверял.

А еще ATmega256 появилась...

+AlS+

новичок
Добрый день.

Подскажите кто нибуть ниже следующая запись правильна с точки зрения арфографии Си?
Работаю в CodeVision AVR ver.1.24.4a Evalution

....
unsigned char digit;

....
digit=1;
if ((count_l>0)&&(count_l<=2)) digit=digit++;

И вот после выполнения последней строки digit все равно равна 1. Хотя должна быть 2.

В чем проблемма не понимаю.
Уже крыша едет.

СПАСИБО!
 
RU Серокой #15.03.2005 16:35
+
-
edit
 

Серокой

координатор
★★★★
А count_l чему равен?
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
RU +AlS+ #15.03.2005 16:41  @Серокой#15.03.2005 16:35
+
-
edit
 

+AlS+

новичок
Серокой> А count_l чему равен? [»]

Сорри забыл....

count_l=1;

 

pokos

аксакал

В данном случае по барабану, чему равен count_l. Туту широко известный геморрой с порядком операций в С. Т.е. сначала делается присваивание digit=digit, а потом ВРЕМЕННОЕ (на стеке) значение digit инкрементируется. Разные реализации С трактуют такую запись по-разному, и то, что делает Code Vision, видимо, не совсем правильно. Чтобы избежать подобных ситуаций, присваивание нужно вообще выкинуть и писать просто

if ((count_l>0)&&(count_l<=2)) digit++;
 

+AlS+

новичок
Спасибо pokos!!!

if ((count_l>0)&&(count_l<=2)) digit++;

ПРАВИЛЬНО!!!
 
RU termostat #15.03.2005 17:00
+
-
edit
 

termostat

аксакал

попробуй скобки поставить (как я советовал ранее):

digit=(digit++);

так как возможно = более приоритетно чем ++


чтоб не мучатся с приоритетами операций - обозначте порядок операций скобками


обычно инкремент (т.е. увеличение на 1) пишут так:

digit++;


Это есть в курсе! перечитай на досуге...

pokos

аксакал

Для прикола.
Думаю, что если написать digit=++digit, то всё будет работать.
Интересно, прав ли я?
 
RU termostat #15.03.2005 17:08
+
-
edit
 

termostat

аксакал

да теперь это "Префиксная" операция и должна выполниться до присваивания.

КодВижен делает все по стандарту Си.
+
-
edit
 

pokos

аксакал

termostat> да теперь это "Префиксная" операция и должна выполниться до присваивания.
termostat> КодВижен делает все по стандарту Си. [»]

Постфиксная тоже должа работать, а не работает....
 
RU termostat #15.03.2005 18:50
+
-
edit
 

termostat

аксакал

pokos>
Постфиксная тоже должа работать, а не работает....
 


Пришлось книжку открыть и почитать, Си не виноват
оказывается, (виноват как почти всегда бывает) человек.

ведь возникла потребность увеличить что-то на 1

вроде как в школе учили: напиши + 1
а человек видел что пишут так: ++ и не зная точно, что
это за операция применил ее.

А операция наигнуснейшая доложу я вам!

Используйте ее только так: переменная++; или --;

потому что она может применяться только к переменным! но не к выражениям!

по этому digit=digit++; не работает! ведь это по сути:

( digit = digit ) ++; - мы хотим инкрементировать не переменную,
а выражение или результат его выполнения - это не по правилам
применения ++ или --

Еще удивительней что Постфиксные ++ и — НЕ ЛЕЧАТЬСЯ скобками,
даже если их много:

papa = 10;
mama = (((papa++))); - даже так переменная mama станет равна 10

а вот papa наконец то инкрементируется!

papa = (((papa++)));

теперь papa будет 12. как я и советовал поставить скобки ранее.

т.е. сначала скобки "не лечат" и в papa кладется значение не
инкрементированое, а затем скобки выручают и человек получает
инкремент перменной papa.


Я это к тому, что:



Пишите программу используя ОДНОЗНАЧНО понятные вам

конструкции и операции!




Кстати если следовать советам данным в Курсе - просмотреть
примеры к компилятору, Си исходники к АпНоутам то везде
вы найдете только самостоятельное применение выражений:

переменная++; или --;

++переменная; или --переменная;

В смысле не в составе каких то более крупных выражений.
RU termostat #16.03.2005 01:43
+
-
edit
 

termostat

аксакал

metero >
Тьi не совсем понял.

Я работаю с motorola HC908xxx, у них АЦП 8
Могу, конечно, подвязать 12 или 16, но не
хочется.
 


Нет, чем внешний АЦП прикручивать лучше конечно ОУ маленький.

Но 8 бит тоже 1/256 гораздо точней 1.5%


я и правда твое "Я делаю на мотороллерах, в атмеле"
прочитал как "на микроконтроллерах атмел" и обрадовался -
подумал вот еще один AVR'щик намечается.


metero >
я предпочитаю спаять несколько елементов, вместо нудное
писание программ.
 


Чую на асемблере пишешь - раз "нудно" ? я прав?


termostat> разрядность АЦП можно увеличить - для
этого нужно брать среднее от (кол. увеличения разрядов в
квадрате).
 


metero >
Может , я не понимаю. Усреднение дает увеличение точности
из за усреднения "игрьi" самого младшего бита.
 


Не только младшего!

Можно значительно "увеличить" разрядность АЦП.

Теория и практика "ОваСэмплин" описана в АпликейшнНоутах
AVR, PIC, MOTOROLA, SiLabs и др.

вот почитайте кому интересно "бесплатное"
повышение разрядности АЦП:

"Improving ADC Resolution by Oversampling and Averaging "

http://www.silabs.com/public/documents/tpub_doc/anote/.../en/an118.pdf




Я сам щас перечитал:

"AN118 повышение разрешения АЦП"

Усреднение по 4-м выборкам дает +1 бит разрешения
по 16-ти преобразованиям +2 бита.
 


т.е. в AVR устреднив результат 4 измерений можно получить честные 10 бит.

Это сообщение редактировалось 17.03.2005 в 11:22

SAA

втянувшийся

Не напомнит ли кто схемку или APPNOTE для сопряжения канала AЦП (Mega 8) с измеряемой линией, какие можно и нужно сделать фильтра?

Цепляли Сапфир 22 к AVR провели серию опытов, без фильтрующих конденсаторов большие биения на датчике (разборос в отсчетах АЦП достигал 120, 130) в процентном соотношении до 13,2% погрешность относительно прибора (вакумный манометр). С фильтром (один полярный электролит + пикушка керамическая) биения при отсчете АЦП максимум 9 единиц, макс. погрешность относительно вакумника 3,81% . Пока линия до датчика экранирована, а от АЦП до измерительного шунта (резистор 100 Ом) нет (она коротенькая) хоть это и не правильно. Требования по питанию и обвязки самого АЦП мне известны, пока они так-же не соблюдены.

Могу поделиться самописной "прогой" для снятия отсчетов с меги (C++ Builder) по последовательному каналу, и подготовки результатов (даже в виде графика ;)) для экспорта в Эксель (CVS).
 
RU termostat #17.03.2005 11:10
+
-
edit
 

termostat

аксакал

> SAA
схемку или APPNOTE для сопряжения AЦП (Mega 8) с измеряемой линией
 


Фильтры и подключение к АЦП - это апноуты Моторола для датчиков
давления MPXxxxx, или analog.com апноуты для акселерометров с
аналоговым выходом - adxl150 например.

Номера сдесь и в БРЭО неоднократно назывались, я не помню их.

> SAA
Требования по питанию и обвязки
самого АЦП мне известны
 


Почитай ДатаШит.

> SAA
Могу поделиться самописной "прогой"
 


Опять грозишь! :-)

Просто выложи архивы с указанием размера и что-там, если
исходник большой то отдельным архивом. Желательно чтоб "редми"
в архиве имелся.
+
-
edit
 

metero

втянувшийся

termostat> я и правда твое "Я делаю на мотороллерах, в атмеле"
прочитал как "на микроконтроллерах атмел" и обрадовался - подумал вот еще один AVR'щик намечается.
sorry что разочаровал :) Обдумьiваю, но время..у нас пиков бери не хочу, а AWR не всякие, надо заказать .

termostat> Чую на асемблере пишешь - раз "нудно" ? я прав?
Прав. Когда я начинал, С для процессоров не бьiло, вот и остался на ассемблере, а учить новье контроллерьi и язьiки лень, да и времени нет. ;)
Да и философия моторолских мне ближе и понятнее..

termostat> вот почитайте кому интересно "бесплатное" повышение разрядности АЦП:
Спасибо, скачал, почитаю.
Кстати, давно собирался найти повод сказать: у тебя курс АВР вьiше всяких похвал, если б я сейчас начинал, обязательно именно по нем начал бьi :)
http://airbase.ru/modelling/rockets/res/users/metero/index.html  

SAA

втянувшийся

termostat> Фильтры и подключение к АЦП - это апноуты Моторола для датчиков
termostat> давления MPXxxxx, или analog.com апноуты для акселерометров с
termostat> аналоговым выходом - adxl150 например.
termostat> Номера сдесь и в БРЭО неоднократно назывались, я не помню их.

Ладно поищу, но лучше коненчо же был бы прямой линк. ;)

termostat>
> SAA
termostat> Требования по питанию и обвязки
termostat> самого АЦП мне известны
termostat>
 

termostat> Почитай ДатаШит.

Именно там и описано, вот я и говорю что известны.

termostat>
> SAA
termostat> Могу поделиться самописной "прогой"
termostat>
 

termostat> Опять грозишь! :-)
Грозю. ж-) [attachmentid=12538][attachmentid=12539]Фидошная привычка, прежде чем "дуть" трафик, спросить разрешения. А что у аэробазы Хост резиновый?

termostat> Просто выложи архивы с указанием размера и что-там, если
termostat> исходник большой то отдельным архивом.

Исходник (Калибровка АЦП.rar) то вот не большой, а исполняемый (Project2.rar) солидный.

termostat>Желательно чтоб "редми" в архиве имелся. [»]

Увы на последнее времени никогда не хватает. Да там все вроде бы просто и неприглядно пока.

Прикреплённые файлы:
 
 
RU termostat #17.03.2005 13:31
+
-
edit
 

termostat

аксакал

> metero
у нас пиков бери не хочу, а AWR не всякие, надо заказать .

... учить новье контроллерьi и язьiки лень, да и времени нет.
Да и философия моторолских мне ближе и понятнее..
 


Вот именно за такой подход я двумя руками!

Использовать по максимуму то что знаешь и
что доступно, что под рукой...


> metero
давно собирался найти повод сказать: у тебя
курс АВР вьiше всяких похвал
 


Спасибо за Бальзам на душу!


> SAA
 



> SAA
Фидошная привычка, прежде чем "дуть" трафик, спросить
разрешения. А что у аэробазы Хост резиновый?
 


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

По известной демагогической формуле:
= Если файл скачает хоть один человек значит
выкладывающий "съел" трафик не зря =


А вообще лучще скачать проф. проги например,
что уазаны в задаче 06 курса, и ими логить с КОМ порта.
Эдвансд сериал логер имеет плагин конвертации в Exel.

Второй вариант формировать .CSV формат прямо микроконтроллером
и слать в КОМ порт уже в таком формате.
Это если скорости хватит.

termostat > Желательно "редми" в архиве

SAA > Увы на последнее времени никогда не хватает. Да там
все вроде бы просто и неприглядно пока.
 


А для себя? я вот без "редми" через пол года не могу вспомнить
что мои проги-утилтки делают.

SAA

втянувшийся


termostat> А вообще лучще скачать проф. проги например,
termostat> что уазаны в задаче 06 курса, и ими логить с КОМ порта.
termostat> Эдвансд сериал логер имеет плагин конвертации в Exel.

Как правило быстрее написать нечто на коленке ;-), чем воспользоваться готовым... В том случае, конечно если ты этим готовым умешь пользоваться, пусть не виртуозно но достаточно для осуществления желания ж-)

termostat> Второй вариант формировать .CSV формат прямо микроконтроллером
termostat> и слать в КОМ порт уже в таком формате.
termostat> Это если скорости хватит.

Ну тут несколько другие соображения ж-). Хотя и по скорости тоже.

termostat>
termostat> termostat > Желательно "редми" в архиве
termostat> SAA > Увы на последнее времени никогда не хватает. Да там
termostat> все вроде бы просто и неприглядно пока.
termostat>
 

termostat> А для себя? я вот без "редми" через пол года не могу вспомнить
termostat> что мои проги-утилтки делают. [»]

Думаю что через полгода я ее и не найду на "винте" ж-) Ну а по хорошему - просто стараюсь довести любой проект до логического конца, после которрго становится ясно делать тех. документацию или нет.

 
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

metero

втянувшийся

termostat> Вот именно за такой подход я двумя руками!
И я :D
А вот за разрядность на халяву спасибо.. закостенел я , думал что знаю если не все , то почти, а вот.. на той неделе попробую на работе если останется время или обману начальство , если не останется . B)
http://airbase.ru/modelling/rockets/res/users/metero/index.html  
1 6 7 8 9 10 11 12

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru