ATMEGA16 почти не работает нога пина

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

собрал пару цапов на 2-х портах. на одном порте нормально всё на другом одна нога не генерит импульсы. точнее при включении пару секунд может работать а потом в ноль уходит. 26 ножка. микросхема новая, несколько недель собирал и тестил схему на другой микросхеме(всё генерит без вопросов), потом решил проверить свежекупленую и опля! такое вообще часто бывает?
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: ATMEGA16 почти не работает нога пина

Сообщение alex_ »

Случайно не С порт?
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

да. галочка jtagen в фусебитах снята.только PC4 шалит
Последний раз редактировалось novarobotix Пн дек 15, 2014 21:25:56, всего редактировалось 1 раз.
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: ATMEGA16 почти не работает нога пина

Сообщение alex_ »

Старая тема, сам не раз попадал на неё, бывало раз по 10 в гневе мегу перепрошивал с вопросом какого тебе ещё надо. А всё банально просто и очень часто забывается, по дефолту на порту С включен JTAG поэтому порт и не работает как надо, лечится изменением фьюза JTAGEN :wink:
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

я написал постом выше что jtagen в фусебитах снята
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: ATMEGA16 почти не работает нога пина

Сообщение alex_ »

Тогда наверно одно из трёх: либо порт поджарил, или коротец на что нибуть или этот пин настроен на вход DDRС4=0 (было у меня и такое). Если микросхема новая то поджарить наверно не успел.
Последний раз редактировалось alex_ Пн дек 15, 2014 21:34:29, всего редактировалось 1 раз.
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

поджарка исключена - вытащил из панельки рабочую микросхему вставил новую, прошил той же прошивкой. схема та же.коротец также исключён - при возврате обратно старой микросхемы всё работает как часы. DDRС4=0 исключено - прошивка та же что и на старой микросхеме.
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: ATMEGA16 почти не работает нога пина

Сообщение alex_ »

А если как вариант написать простенькую программу которая бы нагой дёргала с постоянной частотой, что то вроде "помигать светодиодом" именно на порт С4, посмотрим что измениться, ну или может кто нибуть ещё что нибуть стоящее предложит?
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

ну в принципе оно примерно так сейчас. на порт выводится возрастающее-убывающее число в цикле, периодически на ноге то 0 то 1. сейчас оно нагружено резисторами цапа - до земли пару килоом. отпаивать весь цап неохота - он рабочий и нога вцентре, нет места всунуться жалу паяльника. повесить дополнительно светодиод можно, и написать прогу которая дёргает только эту ногу, а смысл?если даже меньшую нагрузку не тянет.
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: ATMEGA16 почти не работает нога пина

Сообщение alex_ »

Постоянно дёргает ногой или только 2 секунды? Не тянет говоришь максимальная нагрузка на пин порта 40 мА а это 100 омный резистор повесить можно. Очень похоже на то что прошивки отличаются, как будто во второй с которой ты сейчас возишься первые 2 секунды пин настроен на выход а потом на вход, при этом при команде PORTC4=1 включается просто внутренний подтягивающий резистор, который 2 КОм'а явно не перетянет.
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

постоянно дёргает. рисует треугольник. прошивки не отличаются. тот же хекс заливал, да и не менял в последнее время ничего. пины не перестраиваются в программе, тупо тестово выводится треугольник на 2 порта через цап.оно не именно 2 секунды работает, а как захочет. малейший тык осциллографом или другое телодвижение - в ноль уходит. то есть первый раз тыкнул осцилом в ногу показывает что там импульсы, второй раз тыкнул - досвидание. питание передёрнул - может опят заработает а может нет. в другие ноги можно тыкать осциллографом и ничего с ними не случается.

вот код
Спойлер

Код: Выделить всё

void inc(int v) {
 
//PORTD=0;                                         
for (i=1; i < r; i++)    {     //плавно увеличиваем
   //PORTD++;
   PORTA=data_dac[i];
   PORTC=data_dac[i];
   my_us_delay(v);
   }

}

void dec(int v) {
//PORTD=255;   
for (i=1; i < r; i++)    {   //плавно уменьшаем
PORTA=data_dac[r-i];
PORTC=data_dac[r-i];
 //PORTD--;
   my_us_delay(v);
   }
}

