Должна ли потерявшая нюх тупая шкура mega8 останавливать работу с портами от SPI.transfer() или это нечто экстраординарное?
- Войдите на сайт для отправки комментариев
Доброго времени суток, 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 провода, а вдруг перепутаны? Но нет...
Сам дурак, забыл SPI.begin()
ща посмотрим...
UPD. да точно.
//а std знатный псих. Мне хотелось себе голову откусить.
10 пин еще в 0