Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подскажите по TWI (I2C)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
StasAga
Я только начинающий программист, еще многого не знаю...

Прошу у вас помощи.
Имею проц. ATmega 2560 и часы на RAMTRON FM31256... Связь между микрухами по TWI (I2C)...

Так вот когда я запускаю программу под эмулятором, то время считывается правильно. Но если без эмулятора, то похоже связи по TWI не получается... и проц не может считать время. Эмулятор AVR AT JTAGICE Mk II.

На сколько я понимаю, эмулятор записывает в проц. программу... А в чем разница работы проца под эмулятором и самостоятельно. Может это меня на толкнет на выяснение причины.
IgorKossak
Возможно эмулятор слегка подтормаживает весь процесс если количество точек останова больше 4.
Без него или с нормальным количеством брейкпоинтов процесс идёт быстрее.
Попробуйте уменьшить сопротивление подтягивающих резисторов до 2.4 кОм.
rumit2000
могу поделится опытом, было давно и не правдо biggrin.gif , однако когда только начинал осваивать МК - пытался связываться к компом по RS232, c JTAG эмулятором всё отлично работало, а как только его отключал - переставала работать связь с PC... оказалось - не было земли smile.gif , а при подключённом JTAG, земля проходила через него.... Глупейшая конечно ошибка, но "опыт - сын ошибок трудных...."
Может у Вас проблема из этого разряда? Электроника - наука о контактах.
StasAga
Цитата(IgorKossak @ Apr 19 2007, 12:14) *
Возможно эмулятор слегка подтормаживает весь процесс если количество точек останова больше 4.
Без него или с нормальным количеством брейкпоинтов процесс идёт быстрее.
Попробуйте уменьшить сопротивление подтягивающих резисторов до 2.4 кОм.


У меня вообще нет точек останова.
Подтягивающие резисторы использую внутрении в ATmega...
Однако с эмулятором все ок!, а без него никак. Пробовал снижать скорость... Понизил до 10kHz, все равно без эмулятора не работает.
Причем проверяли это на нескольких платах. На одной все работает как надо, а надругих 4-ех нет...
Igor26
Цитата
Подтягивающие резисторы использую внутрении в ATmega...


У внутренних резисторов большое сопротивление.
Обязательно поставьте внешние, как советовал IgorKossak, после этого попробуем разобраться дальше.
rumit2000
Цитата(StasAga @ Apr 19 2007, 13:51) *
У меня вообще нет точек останова.
Подтягивающие резисторы использую внутрении в ATmega...
Однако с эмулятором все ок!, а без него никак. Пробовал снижать скорость... Понизил до 10kHz, все равно без эмулятора не работает.
Причем проверяли это на нескольких платах. На одной все работает как надо, а надругих 4-ех нет...


Возможна ошибка в каком угодно месте, например в неправильной разводке ПП, например при очень зашумлённых сигналлах JTAG их будет "фильтровать", а без него работать не будет...
А при подключённом JTAG, но без отладки по нему - работает (незнаю имеется ли такая возможность для AVR, для MSP430 - заливаешь по JTAG прогу, при включенном JTAG передёргиваешь питание и работает на ура)? если да - скорее всего проблема с самой платой
Да и внутренние резисторы большие - попробуйте поставить как советует тов.IgorKossak

P.S. пока писал про внутренние резисторы Igor26 опередил smile.gif
Kuzmi4
2 StasAga - у меня когда то были похожие грабли - в программе наворотил кучу всего, токо у меня был АЙС - то с айсом всё вроде работало а без него в упор отказывалось - оказалось там проц чуть не разрывался пытаясь выполнить сразу все задания, да и ещё не совсем корректно завершал процедуры - в общем по отдельности всё работало а вкуче нет.

А на счёт внешних резисторов на TWI - то обязательно - ставлю 5к1 ~ 10к , когда то разгорелся спор как раз по этому вопросу с мусЧиной , который уже довольно долго плотно общался с аврами - то вот он сообщил мне что без этих резюков оно конечно может работать - но бывали случаи что TWI серъёзно глючил без них с внутренними своими , а при допайке этих резисторов картина кардинально менялась в лучшую сторону. Да ещё скорость не сильно запредельную ставте - с маленьких скоростей начните..
Или напишите просто программу получения байта или чтото типа того для меги - попробуйте использовать внешние признаки - светодиоды или чтото другое для отладки.Ну и осцилографом тож не мешало бы тыкнуться - посмотреть что у вас там творится с эмулятором и без него..
Igor26
Цитата
незнаю имеется ли такая возможность для AVR, для MSP430 - заливаешь по JTAG прогу, при включенном JTAG передёргиваешь питание и работает на ура

Да, имеется.
defunct
Rpull-up = Tr/Cb,
где Tr для 100Khz = 1us, для 400Khz - 200ns.
Емкость шины пусть будет 100 pf (для простоты счета).
Получаем
Rpull-up = 10(-6)/10(-10) = 10k (для 100 khz),
Rpull-up = 2*10(-7)/10(-10) = 2k для 400Khz соответственно
StasAga
Спасибо за помощь. Внешние подтягивающие резисторы действительно нужны. Но проблема оказалась в другом. Как говорится, внимательно надо мануал читать...

Так называемый Processor Companion в Ramtron FM31256 начинает работать лишь спустя 100 милисекунд после подачи питания. А у меня в самом начале программы шла инициализация этого самого Processor Companion по TWI... Вот и получалось, что при работе с эмулятором питание на плате не сбрасывалось и все работало. А при запуске без эмулятора - сбрасываешь питание, начинается инициализация Processor Companion, а Ramtron в это время молчал как партизан, ожидая те самые 100 милисекунд.

В итоге пришлось поставить задержку, и теперь все работает ОК!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.