Перейти к содержанию

Deerael

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Kremen

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    Микроконтроллеры, преобразователи и автоматика

Достижения Deerael

Новичок

Новичок (1/14)

  • Год на форуме
  • Неделя на форуме
  • Месяц на форуме

Последние значки

0

Репутация

  1. Всем здрасти! Пытаюсь подружить драйвер дисплея SSD1306 и ATMEGA328p с использованием i2c. По даташиту после каждого байта данных или команды, SSD1306 должен генерировать бит подтверждения, но после отправки первого же пакета с командой ни "Acknowledge" ни "Not Acknowledge" бита не получаю, симуляция будто зависает. Подскажите пожалуйста может я что не так сделал? Может проблема симуляции? Код .include "m328PBdef.inc" .def buff = r16 .def message = r17 .def iter = r18 .equ adressW = 0b01111000 .cseg .org 0x0000 jmp restart .org 0x001A jmp tim1_ovf_isr .org 0x0030 jmp twi_isr restart: ldi buff, high(RAMEND) out SPH, buff ldi buff, low(RAMEND) out SPL, buff ; twi init ldi buff, 0b1100 sts TWBR0, buff ldi buff, 0b0 sts TWSR0, buff ; timer\counter init ldi buff, 0b100 sts TCCR1B, buff ldi buff, 0b1 sts TIMSK1, buff ; global interrupt enable sei ; main routine main: jmp main ; timer 1 - 16bit overflow isr tim1_ovf_isr: ldi buff, 0b10100101 sts TWCR0, buff ldi buff, 0b0 sts TCCR1B, buff ldi buff, 0b0 sts TIMSK1, buff reti ; twi isr twi_isr: lds buff, TWSR0 andi buff, 0b11111000 cpi buff, 0x08 breq twi_start cpi buff, 0x18 breq twi_slaw_ack cpi buff, 0x28 breq twi_data_ack reti ; twi_start: ldi buff, adressW sts TWDR0, buff ldi buff, 0b10000101 sts TWCR0, buff reti ; ; twi_slaw_ack: ldi buff, 0b10000000 sts TWDR0, buff ldi buff, 0b10000101 sts TWCR0, buff reti ; ; twi_data_ack: ldi buff, 0xA5 sts TWDR0, buff ldi buff, 0b10000101 sts TWCR0, buff reti SSD1306-Revision 1.5.pdf
×
×
  • Создать...