Моё меню Общее меню Пользователи Правила форума Все прочитано
Вернуться   uForum.uz > ИКТ и телеком > IT-индустрия > Софт > Программирование > Программирование микроконтроллеров
Знаете ли Вы, что ...
...для каждой темы существует свой раздел. Изучите структуру форума. Если соответствующего раздела нет, то всегда есть раздел "Разное" :)
<< Предыдущий совет - Случайный совет - Следующий совет >>


Ответить

 
Опции темы Опции просмотра
Старый 28.04.2009 14:44   #21  
Аватар для Arthur
Оффлайн
В\ч Ташкент
инженер
Сообщений: 55
+ 2  3/3
– 0  0/0

Uzbekistan
Всем привет. Тема кем нибудь поддерживается или про нее все уже забыли?
Ответить 
Реклама и уведомления
Старый 29.04.2009 15:53   #22  
Аватар для Kirill_25
Оффлайн
Н.П.О. Академприбор
Инженер-конструктор
Сообщений: 55
+ 0  1/1
– 0  0/0

Uzbekistan
Цитата:
Сообщение от Arthur Посмотреть сообщение
Всем привет. Тема кем нибудь поддерживается или про нее все уже забыли?
А вы про какую тему спрашиваете? Про "Универсальное устройство", которое неизвестно что делает и неизвестно кому оно такое нужно, а также неизвестно кто его делать будет? Или про робатизированный пылесос ?
Ответить 
Старый 02.05.2009 12:40   #23  
Аватар для Arthur
Оффлайн
В\ч Ташкент
инженер
Сообщений: 55
+ 2  3/3
– 0  0/0

Uzbekistan
Привет Кирилл.
Как я понял, в начале речь шла о создании некого устройства с нуля, и как предположение - речь идет о совместной разработке некого устройства новичками в этом деле и опытными разработчиками, которые делятся своим опытом и направляют первых в нужное направление! Ну, так как? Есть кто из опытных, которые готовы помочь новичкам в начинании?!
Ответить 
Старый 02.05.2009 18:09   #24  
Аватар для Kirill_25
Оффлайн
Н.П.О. Академприбор
Инженер-конструктор
Сообщений: 55
+ 0  1/1
– 0  0/0

Uzbekistan
Цитата:
Сообщение от Arthur Посмотреть сообщение
Привет Кирилл.
Как я понял, в начале речь шла о создании некого устройства...
Я думаю новичка что новичкам надо следовать мудрости "от простого к сложному", а не наоборот. Новичкам бы я лучше предложил серию примеров с выбранным контроллером. Каждый пример должен в себя включать не более 2-х перефирийных узлов. Например: "Сегодня мы рассмотрим работу с таймером. Настраивается он так-то и так-то. И так далее... А теперь с полученными знаниями мы реализуем часы(генератор и т.д.)." или "Сегодня мы рассмотрим работу с ШИМ или АЦП или модулем захвата или модулем компараторов". Тогда это будет более эффективно(в плане понимания), чем предлагать разрабатывать "монстра" неизвестно для чего служащего.
Ответить 
Старый 10.05.2009 15:40   #25  
Аватар для Arthur
Оффлайн
В\ч Ташкент
инженер
Сообщений: 55
+ 2  3/3
– 0  0/0

Uzbekistan
Всем привет!
Помогите разобраться с DS1620! (цифровой термометр термостат описание здесь: "нttp://www.itis.spb.ru/DALLAS/ds1620.нtm").
В общем так: у меня в наличие есть прибор DS1620, МК ATmega8, 4х7сегмнт. матрица (для динамик. индикации) думаю в качестве первого изделия с МК сойдет - прибор в быту пригодится.
Вопрос: если я пишу программу на С, то какой тип переменной подойдет для аккумулятора результата от DS1620?

код программы (IAR) (я отбросил все лишнее, оставил только функцию: запись(команда), чтение(результат)):
================================================== =====
#include <iom8.h>
#include <intrinsics.h>
//#include <stdio.h>

#define DQ PORTD_Bit0
#define CLK PORTD_Bit1
#define RST PORTD_Bit2
#define DIR DDRD_Bit0

void ds1620_write(int cmd);
unsigned char ds1620_read(void);

void main(void)
{

PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;


while(1)
{
RST=1;
ds1620_write(0xEE); // старт конверт.
RST=0;
__delay_cycles(1000);

RST=1;
ds1620_write(0xAA); // чтение результата конверт.
ds1620_read();
RST=0;

__delay_cycles(1000000);
}
}

