Управление от atmega32 предусилителем 5.1

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 34
Зарегистрирован: Вс авг 09, 2009 10:12:30
Откуда: Пермь

Сообщение IIuIIa »

Уважаемые пользователи форума, прошу помощи так как я не очень хорошо разбираюсь в МК и за любую помощь буду благодарен.
Вот собираю предусилитель на pt2323 и pt2322 управление от atmega32, написал код но он слишком большой. Помогите исправить ошибки и недочеты. Проверяю пока в протеусе, жду запчасти для железа.
Спойлер

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

#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>
#define pt2323 0x94
#define pt2322 0x88
#asm
   .equ __i2c_port=0x15 ;PORTC
   .equ __sda_bit=1
   .equ __scl_bit=0
#endasm
#include <i2c.h>


int  buff=0; 
char buffer=1;   
char array[];
char array_vol[16];
int buffer_vol=0;
volatile unsigned char on=0;
unsigned char d=0;
unsigned char mute=0;
unsigned char chastota=0;
char array_bass[15];
int buffer_bass=0;
char array_trable[17];
int buffer_trable=0;

void i2c_init(void);   //инициализация шины
unsigned char i2c_start (void);
unsigned char i2c_write (unsigned char data);
unsigned char i2c_read (unsigned char ack);
void i2c_stop (void);

 interrupt [EXT_INT0] void ext_int0_isr(void)
 {       
        if (on==0) 
        {     
        lcd_clear( );
        lcd_gotoxy( 5,1 );
        lcd_putsf( "Hello" );
        delay_ms(200);
        lcd_clear( ); 
        PORTB.1=1; 
        PORTB.3=1;
        PORTB.5=1;
        i2c_start();
        i2c_write(pt2322);
        i2c_write(0xC7);
        i2c_write(0x9f);
        i2c_write(0xd0); 
        i2c_write(0xbf);
        i2c_stop();  
        on=1;
        chastota=0;
        }        
        else
        {
        delay_ms(50);
        lcd_clear( ); 
        lcd_gotoxy( 5,1 );
        lcd_putsf( "Standby" ); 
        delay_ms(80);
        PORTB.1=0; 
        on=0;   
        delay_ms(50);
        lcd_clear( );
        #asm("sleep") 
        }                       
       
 } 
 
 void main(void)
 {
 PORTA=0x00;
 DDRA=0x00;
 PORTB=0x00;
 DDRB=0xFF;
 PORTD=0xFF;
 DDRD=0x00;
 TCCR0=0x06;
 TCNT0=0x00;
 OCR0=0x00;
 TCCR1A=0x00;
 TCCR1B=0x00;
 TCNT1H=0x00;
 TCNT1L=0x00;
 ICR1H=0x00;
 ICR1L=0x00;
 OCR1AH=0x00;
 OCR1AL=0x00;
 OCR1BH=0x00;
 OCR1BL=0x00;
 ASSR=0x00;
 TCCR2=0x00;
 TCNT2=0x00;
 OCR2=0x00;
 GICR|=0x40;
 MCUCR=0x00;
 MCUCSR=0x00;
 GIFR=0x40;
 TIMSK=0x00;
 UCSRB=0x00;
 ACSR=0x80;
 SFIOR=0x00;
 ADCSRA=0x00;
 SPCR=0x00;
TWCR=0x00;
       i2c_init(); 
 lcd_init(16);

 #asm("sei")

 
 while(2)
  {
   if(on==1) 
   {
    if(buff==0)  // Переключение входов 1,2,3,5.1
    { 
    delay_ms(40);
    i2c_start();
     i2c_write(pt2323);
     i2c_write(0xCB);
     i2c_stop();   
    buffer=1;
    buff=1;   
    } 
    if(PIND.3==0&&buff==1) 
    { 
    delay_ms(40);
    i2c_start();
     i2c_write(pt2323);
     i2c_write(0xCA);
     i2c_stop();    
    buffer=2;
    buff=2;       
    }      
    if(PIND.3==0&&buff==2) 
    { 
    delay_ms(40);
     i2c_start();
     i2c_write(pt2323);
     i2c_write(0xC9);
     i2c_stop();
    buffer=3;
    buff=3;     
    }   
    if(PIND.3==0&&buff==3) 
    { 
    delay_ms(40);
    i2c_start();
     i2c_write(pt2323);
     i2c_write(0xC7);
     i2c_stop();
    buffer=4;
    buff=4;   
    }
    if(PIND.3==0&&buff==4) 
    {
    delay_ms(40);
    buff=0;  
    }     
    if(PIND.4==0)     // эффект surround
    {  
    delay_ms(40);
     if(d==0)
     {
     lcd_clear( ); 
     lcd_gotoxy( 2,1 );
     lcd_putsf( "Surround on" );
     PORTB.3=0;
     PORTB.2=1;
     i2c_start();
     i2c_write(pt2323);
     i2c_write(0xD0);
     i2c_stop();    
     delay_ms(200);
     lcd_clear( ); 
     d=1;
     } 
     else
     {
     lcd_clear( ); 
     lcd_gotoxy( 2,1 );
     lcd_putsf( "Surround off" );
     PORTB.2=0;
     PORTB.3=1; 
          i2c_start();
     i2c_write(pt2323);
     i2c_write(0xD1);
     i2c_stop();
     delay_ms(200);
     lcd_clear( );  
     d=0;
     } 
    }                  
    if(!(PIND.6))        // функция муте
    {  
    delay_ms(40);
     if(mute==0)
     {
     i2c_start();
     i2c_write(pt2323);
     i2c_write(0xFF);
     i2c_stop();
      while(5)
      { 
      lcd_clear( );
      delay_ms(30);
      lcd_gotoxy( 6,1 );
      lcd_putsf( "Mute" ); 
      PORTB.4=1;
      PORTB.5=0;
      delay_ms(50);
      mute=1;
       if(!(PIND.6)) 
       { 
       delay_ms(40);
        if(mute==1)
        { 
        lcd_clear( );
        PORTB.4=0;
        PORTB.5=1; 
             i2c_start();
     i2c_write(pt2323);
     i2c_write(0xFE);
     i2c_stop();
        delay_ms(40);
        mute=0; 
        break;
        }
       }
      }
     }
    }  

               if(!(PIND.5)&&chastota==0)       //Переключение частот: громкость, ВЧ, НЧ
      {   
      delay_ms(40); 
         chastota=1; 
         }  
               if(!(PIND.5)&&chastota==1)      
      {  
            delay_ms(40); 
         chastota=2; 
         } 
                        if(!(PIND.5)&&chastota==2)       
      {  
            delay_ms(40); 
         chastota=3; 
         }   
                        if(!(PIND.5)&&chastota==3)       
      {  
            delay_ms(40); 
         chastota=0; 
         }
    
                  
      if(chastota==0)                  //управление громкостью
      { 
     if(!(PIND.0)&&buffer_vol<30)                                                                                                  
      {    
            if(buffer_vol==0)
            {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xd2);
     i2c_stop(); 
     }
     if(buffer_vol==2)
                {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xD4);
     i2c_stop(); 
     }
     if(buffer_vol==4)           
      {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xD6);
     i2c_stop(); 
     }
     if(buffer_vol==6)
                {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xD8);
     i2c_stop(); 
     }
     if(buffer_vol==8)
                {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_stop(); 
     }
     if(buffer_vol==10)          
      {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_write(0xD2);
     i2c_stop(); 
     }
     if(buffer_vol==12)           
     {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_write(0xD4);
     i2c_stop(); 
     }
     if(buffer_vol==14)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_write(0xD6);
     i2c_stop(); 
     }
     if(buffer_vol==16)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_write(0xD8);
     i2c_stop(); 
     }
     if(buffer_vol==18)
          {           
      i2c_start();
     i2c_write(pt2322);
    i2c_write(0xE2);
     i2c_stop(); 
     }
     if(buffer_vol==20)     
     {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE2);
     i2c_write(0xD2);
     i2c_stop(); 
     }
     if(buffer_vol==22)     
     {           
      i2c_start();
     i2c_write(pt2322);
          i2c_write(0xE2);
     i2c_write(0xD4);
     i2c_stop(); 
     }
     if(buffer_vol==24)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE2);
     i2c_write(0xD6);
     i2c_stop(); 
     }
     if(buffer_vol==26)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE2);
     i2c_write(0xD8);
     i2c_stop(); 
     }
     if(buffer_vol==28)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE3);
     i2c_stop(); 
     }
 
      buffer_vol=buffer_vol+2; 
      delay_ms(50);
      }
      if(!(PIND.1)&&buffer_vol>0)
      { 
     if(buffer_vol==2)
                {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xd0);
     i2c_stop(); 
     }
     if(buffer_vol==4)           
      {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xd2);
     i2c_stop(); 
     }
     if(buffer_vol==6)
                {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xD4);
     i2c_stop(); 
     }
     if(buffer_vol==8)
                {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xD6);
     i2c_stop(); 
     }
     if(buffer_vol==10)          
      {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xD8);
     i2c_stop(); 
     }
     if(buffer_vol==12)           
     {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_stop(); 
     }
     if(buffer_vol==14)
          {           
      i2c_start();
     i2c_write(pt2322);
          i2c_write(0xE1);
     i2c_write(0xD2);
     i2c_stop(); 
     }
     if(buffer_vol==16)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_write(0xD4);
     i2c_stop(); 
     }
     if(buffer_vol==18)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_write(0xD6);
     i2c_stop(); 
     }
     if(buffer_vol==20)     
     {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1);
     i2c_write(0xD8);
     i2c_stop(); 
     }
     if(buffer_vol==22)     
     {           
      i2c_start();
     i2c_write(pt2322);
 i2c_write(0xE2);
     i2c_stop(); 
     }
     if(buffer_vol==24)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE2);
     i2c_write(0xD2);
     i2c_stop(); 
     }
     if(buffer_vol==26)
          {           
      i2c_start();
     i2c_write(pt2322);
          i2c_write(0xE2);
     i2c_write(0xD4);
     i2c_stop(); 
     }
     if(buffer_vol==28)
          {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE2);
     i2c_write(0xD6);
     i2c_stop(); 
     }
       if(buffer_vol==30)
          {           
      i2c_start();
     i2c_write(0xE2);
     i2c_write(0xD8);
     i2c_stop(); 
     }
      buffer_vol=buffer_vol-2;
      delay_ms(50);           
      }  
      }
            
      if(chastota==1)                              //управление басом
      {        
           if(!(PIND.0)&&buffer_bass<13)                                                                                                  
        { 
        
        delay_ms(50); 
     if(buffer_bass==-14)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x91);
     i2c_stop(); 
     }
          if(buffer_bass==-12)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x92);
     i2c_stop(); 
     }
     if(buffer_bass==-10)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x93);
     i2c_stop(); 
     }
               if(buffer_bass==-8)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x94);
     i2c_stop(); 
     }
               if(buffer_bass==-6)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x95);
     i2c_stop(); 
     }
                   if(buffer_bass==-4)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x96);
     i2c_stop(); 
     }
                    if(buffer_bass==-2)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9f);
     i2c_stop(); 
     }
               if(buffer_bass==0)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9e);
     i2c_stop(); 
     }
               if(buffer_bass==2)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9d);
     i2c_stop(); 
     }
                    if(buffer_bass==4)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9c);
     i2c_stop(); 
     }
               if(buffer_bass==6)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9b);
     i2c_stop(); 
     }
               if(buffer_bass==8)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9a);
     i2c_stop(); 
     }
               if(buffer_bass==10)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x99);
     i2c_stop(); 
     }
               if(buffer_bass==12)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x98);
     i2c_stop(); 
     }
        buffer_bass=buffer_bass+2;                               
        } 
        if(!(PIND.1)&&buffer_bass>-13)
        {
        delay_ms(50);
          if(buffer_bass==-12)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x90);
     i2c_stop(); 
     }
     if(buffer_bass==-10)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x91);
     i2c_stop(); 
     }
               if(buffer_bass==-8)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x92);
     i2c_stop(); 
     }
               if(buffer_bass==-6)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x93);
     i2c_stop(); 
     }
                   if(buffer_bass==-4)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x94);
     i2c_stop(); 
     }
                    if(buffer_bass==-2)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x95);
     i2c_stop(); 
     }
               if(buffer_bass==0)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x96);
     i2c_stop(); 
     }
               if(buffer_bass==2)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9f);
     i2c_stop(); 
     }
                    if(buffer_bass==4)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9e);
     i2c_stop(); 
     }
               if(buffer_bass==6)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9d);
     i2c_stop(); 
     }
               if(buffer_bass==8)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9c);
     i2c_stop(); 
     }
               if(buffer_bass==10)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9b);
     i2c_stop(); 
     }
               if(buffer_bass==12)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x9a);
     i2c_stop(); 
     }
               if(buffer_bass==14)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x99);
     i2c_stop(); 
     } 
        buffer_bass=buffer_bass-2;                           
        }   
      }    
        if(chastota==2)                                  //громкость высоким
        {        
          if(!(PIND.0)&&buffer_trable<13)                                                                                                  
          {
          delay_ms(50);
           if(buffer_trable==-14)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb1);
     i2c_stop(); 
     }
          if(buffer_trable==-12)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb2);
     i2c_stop(); 
     }
     if(buffer_trable==-10)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb3);
     i2c_stop(); 
     }
               if(buffer_trable==-8)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb4);
     i2c_stop(); 
     }
               if(buffer_trable==-6)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb5);
     i2c_stop(); 
     }
                   if(buffer_trable==-4)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb6);
     i2c_stop(); 
     }
                    if(buffer_trable==-2)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbf);
     i2c_stop(); 
     }
               if(buffer_trable==0)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbe);
     i2c_stop(); 
     }
               if(buffer_trable==2)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbd);
     i2c_stop(); 
     }
                    if(buffer_trable==4)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbc);
     i2c_stop(); 
     }
               if(buffer_trable==6)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbb);
     i2c_stop(); 
     }
               if(buffer_trable==8)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xba);
     i2c_stop(); 
     }
               if(buffer_trable==10)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb9);
     i2c_stop(); 
     }
               if(buffer_trable==12)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb8);
     i2c_stop(); 
     } 
          buffer_trable=buffer_trable+2;               
          }
          if(!(PIND.1)&&buffer_trable>-13)
          {
          delay_ms(50);
              if(buffer_trable==-12)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb0);
     i2c_stop(); 
     }
     if(buffer_trable==-10)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb1);
     i2c_stop(); 
     }
               if(buffer_trable==-8)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb2);
     i2c_stop(); 
     }
               if(buffer_trable==-6)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0x93);
     i2c_stop(); 
     }
                   if(buffer_trable==-4)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb4);
     i2c_stop(); 
     }
                    if(buffer_trable==-2)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb5);
     i2c_stop(); 
     }
               if(buffer_trable==0)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb6);
     i2c_stop(); 
     }
               if(buffer_trable==2)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbf);
     i2c_stop(); 
     }
                    if(buffer_trable==4)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbe);
     i2c_stop(); 
     }
               if(buffer_trable==6)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbd);
     i2c_stop(); 
     }
               if(buffer_trable==8)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbc);
     i2c_stop(); 
     }
               if(buffer_trable==10)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xbb);
     i2c_stop(); 
     }
               if(buffer_trable==12)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xba);
     i2c_stop(); 
     }
               if(buffer_trable==14)
     {
     i2c_start();
     i2c_write(pt2322);
     i2c_write(0xb9);
     i2c_stop(); 
     }  
          buffer_trable=buffer_trable-2;             
          }
         }
        
      
                 // Главный экран  
   lcd_gotoxy( 0,0 ); 
   sprintf(array,"Input %d ",buffer);
   lcd_puts( array ); 
   if(chastota==0)
   { 
   lcd_gotoxy( 2,1 );  
   sprintf(array_vol,"Volume %i Db ",buffer_vol );
   lcd_puts( array_vol ); 
   
   }
   if(chastota==1)
   {
   lcd_gotoxy( 2,1 );  
   sprintf(array_bass," Bass %i Db  ",buffer_bass );
   lcd_puts( array_bass );
   }
      if(chastota==2)
   { 
            lcd_gotoxy( 2,1 );  
         sprintf(array_trable,"Treble %i Db   ",buffer_trable );
         lcd_puts( array_trable );    
         }
   } 
   }
   }                    

