roboforum.ru

Технический форум по робототехнике.

Не могу выставить задержку Тини2313

Не могу выставить задержку Тини2313

Chip15 » 17 мар 2008, 14:40

Всем привет. Не получается выставить задержку 1 сек.

Код: Выделить всёРазвернуть
.nolist 
.include "tn2313def.inc"
.list
.def   temp =r16
.def   temp2 =r20
.def    delay1 =r17
.def    delay2 =r18
.def   delay3 =r19
rjmp Init
Init:
   ser temp
   out DDRA,temp
   out DDRB,temp
   out DDRD,temp
   ldi delay1,0x00
   ldi delay2,0x35
   ldi delay3,0x0C   
Start:
   ldi temp,0b00000001
   out PinB,temp
Loop:
   subi Delay1,1
   sbci Delay2,0
   sbci Delay3,0
   brcc Loop
   clr temp2
   out PinB,temp2
Loop2:
   subi Delay1,1
   sbci Delay2,0
   sbci Delay3,0
   brcc Loop2
rjmp Start 


В реале больше 40 сек. Чувство что МК на пониженой частоте пашет.

Кварц подкидывал. Кстати он на 4 МГц. Еще по пути. Не доконца догоняю как выставлять фузы.
Галки поставил в CKSEL1 и SUT1. Остальные пустые.

Re: Не могу выставить задержку Тини2313

Victorovych » 17 мар 2008, 15:47

Для начала скинь CKDIV8 в 1 (убери флажок)

Re: Не могу выставить задержку Тини2313

Chip15 » 17 мар 2008, 15:51

нет его там.

Re: Не могу выставить задержку Тини2313

Victorovych » 17 мар 2008, 16:17

Eсли перед каждым циклом предустановку delay1..delay3 делать, то должно раз в 40 полегчать
Последний раз редактировалось Victorovych 17 мар 2008, 16:37, всего редактировалось 1 раз.

Re: Не могу выставить задержку Тини2313

EdGull » 17 мар 2008, 16:33

Вот всё таки любим мы себе проблемы создавать на пустом месте... :D
Код: Выделить всёРазвернуть
$regfile = "attiny2313.dat"
$crystal = 4000000
$baud = 9600

Dim I As Integer

Do
  Incr I
  Print "test I = " ; I
  Waitms 1000
Loop

Re: Не могу выставить задержку Тини2313

Chip15 » 17 мар 2008, 17:00

Я не волшебник. только учусь. Можите расшифровать команды, если не сложно :)

Re: Не могу выставить задержку Тини2313

Myp » 17 мар 2008, 17:04


Re: Не могу выставить задержку Тини2313

EdGull » 17 мар 2008, 17:11

Chip15 писал(а):Я не волшебник. только учусь. Можите расшифровать команды, если не сложно :)

какие именно?

Re: Не могу выставить задержку Тини2313

Chip15 » 17 мар 2008, 17:16

Код: Выделить всёРазвернуть
$regfile = "attiny2313.dat"
$crystal = 4000000
$baud = 9600

Dim I As Integer

Do
  Incr I
  Print "test I = " ; I
  Waitms 1000
Loop


эти

Re: Не могу выставить задержку Тини2313

EdGull » 17 мар 2008, 17:20

ну давай так, сам-то как думаешь какая команда что означает?

Добавлено спустя 1 минуту 20 секунд:
а то я даже как-то растерялся... :D
на асме пишешь, а бейсиковские команды не знаешь... :D

Re: Не могу выставить задержку Тини2313

Chip15 » 17 мар 2008, 17:31

Код: Выделить всёРазвернуть
$regfile = "attiny2313.dat"    
$crystal = 4000000               ;частота кристала
$baud = 9600                       ;скорость

Dim I As Integer                   ;объявление переменной

Do
  Incr I                                ;инкремеентирование переменной
  Print "test I = " ; I             ; вывод в уарт строки test I = "номер попытки"
  Waitms 1000                    ;ждем 1 сек               
Loop

Re: Не могу выставить задержку Тини2313

Victorovych » 17 мар 2008, 17:33

Код: Выделить всёРазвернуть
.include "tn2313def.inc"
.list
.def   temp =r16
.def   temp2 =r20
.def    delay1 =r17
.def    delay2 =r18
.def   delay3 =r19
rjmp Init
Init:
   ser temp
   out DDRA,temp
   out DDRB,temp
   out DDRD,temp
   ldi delay1,0x00
   ldi delay2,0x35
   ldi delay3,0x0C   
Start:
   ldi temp,0b00000001
   out PinB,temp
Loop:
   subi Delay1,1
   sbci Delay2,0
   sbci Delay3,0
   brcc Loop
   ldi delay1,0x00
   ldi delay2,0x35
   ldi delay3,0x0C 
   clr temp2
   out PinB,temp2
Loop2:
   subi Delay1,1
   sbci Delay2,0
   sbci Delay3,0
   brcc Loop2
   ldi delay1,0x00
   ldi delay2,0x35
   ldi delay3,0x0C 
rjmp Start


так попробуй

Re: Не могу выставить задержку Тини2313

EdGull » 17 мар 2008, 17:35

ай маладца
9600 скорость уарта
print это вывод в уарт

Добавлено спустя 1 минуту 11 секунд:
Incr I - это не объявление, а инкрементироваие переменной, т.е. прибавление к ней единички

Re: Не могу выставить задержку Тини2313

Chip15 » 18 мар 2008, 05:27

Victorovych , уже лудше. Возник вопрос:
1. Задержка примерно 3 сек. Из за чего так? У мя емкости в обвязке кварца на 33 стоят. (по дш 22 надо)

Добавлено спустя 26 минут 6 секунд:
Все. Исправил. Немного поправил прогу и задержка стала расчетной :)
Вставил rcall Delay
Всем огромное спасибо. Помогли "чайнику" :) Буду осваивать дальше :)

Код: Выделить всёРазвернуть
.include "tn2313def.inc"
.list
.def   temp =r16
.def   temp2 =r20
.def    delay1 =r17
.def    delay2 =r18
.def   delay3 =r19
rjmp Init
Init:
   ser temp
   out DDRA,temp
   out DDRB,temp
   out DDRD,temp
Delay:
   ldi delay1,0x00
   ldi delay2,0x35
   ldi delay3,0x0C   
Start:
   ldi temp,0b00000001
   out PinB,temp
Loop:
   subi Delay1,1
   sbci Delay2,0
   sbci Delay3,0
   brcc Loop
   rcall Delay
   ret
   clr temp2
   out PinB,temp2
Loop2:
   subi Delay1,1
   sbci Delay2,0
   sbci Delay3,0
   brcc Loop2
   rcall Delay
   ret
rjmp Start


Rambler\'s Top100 Mail.ru counter