это весь код
Спойлер

Код: Выделить всё

#include <io.h>    // Хотим использовать порты ввода/вывода
#include <delay.h>  // Хотим использовать функции задержек
#include <math.h>
#include <string.h>
#include <stdlib.h>


#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// USART Receiver buffer
#define RX_BUFFER_SIZE 32
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
char uart_data[5];


 

 
int data_num,num,i,j,v,SleepTime,calibr,r=218,r_ind,r_ind2,r_temp,dac,r_temp1,temp_calibr,gosub_table;
unsigned char data_dac[254] ;
//int foo __attribute__ ((section (".noinit")));
eeprom int r_eprom;
//eeprom unsigned char data1[255] ;
eeprom  unsigned char data2[254] ;
//EEMEM = 0x00



// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};

if(num==2) {num=0;data_dac[data_num]=data;PORTB.3=0;}
//data2[data_num]=data;
if(num==1) {num=2;data_num=data;}
if(data==255) {num=1;PORTB.3=1;}


     
         
};

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif






void table(int v) {
   //mig(6);
   //data[0]=1;
  // data[1]=5;
  // data[2]=3;
  // data[3]=4;
  // data[4]=6;
  // data[5]=8;
   
    for (i=0; i < 256; i++)    {   
   data_dac[i]=data2[i];
   } 
   r=r_eprom;

}

void my_us_delay(int n) {
  while(n--) {
    //delay_us(1);
    PORTB.0=PINA.6;
    if (PINB.1==0) {temp_calibr=1;gosub_table=gosub_table+1;PORTB.3=1; }
       if (PINB.1==1 & temp_calibr==1 ) {calibr=1;PORTB.3=1;temp_calibr=0;gosub_table=0; }
   // if (PINB.1==1 && gosub_table < 10000 && temp_calibr==1 && gosub_table >1000 ) {calibr=1;PORTB.3=1;temp_calibr=0;gosub_table=0; }
    //if (PINB.1==1 && gosub_table > 10000 && temp_calibr==1) {temp_calibr=0;PORTB.3=0;

    //gosub_table=0;table(1); }
   
    if (PINA.6==0 & r_ind==0) {r_temp=r_temp+1;r_ind=1;}  // считаем риски
    if (PINA.6==1 & r_ind==1) {r_temp=r_temp+1;r_ind=0;} 
   
     if (PINA.5==0 & r_ind2==0) {r_temp=r_temp+1;r_ind2=1;}  // считаем риски
    if (PINA.5==1 & r_ind2==1) {r_temp=r_temp+1;r_ind2=0;}
  }
}

void mig(int v) {
                                       
for (i=0; i < v; i++)    {     //моргаем
PORTB.3=0;my_us_delay(1000000);PORTB.3=1;my_us_delay(1000000);
   }
}



void inc(int v) {
 
//PORTD=0;                                         
for (i=1; i < r; i++)    {     //плавно увеличиваем
   //PORTD++;
   PORTA=data_dac[i];
   PORTC=data_dac[i];
   my_us_delay(v);
   }

}

void dec(int v) {
//PORTD=255;   
for (i=1; i < r; i++)    {   //плавно уменьшаем
PORTA=data_dac[r-i];
PORTC=data_dac[r-i];
 //PORTD--;
   my_us_delay(v);
   }
}


 //PORTA.2=1;  // 1
   // PORTD.7=0;  // 2
   // PORTC.6=0;  // 3 
   
  void calibration(int v) {
 
PORTD=0;
//r=0;


                                         
dec(v);       
r_temp=0;
 mig(3);
inc(v); //считаем риски
r_temp1=r_temp;
mig(r_temp/20);
dec(v);
   

   r=r_temp1;
   //data[253]=r;
   //data[254]=0;
   
   
 // my_us_delay(1000000); 
 // 
 
 r_temp=0;
 dac=0;
 mig(4);
 
 
 
//    for (i=0; i < 255; i++)    {   
 //  data[i]=0;
 //  }
 
 
 for (i=0; i < r; i++)    { // калибруем
 

   while(r_temp<i && dac<255){
   dac++;
   PORTD=dac;
   my_us_delay(v);
    }
   

   
   data2[i]=dac;
   my_us_delay(v);
  //data[i]=0;
 // data[2]=8;
 //  if (i<5) {data[i]=254;}; 

 }
 //r_eprom=255;
 mig(5);

table(1);
 

}




