Как сформировать задежку 666нс на atmega16

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
racushka
Родился
Сообщения: 13
Зарегистрирован: Пт мар 04, 2011 07:12:55

Как сформировать задежку 666нс на atmega16

Сообщение racushka »

Частота 3,69.
Думала через nop сделать, но все равно как-то очень много по времени получается (600мкс):

Код: Выделить всё

.include "m16def.inc"
.def Temp=r24

LDI R30,0xFF
OUT DDRC, R30

m:
sbic 	PINC, 7
rjmp	n
sbr 	Temp, 0x80
out 	PORTC, Temp
nop 
nop
n:
sbis	PINC, 7
rjmp	m
cbr 	Temp, 0x80
out 	PORTC, Temp
nop
nop
rjmp	m
Это нужно для формирования байта по USB low speed (скорость передачи 1,5 Мбит/с -> время передачи одного бита 666нс, как сформировать последовательно данные поняла, а вот сделать такую задержку не получается=(
сейчас поняла, что нопами не выйдет... нужно 2,5 нопа примерно...
как же сделать? подскажите пожалуйста
Реклама
Аватара пользователя
Genezis
Встал на лапы
Сообщения: 81
Зарегистрирован: Пт апр 17, 2009 10:09:45
Откуда: Ukraine

Re: Как сформировать задежку 666нс на atmega16

Сообщение Genezis »

Так ведь при частоте 3,69МГц 1машинный цикл больше 1 мкс! То есть задержку меньше сделать нельзя. Частоту повышать нужно. Ну в PICах так - при частоте 4МГц - 1 м.ц.=1мкс
Или не наносекунд , а микросекунд?
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Как сформировать задежку 666нс на atmega16

Сообщение Satyr »

racushka писал(а):Частота 3,69.
epic fail в подборе частоты.

рекоменю слить V-USB, там лоусипд УСБ уже сделан и все по тактом подобрано.
Насколько помню, получается это только на 12.0 и 16.0Мхз кварцах.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»