Софтуер изпълнение SPI интерфейс например к-адаптер тип термодвойка връзка
Софтуер изпълнение на SPI интерфейс за свързване на термодвойка Пример тип К адаптер MAX6675 към микроконтролера ATmega8
В една от предишните си постове. Аз говорех за връзка термодвойка за Ардуино. Сега е време rassmoret връзката с микроконтролери AVR в чист С добро, тъй като се оказа, че не е трудно.
Позволете ми да ви напомня, че термодвойката е свързан чрез адаптера за MAX6675, което от своя страна е свързан към микроконтролера чрез SPI интерфейс.
След I2C, SPI интерфейс може да изглежда много просто. Ако rasmotret прилагането на хардуер SPI, тогава има данни SPDR прочетени или записани да, и които извършват цялата работа в SPI.
изпълнение на софтуер, както се оказа, не много по-сложно, но първият, който е SPI. Корпоративна appnot да SPI mozho намерена на Atmel: AVR151: Настройка и използване на SPI
погледнете схемата на свързване, взет от там:
-
Акценти в броя:
- Интерфейсът да свържете множество устройства в същото време, но може да се използва само един от тях.
- Той използва концепцията за майстор-роб (диригент). Той генерира майстор часовник и превключва устройството.
- В минимум изпълнение има две контролни линии: SCK се генерира от импулс (който е общ за всички) и СС на устройството избор линия (подчинен Избор). Други нейното предназначение: CS (Chip Select).
- Всеки път, когато добавяте увеличава интерфейс SPI устройство на друго SS / CS линия.
- Пълен дуплекс интерфейс, Мишо линия (магистър В Slave Out) е отговорен за получаване на (по отношение на капитана), MOSI линия е отговорен за predachi.
- Има четири режима на работа SPI. Фаза SCK първоначално на ниско ниво в режим 0, и най-високите в режим 3. четене се извършва при нарастващ фронт.
- В режими 1 и 3, се извършва четене на падащ фронт. Са редки, според книгата "Практическо Програмиране AVR микроконтролера" Юрий Revich, глава 11.
- Опростена версия на SPI се състои от три линии. В този случай, връзката е само на прием или само предаване.
Ето един опростен режим използва MAX6675. Документация: MAX6676 фиш
Предлагам друг поглед към формат на предаване:
Данните се предават в пакети от по два байта. При това температурата се дава 12 бита. На 15-ти малко, знаков бит. LSB - LSB, MSB - най-маловажния бит. Официалната легенда:
Температурната стойност предадена в градуси по Целзий, като се започне от 0 до 1024. 1024 - е десет бита, а данните се предават 12-битов формат. Така че, за да получите стойността в градуси, ще получи номер, за да се разделят с 4. Аз съм малко объркан от второто малко, устройство ID на. Искам да кажа, аз наистина не разбирам как може един бит служи като идентификатор. Вместо това, тя може да се нарече малко коректност.
Ако си спомняте, в случай на Ардуино, използвах библиотеката: MAX6675-библиотека
На проверка, се оказа, че е доста прост код:
Аз не реши да изобретяваме колелото, и да пренапише кода в чист В. Като шаблон се използва по проекта от предишния пост. Паднах на файлове, свързани с ПСД, и се оставя да пренапише Стартиране в съответствие с нейните цели:
Резултатът от програмата:
В този случай, видима обратна връзка горелка термодвойка.
Изтегляне на проекта, заедно с монтаж на файлове и фърмуер за ATmega8 тук.
Структура на проекта: