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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Не могу выставить задержку Тини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. Остальные пустые.
Аватара пользователя
Chip15
 
Сообщения: 19
Зарегистрирован: 14 июн 2007, 09:39
Откуда: Благовещенск

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

Сообщение Victorovych » 17 мар 2008, 15:47

Для начала скинь CKDIV8 в 1 (убери флажок)
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

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

Сообщение Chip15 » 17 мар 2008, 15:51

нет его там.
Аватара пользователя
Chip15
 
Сообщения: 19
Зарегистрирован: 14 июн 2007, 09:39
Откуда: Благовещенск

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

Сообщение Victorovych » 17 мар 2008, 16:17

Eсли перед каждым циклом предустановку delay1..delay3 делать, то должно раз в 40 полегчать
Последний раз редактировалось Victorovych 17 мар 2008, 16:37, всего редактировалось 1 раз.
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

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
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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

Сообщение Chip15 » 17 мар 2008, 17:00

Я не волшебник. только учусь. Можите расшифровать команды, если не сложно :)
Аватара пользователя
Chip15
 
Сообщения: 19
Зарегистрирован: 14 июн 2007, 09:39
Откуда: Благовещенск

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

Сообщение Myp » 17 мар 2008, 17:04

<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение EdGull » 17 мар 2008, 17:11

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

какие именно?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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


эти
Аватара пользователя
Chip15
 
Сообщения: 19
Зарегистрирован: 14 июн 2007, 09:39
Откуда: Благовещенск

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

Сообщение EdGull » 17 мар 2008, 17:20

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

Добавлено спустя 1 минуту 20 секунд:
а то я даже как-то растерялся... :D
на асме пишешь, а бейсиковские команды не знаешь... :D
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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
Аватара пользователя
Chip15
 
Сообщения: 19
Зарегистрирован: 14 июн 2007, 09:39
Откуда: Благовещенск

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


так попробуй
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

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

Сообщение EdGull » 17 мар 2008, 17:35

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

Добавлено спустя 1 минуту 11 секунд:
Incr I - это не объявление, а инкрементироваие переменной, т.е. прибавление к ней единички
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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
Аватара пользователя
Chip15
 
Сообщения: 19
Зарегистрирован: 14 июн 2007, 09:39
Откуда: Благовещенск


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18