void ds1620_write(int cmd) //LB first
{
for(int i=0;i<9
{
CLK=1;
DQ= ((cmd >> ++i) &1); // сдвигом в право вывожу с PORTD.0 на вход DQ DS1620 9-ти битную команду
CLK=0;
}
}
unsigned char ds1620_read()
{
unsigned int temp_read;
for (int i=0; i<9; i++)
{
while(CLK!=1)
{
temp_read=(temp_read)|(DQ&1); // temp_read =9-ти битному результату с пина DQ DS1620 + лог И =1
CLK=1;
}
CLK=0;
temp_read=(temp_read<<i);

}
CLK=0;
return temp_read;
}
================================================== ====
Чтение температуры проходит некорректно, temp_read= 0 либо FF, что в коде не так, может кто подскажет?
Ответить 
Старый 12.05.2009 14:20   #26  
Аватар для Temur_Salomov
Оффлайн
"Ok-saroy textile" MChJ
начальник отдела АСУ
Сообщений: 44
+ 1  1/1
– 0  1/1

Uzbekistan
1. Самая грубая ошибка - Во время чтения из датчика пин DQ надо переводить на ввод (DDRD.0=0, затем обратно.
2. В принципе, на новом датчике конф. C0H можно не выставлять - работать будет.
3. команда записи в 3 wire:
for(int i=0;i<9
{
CLK=1; // здесь нужна небольшая пауза для того, чтобы установился уровень.
DQ= ((cmd >> ++i) &1); // здесь тоже надо подождать
CLK=0;
}
4. Команда чтения:
unsigned char ds1620_read()
{
unsigned int temp_read;
for (int i=0; i<9; i++)
{
while(CLK!=1) // Зачем? такт задаёт только главное устройство (МК)
{
temp_read=(temp_read)|(DQ&1);
CLK=1;// Опять же, уровни на шине не выставляются и исчезают мгновенно
}
CLK=0;
temp_read=(temp_read<<i); // а может temp_read=(temp_read<<1); ?
}
CLK=0;
return temp_read;
}

Для сравнения использование датчика DS18B21 в CVAVR - связь по одной ноге:
------------------------------------------------
#include <mega48.h>
// 1 Wire Bus functions
#asm
.equ __w1_port=0x0B ;PORTD
.equ __w1_bit=0
#endasm
#include <1wire.h>
// DS1820 Temperature Sensor functions
#include <ds1820.h>
------------------------------------------------
w1_init(); - Используется 1 раз для запуска шины 1WIRE
ds18b20_temperature() - возвращает float значение температуры или -9999 если ошибка или отсутствует датчик
Если вам не нужен аппаратный термостат( без МК) ИМХО с DS1821 возни на порядок меньше - работает сходу.
Ответить 
Старый 12.05.2009 15:01   #27  
Аватар для Kirill_25
Оффлайн
Н.П.О. Академприбор
Инженер-конструктор
Сообщений: 55
+ 0  1/1
– 0  0/0

Uzbekistan
Судя по временной диаграмме в функции ds1620_write вы неправильно загоняете данные. Вы сначала выставляете тактовый сигнал, а потом сдвигаете данные, а надо сначала выставить бит данных, а потом протактировать, т.е. сделать так

DQ= ((cmd >> ++i) &1);
CLK=1;
//Вставить задержку, чтобы тактовый сигнал не превышал 1.75 МГц
CLK=0;

Ножкой RST дёргать лучше внутри функций.
Это что за дурость?
while(CLK!=1)
{
temp_read=(temp_read)|(DQ&1);
CLK=1;
}
CLK=0;
temp_read перед считыванием надо обнулить. Тактировать лучше
CLK=0;
// задержка
CLK=1;
Ответить 
Старый 15.05.2009 11:37   #28  
Аватар для Arthur
Оффлайн
В\ч Ташкент
инженер
Сообщений: 55
+ 2  3/3
– 0  0/0

Uzbekistan
Всем привет и большое спасибо за помощь! Был немного занят, т.ч. было не до микроконтроллеров, ща бегу исправлять ошибки в коде, и продолжу мучить дэвайс, репортажи с поля боя последуют позже...
Ответить 
Реклама и уведомления
Старый 21.05.2009 11:30   #29  
Аватар для FCK
Оффлайн
Сообщений: 22
+ 2  0/0
– 0  0/0

Uzbekistan
Ну если действительно мега48 стоит в районе 3000 сум, то я побежал покупать)

И еще один вопрос: я раньше брал мегу8535 в Радиодеталях, но схемами "5 проводков" и "STK200/300 на 5 проводах" у меня он не опознавался. Каким программатором эту мегу программировать можно? И если можешь, Jahongir, помоги плиз с сборкой AVR910 программатора
Ответить 
Старый 26.05.2009 09:58   #30  
Аватар для Arthur
Оффлайн
В\ч Ташкент
инженер
Сообщений: 55
+ 2  3/3
– 0  0/0

Uzbekistan
Ура - работает! Сенкью огромное всем за помощь! Правда удалось только в proteus-е симулировать, на живой дэвайс по время не хватает
Ответить 
Ответить
Опции темы
Опции просмотра




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Advertisement System V2.5 By Branden
OOO «Единый интегратор UZINFOCOM»


Новые 24 часа Кто на форуме Новички Поиск Кабинет Все прочитано Вверх