Регулировка громкости от 0 до 30 дб. тембры НЧ и ВЧ от -14 до 14 дб. Переключение входов: 1,2,3,5.1 Функция муте и сароунд
Вложения
12.png
(62.12 КБ) 524 скачивания
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

IIuIIa писал(а):...написал код но он слишком большой.
... и кто-же в этом виноват? :)

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

if(chastota==0)                  //управление громкостью
      {
     if(!(PIND.0)&&buffer_vol<30)                                                                                                 
      {   
            if(buffer_vol==0)
            {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xd2);
     i2c_stop();
     }
     if(buffer_vol==2)
                {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xD4);
     i2c_stop();
     }
     if(buffer_vol==4)           
      {           
      i2c_start();
     i2c_write(pt2322);
     i2c_write(0xD6);
     i2c_stop();
     }
......
......
... шедевр мысли :facepalm: ... а если бы buffer_vol имело 100...200 значений, Вы бы повторяли один и тот-же код 100...200 раз ???
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Сообщение Pika4u »

А если заменить на switch? :D
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Pika4u писал(а):А если заменить на switch?
... а если перед тем как писать, подумать? :) причем тут switch...
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 34
Зарегистрирован: Вс авг 09, 2009 10:12:30
Откуда: Пермь

Сообщение IIuIIa »

