Свежие обсуждения
Микроконтроллеры

TEX учится

1 2 7

Не знаю, с симуляторами не заморачивался.
Но в атмелах PINх - это регистр ввода, а PORTх - регистр вывода.

 

Hamster: На картинке видно что в порту единица, а светик не горит.

А ножку порта на выход настроили?
На выходе: ноль (синий).

 

Hamster: помогите разобраться.

А пришлите файл прошивки МК (с С++ не дружу), я у себя помоделирую. Макетка с тини13а есть.

 

Сергей К:
естественно ставил как выход
// Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out
// State5=T State4=T State3=T State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x07;

TEX: а как прислать?

 

Hamster: естественно ставил как выход

DDRB ( 007h, 00000111b ) правильно, на выход. Смотрел по схеме, совпадает.

Hamster: а как прислать?

На почту (lkcx@yandex.ru), или ссылкой с какого нибудь файлообменника.
Нужен .hex или .bin файл. Еще фузы нужны, и как это должно работать. О результатах обязательно напишу.
Я работая с ISIS professional, порою наблюдал подземный стук, отчего не уверен что это точная среда моделирования.

 

Не работает.

 

TEX: А пришлите файл прошивки МК (с С++ не дружу)

Посмотрите по ссылке работы Кухтецкого С.В.
Исходники на асме для атмел. Думаю, найдете много интересного для себя)))
http://www.icct.ru/node/83/php.htm

 

vintik: Думаю, найдете много интересного для себя)))

Спасибо. Я уже видел эту схему, правда, интересовала силовая часть от нее.
Сейчас изучаю Ю.Ревича, там тоже много интересного.

 

Если Вы можете заставить моргать светодиод, то SPI работать так же сможете.

TEX: Как замкнуть в кольцо реальный и программный сдвиговые регистры не очень ясно. Мог бы предположить что единицу из С пропустить через A за 8 машинных циклов, чтоб она опять появилась в С, но на это надо не 8, а 9 операций сдвига, (с учетом бита С, А получается 9-разрядным) от чего вся логика летит к чертям.

Нужно разделить подготовительный процесс, и процесс приема (передачи) байта.
Подготовительный процесс передачи:
Загрузка данных в рабочий регистр.
Еще какие-либо действия для организации передачи (выбор обьекта приема).
Подготовка портов ввода/вывода на передачу.

Переход в подпрограмму передачи байта.
1. Двигаем рабочий регистр вправо, информация младшего бита запишется в бит переноса С.
Двигаем регистр portB влево, информация бит С копируется в младший бит регистра портаВ. То есть на выводе порта RB0 имеем или единицу, или ноль.

Тактируем вторым битом порта RB1. Устанавливаем RB1 в 1, ждем какое то время, сбрасываем (очищаем) portВ. На этом передача первого бита завершена.
Далее процесс повторяется, - переходим к пункту 1.
По передачи 8и бит возвращаемся в подпрограмму подготовительного процесса, - загрузки новых данных в рабочий регистр.

 

Ну, я как бы хотел это сделать на 8051, а там сдвигать можно только ACC (аккумулятор), и вообще, почти все действия можно сделать только с ним.
Не то чтоб у меня примеров как это сделать нет, просто не могу въехать в суть.
От светодиодов уже подташнивает.