void main()

{
  // Регистр DDRB отвечает за направление
  // линий порта. Если какой либо бит равен
  // лог. 1, соответствующая линия порта
  // используется для вывода данных. Иначе для ввода.
  // Мы указываем, что собираемся использовать
  // линию 0 для вывода данных (устанавливаем бит 0
  // в лог. 1).
  //DDRB = 0x01;
 // PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);
  //PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
  DDRA=(1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2) | (1<<DDA1) | (1<<DDA0);

  DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (1<<DDB3) | (0<<DDB2) | (0<<DDB1) | (1<<DDB0);
 
//PORTD=(1<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
//выход на транзисторы


DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);

DDRD=(1<<DDD7) | (1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);


// USART initialization

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x07;

// Global enable interrupts
#asm("sei")




/**
   for (i=0; i < 180; i++)    {
   //PORTD++;
  // PORTD=i;
  PORTD= 255*sin(i* (3.14/180));
   my_us_delay(1);
   }


*/
v=1; //скорость нарастания
SleepTime = 1;
  PORTD=0;
   PORTA.2=0;  // 1
    PORTC.0=0;  // 2
    PORTC.7=0;  // 3 
   
  //  PORTC.4=1;  //выбор обмотки для увеличения
  //  PORTC.3=0;  //   
   
   // inc(v);       //плавно увеличиваем
   
     ////////////////////////////
    PORTA.2=1;  // 1   //фиксируем первую обмотку
    PORTC.0=0;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
    PORTC.4=0;  // 1
    PORTC.3=0;  // 2   // отключаем цап
   /////////////////////////////
       
 
   my_us_delay(SleepTime);
    PORTD=0; //ЦАП в 0
  ////////////////////////////
    PORTC.4=0;  // подключаем цап к 2-й обмотке для увеличения
    PORTC.3=1;  //
   /////////////////////////////
   
   for (i=1; i < 246; i++)    {   
   //data[i]=abs(sinh(i/171)*256); 
   //data[i]=abs(exp(i));
   data_dac[i]=i;
   }
     
//    for (i=0; i < 256; i++)    {   
//   data2[i]=i;
//   }
 //r_eprom=254;
// table(1);
 
    while (1)
  {
 

   inc(v);       //плавно увеличиваем
   
   if (calibr==1) {mig(2);calibration(v);calibr=0;}
  //if (calibr==1) { data2[254]=6;mig(1);};
   dec(v);
   //calibration(v);
   }
   
/**
  while (1)
  {
 
  ////////////////////////////
    PORTA.2=1;  // 1   //фиксируем первую обмотку
    PORTC.0=0;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
    PORTC.4=0;  // 1
    PORTC.3=0;  // 2   // отключаем цап
   /////////////////////////////
       
 
   my_us_delay(SleepTime);
    PORTD=0; //ЦАП в 0
  ////////////////////////////
    PORTC.4=0;  // подключаем цап к 2-й обмотке для увеличения
    PORTC.3=1;  //
   /////////////////////////////
   inc(v);       //плавно увеличиваем
   ////////////////////////////
   
   ////////////////////////////
    PORTA.2=1;  // 1   //фиксируем между 1 и 2-й обмоткой
    PORTC.0=1;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
   PORTD=0; //ЦАП в 0
   
   PORTD=255; //ЦАП в 1
   
   ////////////////////////////
    PORTA.2=1;  // 1   //фиксируем первую обмотку
    PORTC.0=0;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
   
   
   
   

   dec(v);       //плавно уменьшаем
   }
   */