Вот в этом то и дело. пробовал делать

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

     
if(buffer_vol==2)peremenai=0xD4; 
if(buffer_vol==4)peremenai=0xD2;  
if(buffer_vol==6)peremenai=0xD6;   
....       
      i2c_start();
     i2c_write(pt2322);
     i2c_write(peremenai);
     i2c_stop();
     
но когда buffer_vol равна 2 или 4 или 6 то постоянно вызывается функция

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

i2c_start();
     i2c_write(pt2322);
     i2c_write(peremenai);
     i2c_stop();
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Сообщение Pika4u »

В общем,делаете так: в начале программы объявляете массив unsigned char,пихаете его во флеш и данные в него-это байты,которые надо отправить. А потом чертовски просто:

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

i2c_start();
2c_write(pt2322);
i2c_write(array[buffer_vol]);
i2c_stop();
array-название массива.
Вот и все. :))
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Сообщение Pika4u »

IIuIIa писал(а):Вот в этом то и дело. пробовал делать

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

     
if(buffer_vol==2)peremenai=0xD4; 
if(buffer_vol==4)peremenai=0xD2;  
if(buffer_vol==6)peremenai=0xD6;   
....       
      i2c_start();
     i2c_write(pt2322);
     i2c_write(peremenai);
     i2c_stop();
     
