attiny13a и max7219
- Войдите на сайт для отправки комментариев
Пт, 03/03/2017 - 18:09
Здравствуйте ! У меня возникло проблем с работа attiny13a и max7219. Я прошиваю мк через arduino mega. Скетч работает отлично в ардуино мега, индикатор показаться нужних цифр. Но в аттинй13 показаться инную значения. В программе есть 3 функци R1, R2, R3. R1 отвечает 1-й разрядов, а R2 и R3 отвечает 2-3-й разряадов. Если я отправляю какой-то значение в одного из них, то индикатор показатья в порядке. Но если я буду вызывать всех функци одновременно, тогда работает не корректно. Пожалуйста помагите мне?
Лишний пробел в строке 13.
Вот моя скетч
#include
const int dataIn =0;
const int clock = 1;
const int load = 2;
int r1[2] = {3, 4};
int r2[2] = {8, 6};
int r3[2] = {2, 7};
//MMMMMMMMMMMMMMMMMMMMM
byte dig_R1[10][2]= {{99, 34},
{34, 0 },
{33, 35},
{35, 33},
{98, 1 },
{67, 33},
{67, 35},
{35, 0 },
{99, 35},
{99, 33}};
//MMMMMMMMMMMMMMMMMMMMMM
byte dig_R2[10][2]= {{82, 17},
{66, 0},
{96, 17},
{98, 16},
{114, 0},
{50, 16},
{50, 17},
{66, 0},
{114, 17},
{114, 16}};
//MMMMMMMMMMMMMMMMMMMMMM
byte dig_R3[2][2] = {{34, 0},
{19, 66}};
//MMMMMMMMMMMMMMMMMMMMMM
const byte maxInUse = 10;
const byte max7219_reg_noop = 0x00;
const byte max7219_reg_decodeMode = 0x09;
const byte max7219_reg_intensity = 0x0c;
const byte max7219_reg_scanLimit = 0x00;
const byte max7219_reg_shutdown = 0x0c;
const byte max7219_reg_displayTest = 0x0f;
const int lim = 99;
const int lim2 = 9;
void setup ()
{
// Serial.begin(9600);
pinMode(dataIn, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(load, OUTPUT);
//////////////////////////////////
maxAll(0x0b, 0x07);
maxAll(0x09, 0x00);
maxAll(0x0c, 0x01);
maxAll(0x0f, 0x00);
for (byte e=1; e<=8; e++)
{
maxAll(e,0);
}
maxAll(0x0a, 0x0f & 0x0f);
// maxAll(3, 99);
raqam(7);
//raqam2(&e);
}
void loop (){
}
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
void putByte(byte data) {
byte z = 8;
byte mask;
while(z > 0) {
mask = 0x01 << (z - 1);
digitalWrite( clock, LOW);
if (data & mask){
digitalWrite(dataIn, HIGH);
}else{
digitalWrite(dataIn, LOW);
}
digitalWrite(clock, HIGH);
--z;
}
}
void maxAll (byte reg, byte col) {
int c = 0;
digitalWrite(load, LOW); // begin
for ( c =1; c<= 2; c++) {
putByte(reg); // specify register
putByte(col);//((data & 0x01) * 256) + data >> 1);
}
digitalWrite(load, LOW);
digitalWrite(load,HIGH);
}
//WWWWWWWWWWWWWWWWWWWW
void R1(int birlik)
{
for(int mc = 0; mc < 2; mc++)
{
maxAll(r1[mc], dig_R1[birlik][mc]);
}
}
//WWWWWWWWWWWWWWWWWWWW
void R2(int nlik)
{
for(int ms = 0; ms < 2; ms++)
{
maxAll(r2[ms], dig_R2[nlik][ms]);
}
if(nlik != 1 && nlik != 4)
{
maxAll(5, 64);
}
}
//WWWWWWWWWWWWWWWWWWWW
void R3(int yuzlik)
{
for(int ma = 0; ma < 2; ma++)
{
maxAll(r3[ma], dig_R3[(yuzlik - 1)][ma]);
}
}
//WWWWWWWWWWWWWWWWWWWW
я же говорю
Лишний пробел в строке 13.
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Нет лишний бробел в строке 13
нет строки №13
Есть строки №13. но там нет лишний пробел. Я уже стирал их
моя не видит строку с номером 13.
#include <math.h> const int dataIn=0; const int clock=1; const int load=2; int r1[2]={3,4}; int r2[2]={8,6}; int r3[2]={2,7}; //------------------------------------------------------------ byte dig_R1[10][2]={{99,34},{34,0},{33,35},{35,33},{98,1},{67,33},{67,35},{35,0},{99,35},{99,33}}; byte dig_R2[10][2]={{82,17},{66,0},{96,17},{98,16},{114,0},{50,16},{50,17},{66,0},{114,17},{114,16}}; byte dig_R3[2][2]={{34,0},{19,66}}; //------------------------------------------------------------ const byte maxInUse=10;// <- Вот страка №13 const byte max7219_reg_noop=0x00; const byte max7219_reg_decodeMode=0x09; const byte max7219_reg_intensity=0x0c; const byte max7219_reg_scanLimit=0x00; const byte max7219_reg_shutdown=0x0c; const byte max7219_reg_displayTest=0x0f; const int lim=99; const int lim2=9; //------------------------------------------------------------ void setup () { pinMode(dataIn, OUTPUT); pinMode(clock, OUTPUT); pinMode(load, OUTPUT); ///////////////////////////initiation of the max 7219 maxAll(0x0b, 0x07); maxAll(0x09, 0x00); maxAll(0x0c, 0x01); maxAll(0x0f, 0x00); for (byte e=1; e<=8; e++) { maxAll(e,0); } maxAll(0x0a, 0x0f & 0x0f); } //-------------------------------------- void loop (){ } //EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE void putByte(byte data) { byte z = 8; byte mask; while(z > 0) { mask = 0x01 << (z - 1); digitalWrite( clock, LOW); if (data & mask){ digitalWrite(dataIn, HIGH); }else{ digitalWrite(dataIn, LOW); } digitalWrite(clock, HIGH); --z; } } void maxAll (byte reg, byte col) { int c = 0; digitalWrite(load, LOW); for ( c =1; c<= 2; c++) { putByte(reg); putByte(col); //((data & 0x01) * 256) + data >> 1); } digitalWrite(load, LOW); digitalWrite(load,HIGH); } //EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE void digits(int digit) { int q; if(digit > lim) { q = (digit - (digit % 100)) / 100; R3(q); q = (((digit % 100) - (digit % 100) % 10)) / 10; R2(q); q = (digit % 100) % 10; R1(q); } else if( digit > lim2) { q = (digit - (digit % 10)) / 10; R2(q); q = digit % 10; R1(q); } else { R1(digit); } } //WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW void R1(int birlik) { for(int mc = 0; mc < 2; mc++) { maxAll(r1[mc], dig_R1[birlik][mc]); } } //WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW void R2(int nlik) { for(int ms = 0; ms < 2; ms++) { maxAll(r2[ms], dig_R2[nlik][ms]); } if(nlik != 1 && nlik != 4) { maxAll(5, 64); } } //WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW void R3(int yuzlik) { for(int ma = 0; ma < 2; ma++) { maxAll(r3[ma], dig_R3[(yuzlik - 1)][ma]); } } //WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWсм. библиотеку LedControl.