|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
|
||||||||||||||||
Проблемы с TWI17.05.2012, 06:05. Показов 13551. Ответов 44
Метки нет (Все метки)
Купил я недавно PCA9633, такой себе ШИМ контроллер для светодиодов. Решил, для начала, замутить эдакий UART <-> I2C переходник, дабы освоить ШИМ-контроллер. Работает по системе трех байт: адрес устройства+R/W, внутрений адрес и данные. Первой миной, как оказалось, да оно и неудивительно , стал итерфейс. Писал быстро, получился быдлокод, пардон =) Проблема: не работает И2Ц ! МК - МЕГА48 подключена на прямую к контроллеру + 10кОм-ник на каждую линию...
Инициализация(приведу только И2Ц, так как УАРТ работает на ура): По скоростям долго не заморачивался, написал что называется "пальцем в небо":
Здесь все просто как мычание: по мере поступления байт, курсор передвигается по массиву. Как только придут все три он перескочит в начало и выставить флаг Т. Мэин:
P.S. В терминалке приходит только ">", как я понял прерывание не происходит...
0
|
||||||||||||||||
| 17.05.2012, 06:05 | |
|
Ответы с готовыми решениями:
44
TWI TWI+ds1621 Модуль TWI |
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
||||||
| 17.05.2012, 10:12 | ||||||
|
В прерывании будет не лишним сперва сохранить в стеке SREG и temp, а при выходе восстановить
И надо сперва уложить в TWDR данные, а уж потом команда в TWCR ( сорри, проглядел, так и есть)
0
|
||||||
|
0 / 0 / 0
Регистрация: 21.06.2011
Сообщений: 176
|
||||||
| 17.05.2012, 13:06 | ||||||
|
Ещё в даташитах рекомендуют после старта, отсылки и приёмки ждать, пока не сбросится TWINT:
0
|
||||||
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
||
| 17.05.2012, 14:11 | ||
sbrc R16, TWINT rjmp (PC-2) Это если прерывание не использовать
0
|
||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
|
||
| 17.05.2012, 15:24 | ||
Подскажите оптимальную скорость ?
0
|
||
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
||
| 17.05.2012, 19:49 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
|
|
| 18.05.2012, 02:28 | |
|
В даташите кажись до сотки можно повышать... Забыл сказать: у меня МЕГА от внутренего на 8 Мегов затактирована !
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
||
| 18.05.2012, 09:31 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
|
|
| 19.05.2012, 02:19 | |
|
Что бы ВЫСТАВИТЬ флаг прерывания нужно ж записать единицу ?!
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
||
| 19.05.2012, 10:21 | ||
This bit is set by hardware when the TWI has fymished its current job omd expects appli- cation software response. If the I-bit in SREG omd TWIE in TWCR are set, the MCU will jump to the TWI Ymtirrupt Vistor. While the TWINT Flag is set, the SCL low period is stritshed. The TWINT Flag must be cleared by software by writing a logic one to it.
0
|
||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
|
|
| 20.05.2012, 03:06 | |
|
Почему не генерируется прерывание ? SEI и TWIE включены !
При отключенном ШИМ-контроллере, генерируется прерывание на старт бит, а так же успешное его выполнение. После чего, тишина ! При подключении ШИМ-контроллера, прерывание НЕ ГЕНЕРИРУЮТСЯ ! Помогите, пожалуйста !
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
|||
| 20.05.2012, 09:48 | |||
PS: А какая скорость УАРТа, он вообще за ТВИ поспевает?
0
|
|||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
|
|
| 20.05.2012, 15:26 | |
|
ШИМ-контрллер - отдельное устройство(PCA9633) ! Собственно с ним то я и пытаюсь связаться. У меня так сделано, что при прерывании, отправки бита/адреса, отправляется некоторое значение по УАРТу, а если выдает ошибку, то отправляется значение TWSR. УАРТ работает на стандартной(9600). Прерывания, в принципе, не генерируется. Я, для проверки, использовал коды из этой статьи. То же результат. А кроме скорости, нужно что-то инициализировать ?
0
|
|
|
0 / 0 / 0
Регистрация: 21.06.2011
Сообщений: 176
|
||||||||||||||||
| 20.05.2012, 16:14 | ||||||||||||||||
|
Помогите пожалуйста разобраться с TWI. Уже не знаю где искать ошибку.
Atmega8 1МГц, TWI "железный", подтягивающие резисторы по 4,7кОм. Связь с VS1307 (аналог DS1307). С запозданием передаёт сигнал старта, а биты не передаёт совсем. Ну иногда, бывает, проскакивает 2-3, если поменять TWBR. Читает из TWDR то, что было записано туда ранее. Инициализация
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
|||
| 20.05.2012, 17:52 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
|||||||
| 20.05.2012, 20:34 | |||||||
sbrc R16, TWINT rjmp (PC-2) Боюсь Вы не дождетесь пока TWINT сам сбросится: The TWINT Flag must be cleared by software by writing a logic one to it. Надо ожидать его усстановки в "1" - sbrs R16, TWINT TWINT сбрасывается записью в него "1" :
Вы просто не дожидаетесь пока TWI закончит передачу или формирование START/STOP
0
|
|||||||
|
0 / 0 / 0
Регистрация: 21.06.2011
Сообщений: 176
|
||
| 20.05.2012, 22:16 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
|
| 21.05.2012, 12:07 | |
|
Кстати, атмел за каким то х…. В общем при формировании СТОП TWI не отмеряет интервал (TWINT не при делах). Необходимо после формирования СТОП или перед СТАРТ выдержать паузу длительностью в пол периода SCL. Иначе интервал между посылками может оказаться слишком коротким и слэйв не сообразит что происходит.
0
|
|
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 321
|
||
| 21.05.2012, 16:18 | ||
Пауза разве не аппаратно делается ?
0
|
||
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
||
| 21.05.2012, 18:47 | ||
0
|
||
| 21.05.2012, 18:47 | |
|
Помогаю со студенческими работами здесь
20
SPI v.s. TWI USI as TWI slave Не проходит инициализация TWI CodeVisionAVR функции TWI Atmega8 & TWI/I2C Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|