tiny2313, логика работы порта D

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Yurivz
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

tiny2313, логика работы порта D

Сообщение Yurivz »

Пытаюсь вывести меандр на пины порта D.
Вывожу 1 в порт, ставлю 2 нопа (чтоб компенсировать два такта уходящие на rjmp), вывожу 0 в порт, jmp'аю на начало.
С битами 0 и 1 порта D прокатывает, а вот с 2 и 3 - почему-то меандр не получается. Исходник в AVR Studio и проект в Proteus 7.4 прилогаю.
Вложения
3110p.rar
(25.98 КБ) 224 скачивания
Реклама
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

Дак в Студии же видно чего МК делает и должно быть понятно в чем там дело .
Реклама
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Странное какое-то написание команд. Лень ENTER нажать? Вот так в студии работает
Аватара пользователя
Yurivz
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

ikarab писал(а):Дак в Студии же видно чего МК делает и должно быть понятно в чем там дело .
Куда именно в студии смотреть? Куда же деваются лишние 3 такта? Почему ноль длится 7ms, а не 4ms ?

ps: Если кто еще не понял, я не профи, я новичок. Соответственно не очень хорошо еще знаю все нюансы AVR Studio, иначеб я наверное не задавал вопросы.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Yurivz
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

akl писал(а):Странное какое-то написание команд. Лень ENTER нажать?
Когда код написан в одну строку - его проще закоментировать, исключив из компиляции. Там несколько одинаковых кусков, только для разных битов прота D.
Вот так в студии работает
Ну и что поменялось? Как разделение команд (пробелом или переводом строки) влияет на готовый код? Никак. Соответственно и результат одинаков. НЕ работает. В случае с нолевым и первым битом порта D (и со всем портом B) длительность ноля и единицы - 4ре такта процессора (4ms при тактовой частоте 1MHz). Если этот-же код применяется ко вторму и третьему биту порта D - длительность ноля почему-то 7ms. Откуда берутся эти лишние 3ms? Что процессор делает лишних 3 такта?
Реклама
Аватара пользователя
Neekeetos
Держит паяльник хвостом
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула
Контактная информация:

Сообщение Neekeetos »

Yurivz писал(а):Ну и что поменялось? Как разделение команд (пробелом или переводом строки) влияет на готовый код? Никак. Соответственно и результат одинаков. НЕ работает. В случае с нолевым и первым битом порта D (и со всем портом B) длительность ноля и единицы - 4ре такта процессора (4ms при тактовой частоте 1MHz). Если этот-же код применяется ко вторму и третьему биту порта D - длительность ноля почему-то 7ms. Откуда берутся эти лишние 3ms? Что процессор делает лишних 3 такта?

cbi и sbi выполняются по два такта, нопы - по одному, но у тебя их два, плюс два такта относительный переход на начало цикла, итого 2+2+2+2 = 8 тактов на полный цикл, ты ни про 4 такта ни про 7 не угадал. Потом ты же понимаешь что твой код работает как ты задумал только если дрыгать одним битом, добавляя одновременно другие к длительности ноля у всех будет добавлено по 6 тактов - на обработку других каждого дополнительного.
Реклама
Аватара пользователя
Yurivz
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

Neekeetos писал(а):начало цикла, итого 2+2+2+2 = 8 тактов на полный цикл, ты ни про 4 такта ни про 7 не угадал.
Осциллограммы в протеусе смотрел? Судя по всему нет. Открой протеусом приаттаченный в начале проект и посчитай сам. Потом говори угадал я или нет. :evil:
Аватара пользователя
Yurivz
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

Для тех кому лень открыть Proteus - прилагаю картинку, на которой достаточно наглядно отображена суть проблемы.
Изображение
На картинке даны осциллограммы полученные в протеусе, а справа код, который их сгенерил. Как видно, код отличается только номером бита, который устанавливается и сбрасывается. Однако если я использую бит 2 - ноль затягивается на 3ms, как будто в коде стоят не 2 nop'а, а 5. Вот мне и интересно, что проц делает эти лишние 3 такта? Почему вместо положенных 4х тактов на нулевой полупериод - выползают 7.
Аватара пользователя
Neekeetos
Держит паяльник хвостом
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула
Контактная информация:

