свистит ардуинка

CEBKACooler
Offline
Зарегистрирован: 14.01.2014

Народ, подскажите, почему может свистеть ардуинка 2560 и постоянно сбрасываться? Сразу скажу, что не в ножке ресет дело

AS
Offline
Зарегистрирован: 12.03.2014

Вопрос более для телепата. Что значит "свистит", какой своей частью? Что значит "сбрасывается", как вы это определили, какие симптомы?

CEBKACooler
Offline
Зарегистрирован: 14.01.2014

Свист непонятно откуда, у меня есть такое ощущение либо от кондера, либо от кварца, но вобще хрен знает.

В лупе прописан код, что в начальный момент запуска все порты контроллера становятся в состояние "1", и через 0.1сек опять возращается в "0", другими словами быстро мигнул. Не проходит и секунды все повторяется. Потом через пол часа включаю - все норм, ниче не глючит. То есть эта проблема возникает и пропадает рандомно. У меня 5 шт одинаковых ардуинок 2560, на них то же самое происходит.

AS
Offline
Зарегистрирован: 12.03.2014

Давайте внимательно поглядим код, для начала.

Частота у mega 16 Mhz согласно http://arduino.cc/en/Main/arduinoBoardMega2560#.Uymbl_l_t1Y вроде не может человек столько слышать.

Свистит обычно электролитический конденсатор находящийся на грани взрыва, читай кипит электролит. Если свистит действительно кондёр, то его температура должна быть повышена, пробуйте аккуратное пошатывание ёмкости, у проблемного корпус относительно ножек будет болтаться. Свистеть может и абсолютно сухая ёмкость, с частичной потерей ёмкости. При надавливании на проблемный элемент тон должен измениться. Еще свистеть может дроссель. Имхо, надо надавливать спичкой на все подряд внимательно слушая изменения тона, а лучше это делать иглой стетоскопа.

Вся партия бракованная? Редко. Может прошили чем-то специфическим?

CEBKACooler
Offline
Зарегистрирован: 14.01.2014
#include <Arduino.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <util/delay.h>

#define PC 8100UL
#define DO_EVERY_V(varname,interval,action) \
static unsigned long __lastDoTime_##varname = 0; \
if( (millis()-__lastDoTime_##varname>interval )){ \
  {action;}\
  __lastDoTime_##varname=millis();\
}\
 
#define DO_EVERY_V_1(varname,interval,action)  DO_EVERY_V(varname,interval,action) 
#define DO_EVERY(interval,action) DO_EVERY_V_1(__LINE__,interval,action)
 
 

int RECV_PIN = 10;
int R_PIN = 6;
int G_PIN = 5;
int B_PIN = 7;
unsigned char i;
int a;
int ff = 0;
int val;
int r;

 
unsigned long rgb = 0;
//byte r,g,b;
 
IRrecv irrecv(RECV_PIN);
 
decode_results results;
 
 
void setup()
{
  unsigned char i;
 attachInterrupt(0, blink, CHANGE);
   DDRF=0xFF;
   DDRL=0xFF;
   DDRC=0xFF;
   DDRK=0xFF;
   DDRA=0xFF;
  irrecv.enableIRIn(); // Inicializamos el receptor
  Serial.begin(9600);
  pinMode(R_PIN, OUTPUT);   
  pinMode(G_PIN, OUTPUT);   
  pinMode(B_PIN, OUTPUT); 
  pinMode(12, OUTPUT); 
  pinMode(11, OUTPUT); 
  pinMode(4, OUTPUT);
}
 
 void sini() {

   //  digitalWrite(4, LOW); 
      PORTL=0xAA;
      PORTC=0xAA;
      PORTK=0xAA;
      PORTA=0x55;
    }
    
     void sinii() {

    digitalWrite(4, LOW); 
      PORTL=0xAA;
      PORTC=0xAA;
      PORTK=0xAA;
      PORTA=0x55;
    }
      
 void kras() {
      digitalWrite(4, LOW); 
      PORTL=0x55;
      PORTC=0x55;
      PORTK=0x55;
      PORTA=0xAA;
  }
   void off() {
    unsigned char i;
      digitalWrite(4, HIGH); 
      PORTL=0x00;
      PORTC=0x00;
      PORTK=0x00;
      PORTA=0x00;
  }
void (* resetFunc) (void) = 0; // Reset MC function

void blink()
{
asm volatile ("jmp 0x0000");
resetFunc();
}


void loop() 
{
      PORTL=0x00;
      PORTC=0x00;
      PORTK=0x00;
      PORTA=0x00;
  if(ff==0)
  {
    {
      PORTL=0x55;
      PORTC=0x55;
      PORTK=0x55;
      PORTA=0xAA;
      delay(100);
     digitalWrite(4, LOW);
  }
{
      PORTL=0x00;
      PORTC=0x00;
      PORTK=0x00;
      PORTA=0x00;
    i=90; while(--i) delay(100);      //9.0
    analogWrite(4, val);
    val=250;
}

""""""МНОГО МНОГО КОДА с delay задержками"""""""""""""""

ff=1;
}}

 

AS
Offline
Зарегистрирован: 12.03.2014

Мда... такой код я, пока, не осилю.... единственный совет - заняться отладкой. Т.е. закаментировать часть кода - поглядеть как работает... все платки не могут глючить одинаково. debug.

CEBKACooler
Offline
Зарегистрирован: 14.01.2014

Я на половину почистил, что то укомпоновал. Пока работает норм в статичном состояние. Это состояние когда он просто лежит. А вобще он находится на человеке. Есть еще 2 догадки по сбою - это статическое электричество человека и испарения пота, что приводит к КЗ.

AS
Offline
Зарегистрирован: 12.03.2014

Я так понимаю Q-zar?

CEBKACooler
Offline
Зарегистрирован: 14.01.2014

Нет, КЗ - это короткое замыкание)

AS
Offline
Зарегистрирован: 12.03.2014

Я имел ввиду игру. Просто не представляю, зачем еще нужен детектор инфракрасного излучения на человеке.