Должна ли потерявшая нюх тупая шкура mega8 останавливать работу с портами от SPI.transfer() или это нечто экстраординарное?

std
Offline
Зарегистрирован: 05.01.2012

Доброго времени суток, all.

std в тупике.

const byte digdata[16]={126,12,182,158,204,218,250,14,254,222,238,248,114,188,242,226};
#include <SPI.h>
int x=1;
unsigned long xxx;

void setup(){
  pinMode(9,OUTPUT);
  pinMode(8,OUTPUT);
  digitalWrite(8,1);
  digitalWrite(9,1);
}

void loop(){
  ldmdisp(x);
  x++;
  delay(1000);
  if(millis()-xxx>=1000){
    digitalWrite(8,!digitalRead(8));
    xxx=millis();
  }
}

void ldmdisp(int ldmdata){
  int tmp;                           // temp
  byte digit[3];                     // output
  tmp=ldmdata-(ldmdata%100);
  digit[0]=tmp/100;
  tmp=ldmdata-(ldmdata%10)-(digit[0]*100);
  digit[1]=tmp/10;
  digit[2]=ldmdata-(digit[0]*100)-(digit[1]*10);
  digitalWrite(9,0);
  SPI.transfer(digdata[digit[2]]);
  SPI.transfer(digdata[digit[1]]);
  SPI.transfer(digdata[digit[0]]);
  digitalWrite(9,1);
}

Если закомментировать строку 14, светодиод на D8 будет исправно мигать. Собсно он был на D10, но мало ли, вдруг по #include <SPI.h> какие-то там аппаратные дела, 10й это хардварный SS же.

Если же влить скетч как есть, у меги наступает жосткий halt. Она вообще не делает нихера. Нигде, ни на каком из выводов уровни не изменяются, никак, вообще.

Что представляет собой схема. Это трёхзначный семисегментный экран Kingbright BA56-11, каждая цифра подключена через ULN2003D к сдвиговому регистру 74HC595, вывод переноса первого регистра подключен к SI второго и так далее, то есть чтобы отправить цифру, надо положить защёлку на землю (она на D9, как следует из текста), три раза сделать SPI.transfer() и вернуть на место. В общем, std справедливо считает что принципиальная схема не нужна. Проблема про. Грам. Мна. Я.

бонусная инфа.

Подключен ArduinoISP (D11-D13 и сброс). Предполагая, что он мешает нормальной работе регистров, std его отключал, оставляя только питание. Это ничего не дало.

Алсо, менялись местами 11 и 13 провода, а вдруг перепутаны? Но нет...

std
Offline
Зарегистрирован: 05.01.2012

Сам дурак, забыл SPI.begin()

ща посмотрим...

UPD. да точно.

//а std знатный псих. Мне хотелось себе голову откусить.

James
Offline
Зарегистрирован: 26.02.2016

10 пин еще в 0