реклама на сайте
подробности

 
 
> twi atmega 128, twi atmega 128
Oleg_DI
сообщение Jan 11 2009, 16:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 15-10-07
Из: г.Екатеринбург
Пользователь №: 31 379



помогите разобраться с twi функция работает на 16 меге а на 128 jtag выдаёт ошибку условия старт.Аппаратно на двух разных платах тоже самое.
TWI_BIT_RATE= 1; //Bit Rate 100 kBit/s
TWI_STATUS = 0x00; //Prescaler 1:1
TWI_CONTROL = 0x04; //enable twi
TWAR = 0x0d;
старт TWCR = 0xa4;
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Александр Куличо...
сообщение Jan 11 2009, 19:49
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



А что у Вас в TWAR?? случайно не адрес устройства, к которому Вы обращаетесь?
Судя по всему, случай TWSR = 0x00 возникает в режиме slave (т.е. когда адрес на шине совпал с TWAR) при ошибочном обнаружении (не генерации) на линии старта/стопа
Так что инициализцию TWAR лучше уберите.

Цитата
Вопрос без slev устройства одни резисторы стоит пробовать

Можно попробовать. Но в данном случае, думаю, это ничего не даст. Хотя могу и ошибаться.
Кстати, при отладке I2C после сброса контроллера нужно как-то сбрасывать и слейв-устройства (вернее, состояние ихнего интерфейса)
Наиболее простой способ - снятие питания. Или же програмным способом. Причина и методы решения - в http://www.analog.com/static/imported-file...7414AN686_0.pdf
Лично я делаю ДО включения аппаратного TWI так (правда, на асме):
Код
TWI_Master_Initialise:
;*            
;-    RESET I2c        
    cbi    SCL_PORT,SCL
    cbi    SDA_PORT,SDA
    cbi    SCL_DDR,SCL
    cbi    SDA_DDR,SDA    // SDA = high
    call    Wait5us


    ldi    Cnt,10
i2cNextSCL:
    sbi    SCL_DDR,SCL    // push SCL low
    call    Wait5us        // wait 5 us
    cbi    SCL_DDR,SCL    // release SCL high
ii2cWt1:    sbis    SCL_PIN,SCL    // wait SCL
    rjmp    ii2cWt1
    call    Wait5us        // wait 5 us
    dec    Cnt
    brne    i2cNextSCL



И еще.
В даташите на атмегу128, стр. 201 указано, что нельзя посылать стоп сразу после старта или повторного старта:
ATMega128, pg201:
A transmission basically consists of a START condition, a SLA+R/W, one or more data packets
and a STOP condition. An empty message, consisting of a START followed by a STOP condition,
is illegal.

Поэтому TWCR = HARD_STOP_CONDITION в строках
if ((TWSR & 0xF8) != _START) {TWCR = HARD_STOP_CONDITION; return ERROR_START;}
и
if ((TWSR & 0xF8) != _START_REPEAT) {TWCR = HARD_STOP_CONDITION; return ERROR_START;}
я бы убрал.

У меня появились еще вопросы: Ошибка возникает при первом проходе данного участка (после сброса) или при последующих?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Oleg_DI   twi atmega 128   Jan 11 2009, 16:42
- - korobov_michael   Цитата(Oleg_DI @ Jan 11 2009, 18:42) TWI_...   Jan 11 2009, 17:12
- - Oleg_DI   мастер //TWSR=0x00; //TWBR=0x42; //TWAR=0x0d; //T...   Jan 11 2009, 17:32
|- - korobov_michael   1. На всякий случай, фьюзы соответствуют друг друг...   Jan 11 2009, 17:41
- - Oleg_DI   Да фьюзы соответствуют //========================...   Jan 11 2009, 17:51
- - Александр Куличок   Внешние подтяжки присутствуют? SDA, SCL на землю н...   Jan 11 2009, 17:59
- - Oleg_DI   резисторы 4.7к . Две разные платы с мегой 128 не ...   Jan 11 2009, 18:07
- - Александр Куличок   Проверьте на всякий случай, все ли ножки питания/м...   Jan 11 2009, 18:11
- - Oleg_DI   Первый старт Я думаю что он его не формирует, пров...   Jan 11 2009, 18:25
- - Александр Куличок   А что находится в TWSR при этом? P.S. Частая ошиб...   Jan 11 2009, 18:36
- - Oleg_DI   находится в TWSR=0 TWСR=0x94 ...   Jan 11 2009, 19:09
- - Oleg_DI   при первом проходе сразу после инициализации twi   Jan 11 2009, 20:13
- - Александр Куличок   Цитатапри первом проходе сразу после инициализации...   Jan 11 2009, 20:59
- - Oleg_DI   Разобрался по умолчанию в меге 128 стоит запрет вн...   Jan 12 2009, 04:19
- - kanzler   Цитата(Oleg_DI @ Jan 12 2009, 09:19) Разо...   Jan 12 2009, 05:26
- - korobov_michael   Цитата(Oleg_DI @ Jan 12 2009, 06:19) по у...   Jan 12 2009, 06:37
- - kanzler   Цитата(korobov_michael @ Jan 12 2009, 11...   Jan 12 2009, 07:11


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016