но когда buffer_vol равна 2 или 4 или 6 то постоянно вызывается функция

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

i2c_start();
     i2c_write(pt2322);
     i2c_write(peremenai);
     i2c_stop();
Все верно. Переменной присваивается значение и функция вызывается.
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Вот в этом то и дело. пробовал делать
...а так не пробовали

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

flash char table_vol[..]= 0xd4, 0xd2, 0xd6......
.......
      i2c_start();
     i2c_write(pt2322);
     i2c_write(table_vol[buffer_vol>>1]);
     i2c_stop();
.....
ps. аналогично и для buffer_trable, buffer_bass и др.
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 34
Зарегистрирован: Вс авг 09, 2009 10:12:30
Откуда: Пермь

Сообщение IIuIIa »

и еще вопрос а как мне передавать два значения как вот тут

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

   i2c_start();
     i2c_write(pt2322);
     i2c_write(0xE1); // код на микросхему 10дб
     i2c_write(0xD2);//код на микросхему 2 дб
     i2c_stop(); 
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

IIuIIa писал(а):Почему то он отправляет только первое значение из массива всегда.
... код в студию - экстрасенсы в отпуске
IIuIIa писал(а):а как мне передавать два значения
... очевидно завести вторую таблицу....
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 34
Зарегистрирован: Вс авг 09, 2009 10:12:30
Откуда: Пермь

Сообщение IIuIIa »

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

flash char table_vol[..]= 0xd4, 0xd2, 0xd6......
.......
      i2c_start();
     i2c_write(pt2322);
     i2c_write(table_vol[buffer_vol>>1]);
     i2c_stop();
вот так что то у меня не получается сделать :(
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

Пример
PT2313.rar
(34.25 КБ) 243 скачивания
реализации управления TDA7313 = LP7313 = PL7313= PT2313 на атмеге16, может что то используете для себя.
Контактная информация:
Ответить

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