набросал из flowchart'а мануаловского. запустить на передачу. иду по шагам в ADS AXD
Код
SAM256_TWI->THR = 0; // *
SAM256_TWI->CR = 1; // START
на операторе '*' по TWI начинается постоянно идти данные (вообше постоянно!)
ладно, переделал по другому:
Код
SAM256_TWI->CR = 1; // START
SAM256_TWI->THR = 0;
что-то выплюнула.
идем далее,
Код
SAM256_TWI->THR = 0;
do { sr = SAM256_TWI->SR;
} while((sr & 4) == 0);
SAM256_TWI->THR = 1;
do { sr = SAM256_TWI->SR;
} while((sr & 4) == 0);
SAM256_TWI->THR = 2;
do { sr = SAM256_TWI->SR;
} while((sr & 4) == 0);
выплевывает, НО! каждый раз одно и тоже
и причем ни 0 и ни 1 и ни 2 в независимости от того что пишу в SAM256_TWI->THR.
нашел какой то пример, в нем так:
Код
SAM256_TWI->CR = 1; // START
do { sr = SAM256_TWI->SR;
} while((sr & 4) == 0);
SAM256_TWI->THR = 0;
SAM256_TWI->CR = 1; // START
do { sr = SAM256_TWI->SR;
} while((sr & 4) == 0);
SAM256_TWI->THR = 1;
SAM256_TWI->CR = 1; // START
do { sr = SAM256_TWI->SR;
} while((sr & 4) == 0);
SAM256_TWI->THR = 2;
один фиг, все равно выплевывает мусор и причем один и тот же.
Кстати еще интересно:
в отладчике SAM256_TWI->SR равен 0x0000010D
во первых откуда бит 3 в '1' и потом TXCOMP выставляется в 1 хотя STOP не посылал.
Короче не могу я врубится в этот TWI. Сдаюсь!
Помогите рабочим примером для записи хотябы!