Сообщение Neekeetos »

Yurivz писал(а):
Neekeetos писал(а):начало цикла, итого 2+2+2+2 = 8 тактов на полный цикл, ты ни про 4 такта ни про 7 не угадал.
Осциллограммы в протеусе смотрел? Судя по всему нет. Открой протеусом приаттаченный в начале проект и посчитай сам. Потом говори угадал я или нет. :evil:

Ну открыл, судя по 16 тактам на цикл шпротеус глючит. Так что спи спокойно дорогой товарищ, все работает.
Аватара пользователя
Yurivz
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

Neekeetos писал(а):Ну открыл, судя по 16 тактам на цикл шпротеус глючит. Так что спи спокойно дорогой товарищ, все работает.
Вот собственно такое подозрение у меня тоже закрадывалось... Учитывая что я еще только начинаю изучать AVR, а протеус глюками меня уже достал. Но для надежности хотелось бы быть уверенным, что это именно глюк протеуса, а не хитрая логика отработки порта D связанная с альтернативными функциями пинов к примеру. Увы это в реальном железе я проверить немогу за неимением реального железного осциллографа.
Аватара пользователя
Neekeetos
Держит паяльник хвостом
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула
Контактная информация:

Сообщение Neekeetos »

Yurivz писал(а):
Neekeetos писал(а):Ну открыл, судя по 16 тактам на цикл шпротеус глючит. Так что спи спокойно дорогой товарищ, все работает.
Вот собственно такое подозрение у меня тоже закрадывалось... Учитывая что я еще только начинаю изучать AVR, а протеус глюками меня уже достал. Но для надежности хотелось бы быть уверенным, что это именно глюк протеуса, а не хитрая логика отработки порта D связанная с альтернативными функциями пинов к примеру. Увы это в реальном железе я проверить немогу за неимением реального железного осциллографа.

Чисто теоретически можно собрать внешний тактовый генератор выдрав его из китайского будильника. Там частота 1 герц - можно считать такты в реальном времени просто привесив светодиод на порт :)) . А так лучше всего смотреть это все в аврстудии - там симулятор с точностью до тактов, как пишет так и есть. На счет протеуса - даже не знаю, раньше все точно эмулировалось , модель 2313 наверно кривая..
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

Я вам ВО ВТОРОМ посте написал что в СТУДИИ все можно увидеть раз вы в ней делаете код.
Аватара пользователя
Neekeetos
Держит паяльник хвостом
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула
Контактная информация:

Сообщение Neekeetos »

ikarab писал(а):Я вам ВО ВТОРОМ посте написал что в СТУДИИ все можно увидеть раз вы в ней делаете код.

КАПСИТЬ - делу вредить, каков был вопрос у создателя темы? Правильно - вопроса не было, соотв. и ответ про такты в авр студии не в тему, как собственно и любой другой :)))
Аватара пользователя
Yurivz
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

ikarab писал(а):Я вам ВО ВТОРОМ посте написал что в СТУДИИ все можно увидеть раз вы в ней делаете код.
Я второй раз спрашиваю. Как и где это смотреть в студии?
Правильно - вопроса не было
Вопрос есть. Откуда берется задержка в 3 такта при использовании 2го и 3го битов порта D ?
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Проверял так. Никаких неучтенных задержек нет.
Аватара пользователя
Yurivz
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

akl писал(а):Проверял так. Никаких неучтенных задержек нет.
Благодарю. Значит суть моей проблемы - очередной баг протеуса.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Сообщение BCluster »

Протеус один большоой баг )
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

BCluster писал(а):Протеус один большоой баг )
+100000
systemmind
Родился
Сообщения: 13
Зарегистрирован: Сб апр 25, 2009 07:55:58
Контактная информация:

Сообщение systemmind »

Вопрос немного не по теме, но касающийся 2313. Я делаю диплом с использованием этого микроконтроллера. Скажите, какова величина выходных токов у портов МК??
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Максимальный ток линии ввода/вывод - 40 мА
Макс.ток выводов Vcc и GND - 200 мА
Чем дальше, тем больше становлюсь занудой...
Изображение
Закрыто

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