И получилось так, что устройство ни как не хочет работать.
Поиски ошибок не увенчались успехом.
Решил резать код на блоки и проверять работоспособность каждого из них.
Вот такой код ( блок ) у меня получился:
Хотя, минутку, сначала схема:
А вот теперь код:
Код: Выделить всё
;******************************************************************************
; тип используемого МК
;******************************************************************************
.include "tn2313adef.inc" ; используем tiny2313a
;******************************************************************************
; переименуем РОН
;******************************************************************************
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20 ;
.def Temp5=R21
.def FlagFazy=R22 ;
.def FlagSinhr=R23 ;
.def Temp8=R24
.def Temp9=R25
;******************************************************************************
; инит прерываний
;******************************************************************************
.cseg
.org 0
rjmp RESET ; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset ( включение МК )
.org INT_VECTORS_SIZE ; конец векторов прерываний
;******************************************************************************
; старт
;******************************************************************************
reset: ; включение микроконтроллера
;******************************************************************************
; глобальный запрет прерываний
;******************************************************************************
cli ; глобальный запрет на прерывания
;******************************************************************************
; инит стека
;******************************************************************************
ldi Temp,low(RamEnd) ; инициализации стека
out SPL,Temp ;
;******************************************************************************
; инит портов
;******************************************************************************
ldi Temp,0b11111111 ; настроили порт "В" (0-ввод, 1-вывод)
out DDRB,Temp ;
ldi Temp,0b01111011 ; настраиваем порт "D" (0-ввод, 1-вывод)
out DDRD,Temp ; 00000х00 - ввод информации с приемника PD2
;
ldi Temp,0b00000000 ; выводим лог_0 в порт "B"
out PortB,Temp ;
ldi Temp,0b00000000 ; выводим лог_0 в порт "D" // Подтяжка на PD2 и PD7 отключена. !!!!!!!!!!!!!!!!!!!!!!!!!!
out PortD,Temp ;
;******************************************************************************
; глобальное разрешение прерываний
;******************************************************************************
; sei ; глобальное разрешение прерываний !!!!!!!!!!!!!!!!!!!!!!!!!! запрещены любые прерывания!!!
;*******************************************************************************
;*******************************************************************************
; главный цикл
;*******************************************************************************
;*******************************************************************************
ldi Temp,0b00000011 ; включаем светодиоды ( светодиоды подключены к PB0 и PB1 )
out PortB,Temp ;
Main_cicle:
rjmp Main_cicle ; циклимся
;*******************************************************************************
;*******************************************************************************
Код: Выделить всё
ldi Temp,0b00000011 ; включаем светодиоды ( светодиоды подключены к PB0 и PB1 )
out PortB,Temp ; Тогда я закоментировал строчку
Код: Выделить всё
ldi Temp,0b00000000 ; выводим лог_0 в порт "D" // Подтяжка на PD2 и PD7 отключена. !!!!!!!!!!!!!!!!!!!!!!!!!!
out PortD,Temp ;
Что к чему? Как так ?
Что в этой команде такого? Она всего лишь выводит лог_0 на те ножки, которые настроены на вывод и отключает подтягивающие резисторы у тех ножек которые настроены на ввод!
Я конечно мог заподозрить PD7, так как его в ATtiny2313 нет, НО я уже делал подобный проект и там инит портов был точно такой-же как в этом проекте! И все работало!
П.С.
Я пробовал на другом чипе ATtiny2313, но результат такой-же
Фузы я проверял...


