Показать сообщение отдельно
Старый 31.12.2018, 13:41   #22
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Ок. Давай сначала.
Что из электронной схемы ты уже выкинул.
Избавимся от лишнего кода сначала.

Убери из кода который ты выше представил execCmd везде.
И если работает убери и саму функцию.

Убери это:
ISR(INT0_vect)
{
//interr = register_get( INTSTATUS);
//if( interr & ( 1 << ROKR) && interr & ( 1 << RNOKR))
//register_set( INTRESET, 0x83);
//inter |= ( 1 << 1) | (1 << 0);
//register_set( INTRESET, 0x00);
};

и это:
// Enable ATMega Interrupts on INT0
EICRA |= (1 << ISC01); // The falling edge of INT0 generates an interrupt request
EIMSK |= (1 << INT0); // Enable INT0
После этого обязательно проверь работу кода!

В коде поменяй строку на
DDRB |= (1 << DDB3) | (1 << DDB5) | (1 << DDB2)

Если работает, то поедем дальше.

Убираем из кода который ты переделывал уже, там где отсылка в КОМ порт все строки начинающиеся с execCmd.
Проверяем работает ли, если да, то убираем и функцию:
void execCmd( const byte cmd)
{
PORTB &= ~( 1 << PINB1);
spi_transfer( 0x11);
spi_transfer( cmd);
PORTB |= ( 1 << PINB1);
_delay_ms( CMD_WAIT_MS);
PORTB &= ~( 1 << PINB1);
spi_transfer( 0x11);
spi_transfer( nocmd);
PORTB |= ( 1 << PINB1);
};

и сверху void execCmd( const byte cmd);

Затем эту же строку меняем на
DDRB |= (1 << DDB3) | (1 << DDB5) | (1 << DDB6)
И во всём коде заменяем PINB2 на PINB6
И перепаиваем вывод PB2 на PB6
После проделанного пиши получилось или нет.
И если нет, то на каком шаге?

Потом спортируем на другой контроллер.
Забегая вперёд.
Для портации строка
DDRB |= (1 << DDB3) | (1 << DDB5) | (1 << DDB6)
поменяется на
DDRB |= (1 << DDB2) | (1 << DDB1) | (1 << DDB6) | (0 << DDB3) (вот это может и не надо | (0 << DDB3), но логичнее включить на вход порт, хотя он и так в 0... попробуй сначала без)
(Вот поэтому у тебя на 32U4 не заводился SPI скорее всего).

выводы SPI физически тоже поменяются, расположение PB6 поменяется физически, но уже программно останется как есть.

Последний раз редактировалось T_r_D; 31.12.2018 в 14:28.
T_r_D вне форума   Ответить с цитированием