Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Atmega AVR микроконтроллер Tiny13 использование reset http://www.cyberforum.ru/avr/thread2087910.html
Заказал себе tiny13, у нее всего один порт B ресет висит на порту B - 5 пин. Вопрос: чего в программе делать нельзя с этим пином, чтобы потом нормально можно было перепрошиваться через ysp. DDR...
Датчик освещенности на AVRtiny 2313 Atmega AVR микроконтроллер
Собираю датчик освещенности на микроконтроллере ATtiny 2313.Принцип работы следующий:замеряя падение напряжения на фоторезисторе,оно сравнивается с опорным внутренним напряжением на компараторе(1,22...
Atmega AVR микроконтроллер Как измерить vcc самим мк
Доброе время суток. Тока начинаю изучать МК. Вот хочу сделать индикацию уровня батарейки, питающую мой мк, светодиодом допустим. Т.е. когда напряжение 3х вольтной батарейки падает до 2.6 В -...
Atmega AVR микроконтроллер Зеркальные байты при верификации. Как лечить? Всем добрый день! Ситуация следующая. Я прошиваю МК при помощи avrdude и программатора громова. Прошивка происходит корректно и МК верно выполняет записанную программу. НО! Верификация всегда... http://www.cyberforum.ru/avr/thread2087907.html
Atmega AVR микроконтроллер Возможен ли "токовый" PWM на Attiny13 http://www.cyberforum.ru/avr/thread2087906.html
Здравствуйте. Обычно при PWM "выключено"- это "0", а "включено" - это "1". Можно ли сделать, чтобы "выключено" - было тоже "0", а "включено" - высокоимпедансное состояние выхода. Понятно, что...
Кварц и прошивка МК Atmega AVR микроконтроллер
Подскажите тупому, пожалуйста. Разглядывая фото плат расширения для программатора на стр. http://www.rodyokot.ru/lab/controller/29/ увидел, что автор ставит на них кварцевые резонаторы с обвязкой....
Atmega AVR микроконтроллер I2C и Arduino
Выдрал из китайского модулятора микруху KT0803K. Упрявляется это чудо китайской мысли по I2C. Как при помощи ардуины ей поуправлять? Кто нибудь напишет примерный скетч?
Atmega AVR микроконтроллер чтение порта ввода-вывода Atmega8 Добрый день. Была поставлена задача: есть датчик движения, в спокойном состоянии с него идет 0.02ма, в режиме работы - 20ма. С помощью МК(Atmega8) сделать таймер для управления реле. Проект в... http://www.cyberforum.ru/avr/thread2087903.html
Atmega AVR микроконтроллер Косвенная адрессация http://www.cyberforum.ru/avr/thread2087902.html
Кто подскажет с примерами про косвенную адрессацию)),
Atmega AVR микроконтроллер Tiny2313 + кнопка, проблемы Только начал изучать и тут сразу затык( Есть Tiny2313, есть кнопка которая висит на порту A c подтягом, замыкается на землю. Хотелось посмотреть как влияет дребезг контактов и программно попытаться... http://www.cyberforum.ru/avr/thread2087901.html
Myst
0 / 0 / 0
Регистрация: 14.12.2014
Сообщений: 5
0

UART<->SPI

16.03.2011, 23:55. Просмотров 11234. Ответов 7
Метки (Все метки)

Всем привет! Для тестирование одного МК по протоколу SPI, решил по быстрому собрать "конвертер" UART<->SPI, что бы можно было наладить связь компа с этим МК. Вот первоночальная прошивка.
исходный код
Код
.include "m16def.yms"
.equ port_spi = portb
.equ ddr_spi = ddrb
.equ miso = pb6
.equ mosi = pb5
.equ ss = pb4
.equ sck = pb7

.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1

.CSEG

.org 0x00
jmp Start

.org   URXCaddr // USORT, Rx Complete
rjmp Rx_Complete
.org   UDREaddr // USORT Data Register Empty
reti
.org   UTXCaddr // USORT, Tx Complete
reti

.org INT_VECTORS_SIZE
Rx_Complete:
in r17,UDR

WoytUDRE:
sbis UCSRA, UDRE
rjmp WoytUDRE

out UDR, r17

reti

Start:
//stack
ldi r16, low(ROMEND)
out SPL, r16
ldi r16, high(ROMEND)
out SPH, r16

//spi
ldi r16, (1<<sck)|(1<<ss)|(1<<mosi)
out ddr_spi,r16
ldi r16, (1<<spe)|(0<<spie)|(1<<mstr)|(0<<dord)|(0<<cpha)|(0<<cpol)
out spcr, r16

//uart
ldi r16, low(bauddivider)
out UBRRL, r16
ldi r16, high(bauddivider)
out UBRRH, r16

clr r16
out UCSRA, r16

ldi r16, (1<<rxcie)|(1<<rxen)|(1<<txim)
out UCSRB, r16

ldi r16, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)
out UCSRC, r16

sei

Work:
rjmp Work
Прошивка для проверки роботоспособности UART. Вообщем все работает отлично. Все принятые байты шлются обратно.
Немного модернизировал прошивку:
изменения
Код
Rx_Complete:
in r17,UDR
out SPDR, r17
WoytSPI:
sbis SPSR, SPIF
rjmp WoytSPI

WoytUDRE:
sbis UCSRA, UDRE
rjmp WoytUDRE

out UDR, r17

reti
И тут начались чудеса, причем стабильные. Вот сам простой пример, если отправлять с компьютера байт 40 - 50 то приходит ответ нормальный. если меньше (например 39), то либо молчание, либо 3 нуля в ответ. Использую mega16.
Вопрос в следующем: где моя нигия неверна? = )

Вернуться к обсуждению:
UART<->SPI
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 23:55
Готовые ответы и решения:

Помогите реализовать передачу данных по UART или SPI
Доброго времени суток, обращаюсь к вам форумчане за помощью. Требуется передать число с переменной...

Использование интерфейса UART и SPI на ATmega16
подскажите а можно ли использовать USORT и SPI для реализации радиоуправления?

SPI -> 485->SPI
Есть необходимость переводить SPI на 485 интерфейс. Хотел бы уточнить, драйвер 485 сажать напрямую...

SPI v.s. TWI
Задумался об организации совместной работы 2-х платок на атмегах-сестрах (48 и 168). Рассматривал...

Sdio vs spi
Привет ребята, на данный момент нужно подключить lpc4357 микроконтроллер к wi-fi модулю gainspan...

7
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.