|
DS18b20, Исходный код ARM |
|
|
|
May 25 2009, 14:41
|
Группа: Новичок
Сообщений: 11
Регистрация: 24-05-09
Пользователь №: 49 496

|
Здравствуйте. Хочется сделать небольшую программку на AT91SAM7 для получения температуры с датчика DS18b20, самому писать не хочеться) Обыскал инет и не нашел ничего полезного. Для AVR - уйма всяких исходников, а вот под ARM - ни одного. Буду очень благодарен (и думаю не только я), если кто-нибудь выложит исходный код опроса термодатчика под IAR)))
|
|
|
|
|
May 25 2009, 17:42
|
Группа: Новичок
Сообщений: 11
Регистрация: 24-05-09
Пользователь №: 49 496

|
Спасибо конечно, но это опять таки программа для AVR. Думаю для Вас не составит написать программу по даташит или переделать программу, написанную под AVR, но для меня это вызывает некие трудности. Поэтому очень хотелось бы увидеть конкретную реализацию программы опроса термодатчика для AT91SAM7, которая опробована в действии) Заранее спасибо
|
|
|
|
|
May 26 2009, 12:48
|
Группа: Новичок
Сообщений: 11
Регистрация: 24-05-09
Пользователь №: 49 496

|
Ну если никто не хочет предоставить готовую подпрограмму, тогда вопрос: Для опроса датчика необходимо конкретное время держать логические уровни (writebit0 - 60us и т.п.). Вопрос: каким образом лучше реализовать точное время удержания уровня, кажый раз включая таймер? У меня в проэкте уже задействованы 3 таймера из 3 (1 - управеление соннарами, другой - передача информации по радиоканалу, 3 - собственно опрос термодатчика). Спасибо
|
|
|
|
|
May 27 2009, 05:18
|
Местный
  
Группа: Свой
Сообщений: 248
Регистрация: 18-07-06
Из: Сочи
Пользователь №: 18 890

|
Цитата Ну если никто не хочет предоставить готовую подпрограмму, тогда вопрос Вам уже предоставили основу по которой можно сделать то, что Вам нужно. Цитата У меня в проэкте уже задействованы 3 таймера из 3 Я так понимаю, что таймеры задействованы теми кусками кода, которые Вам тоже кто-то дал специально для Вашего ARM? И ещё я думаю, что Вам надо в ветку поиска разработчиков написать. Они Вам всё и увяжут. И таймеры и сонары и термодатчики!
|
|
|
|
|
May 27 2009, 16:47
|
Группа: Новичок
Сообщений: 11
Регистрация: 24-05-09
Пользователь №: 49 496

|
Еще раз убеждаюсь в "полезности" форумов. Принцип "научился сам - поумничаю над другими" работает исправно  Если же все так просто, то почему до сих пор никто не выложил готовый исходник опроса термодатчика под ARM? )) Под AVR люди поотзывчивее (или просто они на рынке дольше)) Ну с этим ладно. По поводу сонаров, то вы глубоко ошибаетесь - все пишу сам. Под PIC и МК51 было писать немнго приятнее. Большое спасибо за ссылки на стандартные даташит. P.S. Если ничем дельным помочь не можете, плз, не пишите вообще. P.P.S. И напоследок как всегда вопрос (может слишком простой, но я только учусь  ): настраиваю ногу МК на вход. Код #define RSON (1<<20) AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ); AT91F_PIO_CfgInput(AT91C_BASE_PIOA, RSON);
void timer0_c_irq_handler(void) { AT91PS_TC TC_pt = AT91C_BASE_TC0; //* Acknowledge interrupt status dummy = TC_pt->TC_SR; if(BarFlag){ if((AT91F_PIO_GetInput( AT91C_BASE_PIOA)& RSON)==RSON){ BarFlag=false; at91_IRQ0_barrier_pwm(); } } } при этом, at91_IRQ0_barrier_pwm(); вызывается постоянно, даже в том случае, когда к RSON не подсоединено ничего. В чем может быть проблема? Подскажите, пожалуйста
Сообщение отредактировал huntero4ek - May 27 2009, 16:49
|
|
|
|
|
May 27 2009, 18:09
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(huntero4ek @ May 27 2009, 19:47)  Если же все так просто, то почему до сих пор никто не выложил готовый исходник опроса термодатчика под ARM? Значит так, мил человек, по одной простой причине, если смотреть на "проблему" не из под плинтуса, то исходники "для ARM" отличаются от исходников "для AVR", не более, чем чернила для 3 класса от чернил для 10 класса. А с DS18B20 "исходниками" вообще десятки сообщений на форуме. Только читать и учиться уметь надо. Именно по этой причне тема вообще в оффтопик перенесена.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 27 2009, 18:39
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(huntero4ek @ May 27 2009, 20:47)  Под AVR люди поотзывчивее (или просто они на рынке дольше) Рынок халявных исходников - это что-то новое. А форум существует отнюдь не для раздачи готовых решений страждущим, и так общий уровень катастрофически низок. Цитата(huntero4ek @ May 27 2009, 20:47)  при этом, at91_IRQ0_barrier_pwm(); вызывается постоянно, даже в том случае, когда к RSON не подсоединено ничего. Когда "ничего не подключено", логический уровень на ноге какой?
|
|
|
|
|
May 27 2009, 21:10
|
Группа: Новичок
Сообщений: 11
Регистрация: 24-05-09
Пользователь №: 49 496

|
Цитата(aaarrr @ May 27 2009, 21:39)  огда "ничего не подключено", логический уровень на ноге какой? Мерял тестером - там всегда +3.3, что меня настораживает. Подскажите как правильно настроить ногу на вход. Цитата А с DS18B20 "исходниками" вообще десятки сообщений на форуме. Дайте хоть 1 ссылку на эти сообщения, вместо 50 лишних слов. Я не очень силен в программировании под ARM, если для кого-то все легко, то я искренне рад за него. Надеюсь, когда научусь работать с ARM, то буду доступнее объяснять таким "чайникам" как сам. Спасибо
Сообщение отредактировал huntero4ek - May 27 2009, 22:01
|
|
|
|
|
May 27 2009, 22:27
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(huntero4ek @ May 28 2009, 00:10)  Дайте хоть 1 ссылку на эти сообщения http://www.google.com/search?client=opera&...-8&oe=utf-8Цитата Я не очень силен в программировании под ARM.... Вы заблуждаетесь насчет не ARM-ов  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 28 2009, 05:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(huntero4ek @ May 28 2009, 00:10)  Мерял тестером - там всегда +3.3, что меня настораживает. Подскажите как правильно настроить ногу на вход. Анекдот: Приходит пациент к врачу. Говорит: "У меня проблема". Врач: "Какая?". Пациент:"Сейчас сами увидете" и начинает медленно раздеваться и аккуратнейшим образом вещи складывать на стуле. Через 15 минут, раздевшись "Видите доктор - у меня одно яичко больше другого!" Доктор, в сердцах:"Черт возьми, да так и должно быть!" Это я к тому, что на "висящем" входе всегда "1".
|
|
|
|
|
May 28 2009, 08:50
|
Группа: Новичок
Сообщений: 11
Регистрация: 24-05-09
Пользователь №: 49 496

|
если это норм явление, что при висячей ноге на ней лог уровень "1", то какой же уровень там будет, если подать туда "1" с внешнего устройства?? Либо ответьте сами, либо подскажите ГДЕ можно норм почитать о настраивании ноги на вход? В даташит: Цитата Все порты ввода-вывода PA0…PA31 (PA0…PA20 в AT91SAM7S32) полностью совместимы с 5-вольтовыми логическими уровнями и все имеют внутренние подтягивающие резисторы к VDDIO. Возможно индивидуальное отключение/подключение этих резисторов к каждому их портов с помощью контроллера портов ввода-вывода (PIO).
Совместимость с 5-вольтовыми логическими уровнями означает, что порты ввода-вывода способны формировать выходное напряжение до VDDIO и иметь входное напряжение до 5,5В. Однако, формирование на этих выводах внешнего напряжения более VDDIO с подключенными внутренними подтягивающими резисторами вызовет протекание внешнего тока через от этих выводы через подтягивающие резисторы к VDDIO. Это необходимо принимать во внимание, так как сразу после сброса по умолчанию все подтягивающие резисторы подключены к выводам портов.
|
|
|
|
|
May 28 2009, 09:06
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(huntero4ek @ May 28 2009, 12:50)  если это норм явление, что при висячей ноге на ней лог уровень "1", то какой же уровень там будет, если подать туда "1" с внешнего устройства?? "1" и будет, куда он денется? Цитата(huntero4ek @ May 28 2009, 12:50)  Либо ответьте сами, либо подскажите ГДЕ можно норм почитать о настраивании ноги на вход? В даташит: В DS (родном, естественно, а не переводе) все отлично описано, что еще нужно? Код PIO_ODR = x; // Переключили вывод на вход PIO_PPUDR = x; // Запретили pull-up (если нужно) PIO_IFER = x; // Включили фильтр (если нужно) PIO_PER = x; // Перевели ногу на PIO
|
|
|
|
|
May 28 2009, 09:28
|
Группа: Новичок
Сообщений: 11
Регистрация: 24-05-09
Пользователь №: 49 496

|
Извините, но я не совсем понял, эти строки кода взяты из документации по IAR 4.2?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|