/**
while (1)
  {
 
  ////////////////////////////
    PORTA.2=1;  // 1   //фиксируем первую обмотку
    PORTC.0=0;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
    PORTC.4=0;  // 1
    PORTC.3=0;  // 2   // отключаем цап
   /////////////////////////////
       
 
   my_us_delay(SleepTime);
    PORTD=0; //ЦАП в 0
  ////////////////////////////
    PORTC.4=0;  // подключаем цап к 2-й обмотке для увеличения
    PORTC.3=1;  //
   /////////////////////////////
   inc(v);       //плавно увеличиваем
   ////////////////////////////
    PORTA.2=1;  // 1   //фиксируем между 1 и 2-й обмоткой
    PORTC.0=1;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
    /////////////////////////////
    PORTC.4=0;  // 1
    PORTC.3=0;  // 2   // отключаем цап
   /////////////////////////////
  // my_us_delay(99999999);
     
   
    ////////////////////////////
    PORTC.4=1;  // 1
    PORTC.3=0;  // 2   // подключаем цап к 1-й обмотке для уменьшения
   /////////////////////////////
    PORTD=255; //ЦАП в 1
    PORTA.2=0;  // 1   //убираем первую обмотку
    dec(v);       //плавно уменьшаем
   ////////////////////////////
    PORTA.2=0;  // 1   //фиксируем 2-ю обмотку
    PORTC.0=1;  // 2
    PORTC.7=0;  // 3
   ///////////////////////////// 
    /////////////////////////////
    PORTC.3=0;  // 1
    PORTC.4=0;  // 2   // отключаем цап
   /////////////////////////////
   my_us_delay(SleepTime);
   
   ////////////////////////////
    PORTC.4=1;  // подключаем цап к 3-й обмотке для увеличения
    PORTC.3=1;  //
   /////////////////////////////
   inc(v);       //плавно увеличиваем
   ////////////////////////////
    PORTA.2=0;  // 1   //фиксируем между 2 и 3-й обмоткой
    PORTC.0=1;  // 2
    PORTC.7=1;  // 3
   /////////////////////////////
    /////////////////////////////
    PORTC.3=0;  // 1
    PORTC.4=0;  // 2   // отключаем цап
   /////////////////////////////
   my_us_delay(SleepTime);
   
   
   
      ////////////////////////////
    PORTC.4=0;  // 1
    PORTC.3=1;  // 2   // подключаем цап к 2-й обмотке для уменьшения
   /////////////////////////////
   PORTD=255; //ЦАП в 1
   PORTC.0=0;   //убираем 2-ю обмотку
   dec(v);       //плавно уменьшаем
   ////////////////////////////
    PORTA.2=0;  // 1   //фиксируем 3-ю обмотку
    PORTC.0=0;  // 2
    PORTC.7=1;  // 3
   /////////////////////////////
    /////////////////////////////
    PORTC.4=0;  // 1
    PORTC.3=0;  // 2   // отключаем цап
   /////////////////////////////
   my_us_delay(SleepTime);
   
   
   
   ////////////////////////////
    PORTC.4=1;  // подключаем цап к 1-й обмотке для увеличения
    PORTC.3=0;  //
   /////////////////////////////
   inc(v);       //плавно увеличиваем
   ////////////////////////////
    PORTA.2=1;  // 1   //фиксируем между 3 и 1-й обмоткой
    PORTC.0=0;  // 2
    PORTC.7=1;  // 3
   ///////////////////////////// 
    /////////////////////////////
    PORTC.4=0;  // 1
    PORTC.3=0;  // 2   // отключаем цап
   /////////////////////////////
   my_us_delay(SleepTime);
   
         ////////////////////////////
    PORTC.4=1;  // 1
    PORTC.3=1;  // 2   // подключаем цап к 3-й обмотке для уменьшения
   /////////////////////////////
   PORTD=255; //ЦАП в 1 
   PORTC.7=0;   //убираем 3-ю обмотку
   dec(v);       //плавно уменьшаем

   
   
   



 

 } 
 */
 /** *****************************++++++++++++++++++++++++++************************************

  for (;;)
  {

       int SleepTime = 90000;

 
    PORTB.0=1;
    ////////////////////////////
    PORTA.2=1;  // 1
    PORTC.0=0;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
   my_us_delay(SleepTime); 
   
//inc(2);       //плавно увеличиваем

    ////////////////////////////
    PORTA.2=1;  // 1
    PORTC.0=1;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
   my_us_delay(SleepTime); 
//dec(1,SleepTime);     //плавно уменьшаем 

    ////////////////////////////
    PORTA.2=0;  // 1
    PORTC.0=1;  // 2
    PORTC.7=0;  // 3
   /////////////////////////////
   my_us_delay(SleepTime); 
//inc(1,SleepTime);       //плавно увеличиваем
 

   
    ////////////////////////////
    PORTA.2=0;  // 1
    PORTC.0=1;  // 2
    PORTC.7=1;  // 3
   /////////////////////////////
   my_us_delay(SleepTime);     
   
       ////////////////////////////
    PORTA.2=0;  // 1
    PORTC.0=0;  // 2
    PORTC.7=1;  // 3
   /////////////////////////////
   my_us_delay(SleepTime);
   
    ////////////////////////////
    PORTA.2=1;  // 1
    PORTC.0=0;  // 2
    PORTC.7=1;  // 3
   /////////////////////////////
   my_us_delay(SleepTime);
     
 //dec(2,SleepTime);     //плавно уменьшаем


    PORTB.0=0;
  }
   
 */
}
Последний раз редактировалось novarobotix Пн дек 15, 2014 22:23:50, всего редактировалось 1 раз.
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: ATMEGA16 почти не работает нога пина

