Цитата
Вы же данные не тем концом суете.
Вообще-то 2 варианта. Если вдруг Вы правы, тогда у меня бы все читалось наоборот, и в статусе было бы что-то вроде 0x35 вместо 0xAC или 0x37 вместо 0xEC. Но такого нет и рядом, читается 0x00 (либо 0xFF, который я раньше выдавал в линию для старта передачи), а в большинстве "рабочих" экземпляров читается что надо.
Ну а второй вариант - просто посмотрите внимательно на мой дефайн:
Цитата
#define SPI_MODE 0x38
Бит 6 = 0, отсюда
Цитата
When 0, SPI data is transferred MSB (bit 7) first.
что вполне совпадает с требованиями:
Цитата
All instructions, addresses, and data are transferred with the most significant bit (MSB) first.
Цитата
Единственное, у меня IAR строчки вида S0SPSR; просто выкидывает. Хотя это явная ошибка, по стандарту должно быть чтение. Поэтому я делаю { volatile uint8_t tmp = S0SPSR; }. Не смотрели листинг, может то же самое?
У меня не выкидывает. Смотрел по листингу для 2214 - чтение на месте. Для 2138 при компиляции почему-то сообщает, что выражение не имеет эффекта, но по листингу все равно чтение остается.
Сообщение отредактировал Ykidia - Mar 31 2007, 20:59