Технический форум по робототехнике.
The_Kurs » 22 июл 2007, 15:04
Пришел термодатчик от Ti TMP121.
Решил подключить его по SPI к ATmega16.
Подключил
МК TMP121
SS --------- CS
MISO ---------- SO
SCK-----------SCK
МК сделал как мастер пользовался мастером начального кода в кодевизарде.
С датчика нужно принять 16 бит.
По даташиту на вывод CS подаю низкий уровень. Поидее должно срабатывать прерывание в котором я и считываю данные с регистра но ничего не происходит (((
Что я не так сделал ???Уже второй день капаюсь с этим (((
Хм почему-то на ножке SCK нет импульсов они же должны идти с МК ?
avr123.nm.ru » 22 июл 2007, 16:31
посмотрите в VMLAB или в PROTEUS почему так.
avr123.nm.ru » 22 июл 2007, 16:31
Советую прицепить проект сюда.
The_Kurs » 27 июл 2007, 13:08
Прицепляю проект.
Как вообще осуществяется прием данных у мастера ??? Есть примеры а то я делал по даташиту на мегу 16. тем только для слейва... и не работант(
Принять нужно 16 бит ...
- Вложения
-
- TEMPER.rar
- (19.36 КиБ) Скачиваний: 68
The_Kurs » 21 авг 2007, 16:17
Всё проблема решена )))
МК за мастер )))
Отправляем байт в регистр SPDR процедурой из даташита SPI_MasterTransmit(char cData), срабатывает прерывание и в обработчике прерывания считываем показания температура из регистра SPDR )))
avr123.nm.ru » 21 авг 2007, 17:17
А где РАБОТАЮЩИЙ проект ??? :lol:
The_Kurs » 22 авг 2007, 07:16
Проект простейший выводит два байта принятых данных с термодатчика от ти на компутер через ком порт. Принимать через встроенный в кодевижн терминал включать режим показа в виде шестнадцатеричных чисел )))
Данные имеют вид
00 0B 53 00
где 00 - разделительные символы
0B53 данные с датчика смотреть по даташиту что с ними делать ))) 22,6градуса показывает)))
Теперь буду думать как в МК вычисления сделать чтоб сразу готовую температуру выводил )))
Подскажите функции перевода из Float в char и обратно а так же в integer и обратно.
- Вложения
-
- Схема подключения упрощенная.
- Temper.jpg (7.65 КиБ) Просмотров: 2792
-
- TEMPER.rar
- Сам проект
- (23.89 КиБ) Скачиваний: 64
avr123.nm.ru » 22 авг 2007, 08:13
Спасибо.
avr123.nm.ru » 22 авг 2007, 08:16
The_Kurs писал(а):Теперь буду думать как в МК вычисления сделать чтоб сразу готовую температуру выводил )))
Подскажите функции перевода из Float в char и обратно а так же в integer и обратно.
Посмотри пример CVAVR вывода в примере для LM75 и в задаче 5 - avr123.nm.ru/z5.htm
Master » 22 авг 2007, 12:25
Я использовал вот такой вариант.
// Declare your global variables here
char Hour=23, Min=59, Sec=58;
char strHour[3]="sd", strMin[3], strSec[3];
LCDshow(void)
{
itoa(Hour, strHour); //Переводит целое в строчное, если это ввести в поиске CVavr там будут функции и для перевода float и т. д.
itoa(Min, strMin);
itoa(Sec, strSec);
lcd_gotoxy(0,0);
lcd_putsf(" "); //3 пробела
if (Hour<10) {lcd_putsf("0");}
lcd_puts(strHour);
lcd_putsf(":");
if (Min<10) {lcd_putsf("0");}
lcd_puts(strMin);
lcd_putsf(":");
if (Sec<10) {lcd_putsf("0");}
lcd_puts(strSec);
}
The_Kurs » 25 авг 2007, 10:29
Теперь отсылаестя по ком порту на комп в уже готовом виде значение температуры)))
Master Спасибо очень помогло !!!)))
avr123.nm.ru Отличный курс ))) опять выручил )))! Сдвиг разрядов в право и лево!
Как мне нравится С для Мк переменной типа чар присваиваю значение типа интеджер ))) Делфи на три бы буквы послал )))
- Вложения
-
- TEMPER.rar
- Окончательный вариант)))
- (42.14 КиБ) Скачиваний: 73