Сообщение alex_ »

Эх в спойлер надо было код засунуть, кстати если не работает значит точно где то есть косяк, а может ЦАП пошаливает?, код завтра поизучаю )
Да што ты, опять я опоздал с умной мыслью
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

alex_ писал(а):кстати если не работает значит точно где то есть косяк, а может ЦАП пошаливает?
на другой микросхеме всё работает как часы. я 3 недели издевался паял перепаивал замыкал, ставил резисторы 150 ом на выход на землю, и нормально. так что если код с другой микросхемой работает нормально то дело наверняка не в коде. может просто брак? как вообще такие микросхемы проверяют на заводе? под нагрузкой порты проверяют? такое ощущение что проверили символически без нагрузки.
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: ATMEGA16 почти не работает нога пина

Сообщение alex_ »

Возможно и не в коде, как говориться дело было не в бабине, а именно зачастую эта мелкая возможно оплошность а может и брак, находиться на самом виду, но замечаешь её в самый последний момент, после того как изрядно вспотел мозг. :sleep:
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

alex_ писал(а):зачастую эта мелкая возможно оплошность а может и брак, находиться на самом виду, но замечаешь её в самый последний момент, после того как изрядно вспотел мозг. :sleep:
да, бывает такое частенько, вот на jtagen не обратил внимание, хотя был выключен - снял галки, правда не сразу, один раз запустил с фъюзами по умолчанию, заметил что частота не та и полез снимать все галочки. тестером всё излазил никаких замыканий нигде нет.меняеш микросхему на старую - всё работает. 2 раза туда сюда дёргал чтобы убедиться.
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: ATMEGA16 почти не работает нога пина

Сообщение alex_ »

Значит дело однозначно не в ЦАПе, а если считать прошику со старого и зашить в новый, сделать полную копию включая фьюзы, вдруг чудо произойдёт :dont_know:
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

еслиб он совсем не работал тогда бы имело смысл, а программа то выводит на пин импульсы, уходит в ноль после попыток хоть как-то нагрузить пин.
потыкаю потом, сейчас пока есть рабочая микросхема и занятите поинтереснее чем общение с бракованной микросхемкой. ещё важный момент - маркировка бракованной микросхемки выполнена краской, а рабочей лазерной гравировкой.может партии разные типа белые серые и т п.
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: ATMEGA16 почти не работает нога пина

Сообщение Goodefine »

novarobotix писал(а):галочка jtagen в фусебитах снята.

Попробуйте поставить. Фьюзы как раз нулем и программируются
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
novarobotix
Опытный кот
Сообщения: 759
Зарегистрирован: Пн май 12, 2014 06:13:33

Re: ATMEGA16 почти не работает нога пина

Сообщение novarobotix »

Goodefine писал(а):
novarobotix писал(а):галочка jtagen в фусебитах снята.

Попробуйте поставить. Фьюзы как раз нулем и программируются

вообще надо не пробовать а точно знать. программирую в понипрог. или микроконтроллеры изучаются методом тыка?
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: ATMEGA16 почти не работает нога пина

Сообщение eess9 »

Goodefine писал(а):Попробуйте поставить. Фьюзы как раз нулем и программируются

Видимо имеется в виду установить JTAG фьюз. И посмотреть будет ли наблюдаться этот эффект когда пин отдан под jtag.
Ответить

Вернуться в «AVR»