Лето, жара, USB Холодильник своими руками

11-05-2013, 19:32 Cмотрели: 3285
Для постройки нашего мини холодильника нам необходимо найти или купить элемент Пельтье, что это такое и как работает Вы сможете прочитать ниже, и два радиатора. Вот этот самый элемент Пельтье, я выдрал его из сломанного компа, он там стоял между процессором и кулером. Счистил с него старую термопасту. В двух словах - этот элемент Пельтье при подаче на него постоянного тока начинает работать следующим образом - одна сторона у него начинает греться, а вторая охлаждаться, если поменять полярность источника питания, то стороны элемента будут вести себя наоборот! Далее я взял два массивных радиатора от ненужного усилка. Потом смазал элемент новой термопастой, которую купил в радио магазине, и зажал элемент Пельтье между радиаторов. Использование термопасты в данном случае обязательно...


 Экспедиция в природный парк Усть-Медведицкий (RFF-210)

11-05-2013, 11:13 Cмотрели: 395
В период с 9 по 12 мая 2013 года, команда радиолюбителей г. Волжского Волгоградской области под позывным сигналом RC4A/p, проводит WFF-радиоэкспедицию в Природный парк "Усть-Медведицкий". Референция по программе WFF: RFF-210. По дипломной программе RDA: VG-40 (Серафимовический район Волгоградской области). Запланирована работа в телефоне и телеграфе на диапазонах 3.5, 7, 10, 14, 18, 21, 24, 28 MHz. QSL via UA4ATL (бюро или директ). 73 и 44!


 Пушка Гаусса Из Фотовспышки

11-05-2013, 11:13 Cмотрели: 428
нашёл старую фотовспышку "фотон" 78 года, хочу прицепить котушку но не пойму как, уже все перепробывал(радиоэлектроникой занимаюсь недавно), зарядка кондесатора не идёт, подскажите пожалуйста что да как паять, схема прилагается, спасибо

Прикрепленные миниатюры





  • 2910596_original.png





Раздел: Начинающим


 Проблемы С Памятью

11-05-2013, 11:13 Cмотрели: 466
Здравствуйте.

не могли бы Вы подсказать, как посмотреть,где именно он пишет в некорректную облать памяти.




#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <inttypes.h>
#include "lcd_lib.h"
//define R2R port
#define R2RPORT PORTA
#define R2RDDR DDRA
//define button port and dedicated pins
#define BPORT PORTD
#define BPIN PIND
#define BDDR DDRD
#define DOWN 0//PORTD
#define LEFT 1//PORTD
#define START 2//PORTD
#define RIGHT 3//PORTD
#define UP 4//PORTD
//Define Highs Speed (HS) signal output
#define HSDDR DDRD
#define HSPORT PORTD
#define HS 5//PD5
//define eeprom addresses
#define EEMODE 0
#define EEFREQ1 1
#define EEFREQ2 2
#define EEFREQ3 3
#define EEDUTY 4
#define EEINIT E2END
#define RESOLUTION 0.095367431640625
#define MINFREQ 0//minimum frequency
#define MAXFREQ 65534//maximum DDS frequency
#define MN_No 5// number of menu items
//function prototypes
void delay1s(void);
void Timer2_Init(void);
void Timer2_Start(void);
void Timer2_Stop(void);
void Main_Init(void);
void Menu_Update(uint8_t);
void Freq_Update(void);
void Timer1_Start(uint8_t);
void Timer1_Stop(void);
void static inline Signal_OUT(const uint8_t *, uint8_t, uint8_t, uint8_t);
//adjust LCDsendChar() function for strema
static int LCDsendstream(char c, FILE *stream);
//----set output stream to LCD-------
static FILE lcd_str = FDEV_SETUP_STREAM(LCDsendstream, NULL, _FDEV_SETUP_WRITE);
//Menu Strings in flash
//menu 1
const uint8_t MN100[] PROGMEM=" exp \0";
//Array of pointers to menu strings stored in flash
const uint8_t *MENU[]={
MN100 //menu 1 string
};
//various LCD strings
const uint8_t MNON[] PROGMEM="ON \0";//ON
const uint8_t MNOFF[] PROGMEM="OFF\0";//OFF
const uint8_t NA[] PROGMEM=" NA \0";//Clear freq value
const uint8_t CLR[] PROGMEM=" \0";//Clear freq value
const uint8_t MNClrfreq[] PROGMEM=" \0";//Clear freq value
const uint8_t TOEEPROM[] PROGMEM="Saving Settings\0";//saving to eeprom
const uint8_t ONEMHZ[] PROGMEM=" 1MHz \0";//saving to eeprom
const uint8_t welcomeln1[] PROGMEM="AVR SIGNAL\0";
const uint8_t RND[] PROGMEM=" Random\0";
//variables to control TDA7313
struct signal{
volatile uint8_t mode; //signal
volatile uint8_t fr1; //Frequency [0..7]
volatile uint8_t fr2; //Frequency [8..15]
volatile int8_t fr3; //Frequency [16..31]
volatile uint32_t freq; //frequency value
volatile uint8_t flag; //if "0"generator is OFF, "1" - ON
volatile uint32_t acc; //accumulator
volatile uint8_t ON;
volatile uint8_t HSfreq; //high speed frequency [1...4Mhz]
volatile uint32_t deltafreq; //frequency step value
}SG;
//define signals
const uint8_t expwave[] __attribute__ ((section (".MySection1")))= //exp wave
{
0x00,0x09,0x12,0x1B,0x23,0x2c,0x34,0x3c,0x43,0x4B,0x52,0x59,0x60,0x67,0x6E,0x74,
0x7A,0x80,0x86,0x8C,0x91,0x97,0x9C,0xA1,0xA6,0xAA,0xAF,0xB3,0xB8,0xBC,0xC0,0xC3,
0xC7,0xCB,0xCE,0xD1,0xD4,0xD7,0xDA,0xDD,0xE0,0xE2,0xE4,0xE7,0xE9,0xEB,0xED,0xEF,
0xF0,0xF2,0xF3,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFE,0xFE,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,0xfa,0xfa,
0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0,0xee,0xed,0xec,0xea,0xe9,0xe8,
0xe6,0xe5,0xe3,0xe2,0xe0,0xdf,0xdd,0xdb,0xda,0xd8,0xd6,0xd5,0xd3,0xd1,0xd0,0xce,
0xcc,0xca,0xc8,0xc7,0xc5,0xc3,0xc1,0xbf,0xbd,0xbb,0xba,0xb8,0xb6,0xb4,0xb2,0xb0,
0xae,0xac,0xaa,0xa8,0xa6,0xa4,0xa2,0xa1,0x9f,0x9d,0x9b,0x99,0x97,0x95,0x93,0x91,
0x8f,0x8e,0x8c,0x8a,0x88,0x86,0x84,0x82,0x80,0x7e,0x7d,0x7b,0x79,0x77,0x76,0x74,
0x72,0x70,0x6e,0x6d,0x6b,0x69,0x68,0x66,0x64,0x62,0x61,0x5f,0x5d,0x5c,0x5a,0x59,
0x57,0x55,0x54,0x52,0x51,0x4f,0x4e,0x4c,0x4b,0x49,0x48,0x46,0x45,0x44,0x42,0x41,
0x3f,0x3e,0x3d,0x3b,0x3a,0x39,0x37,0x36,0x35,0x34,0x31,0x30,0x2f,0x2e,0x2d,0x2b,
0x2a,0x29,0x29,0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,
0x1b,0x1a,0x1a,0x19,0x18,0x17,0x16,0x15,0x15,0x14,0x13,0x12,0x11,0x11,0x10,0x0f,
0x0f,0x0e,0x0d,0x0d,0x0c,0x0b,0x0b,0x0a,0x09,0x09,0x08,0x08,0x07,0x07,0x06,0x06,
};

//array of pointers to signal tables
const uint8_t *SIGNALS[] ={
expwave
};
//adjust LCD stream fuinction to use with printf()
static int LCDsendstream(char c , FILE *stream)
{
LCDsendChar(c);
return 0;
}
//delay 1s
void delay1s(void)
{
uint8_t i;
for(i=0;i<100;i++)
{
_delay_ms(10);
}
}
//initialize Timer2 (used for button reading)
void Timer2_Init(void)
{
TCNT2=0x00;
sei();
}
//start timer2
void Timer2_Start(void)
{
TCCR2|=(1<<CS22)|(1<<CS21); //prescaller 256 ~122 interrupts/s
TIMSK|=(1<<TOV2);//Enable Timer0 Overflow interrupts
}
//stop timer 2
void Timer2_Stop(void)
{
TCCR0&=~((1<<CS22)|(1<<CS21)); //Stop timer0
TIMSK&=~(1<<TOV2);//Disable Timer0 Overflow interrupts
}
//Initial menu
//show initial signal and frequency
//generator is off
void Menu_Update(uint8_t on)
{
LCDclr();
CopyStringtoLCD(MENU[(SG.mode)], 0, 0 );
LCDGotoXY(0, 1);
if (SG.mode==6)
{
CopyStringtoLCD(CLR, 0, 1 );
LCDGotoXY(0, 1);
printf(" %5uHz", (uint16_t)SG.deltafreq);
}
if (SG.mode==7)
{
CopyStringtoLCD(CLR, 0, 1 );
CopyStringtoLCD(RND, 0, 1 );
}
if (SG.mode==8)
{
CopyStringtoLCD(CLR, 0, 1 );
LCDGotoXY(0, 1);
printf(" %5uMHz", SG.HSfreq);
}
if((SG.mode==0)||(SG.mode==1)||(SG.mode==2)||(SG.mode==3)||(SG.mode==4)||(SG.mode==5))
{
CopyStringtoLCD(CLR, 0, 1 );
LCDGotoXY(0, 1);
printf(" %5uHz", (uint16_t)SG.freq);
}
if (SG.mode!=6)
{
if(on==1)
CopyStringtoLCD(MNON, 13, 1 );
else
CopyStringtoLCD(MNOFF, 13, 1 );
}
}
//update frequency value on LCD menu - more smooth display
void Freq_Update(void)
{
if (SG.mode==6)
{
LCDGotoXY(0, 1);
printf(" %5uHz", (uint16_t)SG.deltafreq);
}
if (SG.mode==8)
{
//if HS signal
LCDGotoXY(0, 1);
printf(" %5uMHz", SG.HSfreq);
}
if((SG.mode==0)||(SG.mode==1)||(SG.mode==2)||(SG.mode==3)||(SG.mode==4)||(SG.mode==5))
{
LCDGotoXY(0, 1);
printf(" %5uHz", (uint16_t)SG.freq);
}
}
//External interrupt0 service routine
//used to stop DDS depending on active menu
//any generator is stopped by setting flag value to 0
//DDs generator which is inline ASM is stopped by setting
//CPHA bit in SPCR register
ISR(INT0_vect)
{
SG.flag=0;//set flag to stop generator
SPCR|=(1<<CPHA);//using CPHA bit as stop mark
//CopyStringtoLCD(MNOFF, 13, 1 );
SG.ON=0;//set off in LCD menu
loop_until_bit_is_set(BPIN, START);//wait for button release
}
//timer overflow interrupt service tourine
//checks all button status and if button is pressed
//value is updated
ISR(TIMER2_OVF_vect)
{
if (bit_is_clear(BPIN, UP))
//Button UP increments value which selects previous signal mode
//if first mode is reached - jumps to last
{
if (SG.mode==0)
{
SG.mode=MN_No-1;
}
else
{
SG.mode--;
}
//Display menu item
Menu_Update(SG.ON);
loop_until_bit_is_set(BPIN, UP);
}
if (bit_is_clear(BPIN, DOWN))
//Button Down decrements value which selects next signal mode
//if last mode is reached - jumps to first
{
if (SG.mode<(MN_No-1))
{
SG.mode++;
}
else
{
SG.mode=0;
}
//Display menu item
Menu_Update(SG.ON);
loop_until_bit_is_set(BPIN, DOWN);
}
if (bit_is_clear(BPIN, RIGHT))
//frequency increment
{
if(SG.mode==6)
{
if(SG.deltafreq==10000)
SG.deltafreq=1;
else
SG.deltafreq=(SG.deltafreq*10);
Freq_Update();
loop_until_bit_is_set(BPIN, RIGHT);
}
if (SG.mode==8)
{
//ifhigh speed signal
if(SG.HSfreq==8)
SG.HSfreq=1;
else
SG.HSfreq=(SG.HSfreq<<1);
Freq_Update();
loop_until_bit_is_set(BPIN, RIGHT);
}
if((SG.mode==0)||(SG.mode==1)||(SG.mode==2)||(SG.mode==3)||(SG.mode==4)||(SG.mode==5))
{
if ((0xFFFF-SG.freq)>=SG.deltafreq)
SG.freq+=SG.deltafreq;
Freq_Update();
uint8_t ii=0;
//press button and wait for long press (~0.5s)
do{
_delay_ms(2);
ii++;
}while((bit_is_clear(BPIN, RIGHT))&&(ii<=250));//wait for button release
if(ii>=250)
{
do{
if ((0xFFFF-SG.freq)>=SG.deltafreq)
SG.freq+=SG.deltafreq;
Freq_Update();
}while(bit_is_clear(BPIN, RIGHT));//wait for button release
}
}
}
if (bit_is_clear(BPIN, LEFT))
//frequency decrement
{
if(SG.mode==6)
{
if(SG.deltafreq==1)
SG.deltafreq=10000;
else
SG.deltafreq=(SG.deltafreq/10);
Freq_Update();
loop_until_bit_is_set(BPIN, LEFT);
}
if (SG.mode==8)
{
//ifhigh speed signal
if(SG.HSfreq==1)
SG.HSfreq=8;
else
SG.HSfreq=(SG.HSfreq>>1);
Freq_Update();
loop_until_bit_is_set(BPIN, LEFT);
}
if ((SG.mode==0)||(SG.mode==1)||(SG.mode==2)||(SG.mode==3)||(SG.mode==4)||(SG.mode==5))
{
if (SG.freq>=SG.deltafreq)
SG.freq-=SG.deltafreq;
Freq_Update();
uint8_t ii=0;
//press button and wait for long press (~0.5s)
do{
_delay_ms(2);
ii++;
}while((bit_is_clear(BPIN, LEFT))&&(ii<=250));//wait for button release
if(ii>=250)
{
do{
if (SG.freq>=SG.deltafreq)
SG.freq-=SG.deltafreq;
Freq_Update();
}while(bit_is_clear(BPIN, LEFT));//wait for button release
}
}
}
if (bit_is_clear(BPIN, START))
{
if(SG.mode!=6)
{
//saving last configuration
SG.fr1=(uint8_t)(SG.freq);
SG.fr2=(uint8_t)(SG.freq>>8);
SG.fr3=(uint8_t)(SG.freq>>16);
if (eeprom_read_byte((uint8_t*)EEMODE)!=SG.mode) eeprom_write_byte((uint8_t*)EEMODE,SG.mode);
if (eeprom_read_byte((uint8_t*)EEFREQ1)!=SG.fr1) eeprom_write_byte((uint8_t*)EEFREQ1,SG.fr1);
if (eeprom_read_byte((uint8_t*)EEFREQ2)!=SG.fr2) eeprom_write_byte((uint8_t*)EEFREQ2,SG.fr2);
if (eeprom_read_byte((uint8_t*)EEFREQ3)!=SG.fr3) eeprom_write_byte((uint8_t*)EEFREQ3,SG.fr3);
//Calculate frequency value from restored EEPROM values
SG.freq=(((uint32_t)(SG.fr3)<<16)|((uint32_t)(SG.fr2)<<8)|((uint32_t)(SG.fr1)));
//calculate accumulator value
SG.acc=SG.freq/RESOLUTION;
SG.flag=1;//set flag to start generator
SG.ON=1;//set ON on LCD menu
SPCR&=~(1<<CPHA);//clear CPHA bit in SPCR register to allow DDS
//Stop timer2 - menu inactive
Timer2_Stop();
//display ON on LCD
Menu_Update(SG.ON);
}
loop_until_bit_is_set(BPIN, START);//wait for button release
}
}
/*DDS signal generation function
Original idea is taken from
http://www.myplace.nu/avr/minidds/index.htm
small modification is made - added additional command which
checks if CPHA bit is set in SPCR register if yes - exit function
*/
void static inline Signal_OUT(const uint8_t *signal, uint8_t ad2, uint8_t ad1, uint8_t ad0)
{
asm volatile( "eor r18, r18 ;r18<-0" "\n\t"
"eor r19, r19 ;r19<-0" "\n\t"
"1:" "\n\t"
"add r18, %0 ;1 cycle" "\n\t"
"adc r19, %1 ;1 cycle" "\n\t"
"adc %A3, %2 ;1 cycle" "\n\t"
"lpm ;3 cycles" "\n\t"
"out %4, __tmp_reg__ ;1 cycle" "\n\t"
"sbis %5, 2 ;1 cycle if no skip" "\n\t"
"rjmp 1b ;2 cycles. Total 10 cycles" "\n\t"
:
:"r" (ad0),"r" (ad1),"r" (ad2),"e" (signal),"I" (_SFR_IO_ADDR(PORTA)), "I" (_SFR_IO_ADDR(SPCR))
:"r18", "r19"
);
}
void Timer1_Start(uint8_t FMHz)
{
switch(FMHz){
case 1:
//start high speed (1MHz) signal
OCR1A=7;
break;
case 2:
OCR1A=3;//2MHz
break;
case 4:
OCR1A=1;//4MHz
break;
case 8:
OCR1A=0;//8MHz
break;
default:
OCR1A=7;//defauls 1MHz
break;}
//Output compare toggles OC1A pin
TCCR1A=0x40;
//start timer without prescaler
TCCR1B=0b00001001;
}
void Timer1_Stop(void)
{
TCCR1B=0x00;//timer off
}
//main init function
void Main_Init(void)
{
//stderr = &lcd_str;
stdout = &lcd_str;
//--------init LCD----------
LCDinit();
LCDclr();
LCDcursorOFF();
//-------EEPROM initial values----------
if (eeprom_read_byte((uint8_t*)EEINIT)!='T')
{
eeprom_write_byte((uint8_t*)EEMODE,0x00);//initial mode 0 – OUT~~~~;
eeprom_write_byte((uint8_t*)EEFREQ1,0xE8);//initial frequency 1kHz
eeprom_write_byte((uint8_t*)EEFREQ2,0x03);
eeprom_write_byte((uint8_t*)EEFREQ3,0x00);
eeprom_write_byte((uint8_t*)EEINIT,'T');//marks once that eeprom init is done
//once this procedure is held, no more initialization is performed
}
//------restore last saved values from EEPROM------
SG.mode=eeprom_read_byte((uint8_t*)EEMODE);
SG.fr1=eeprom_read_byte((uint8_t*)EEFREQ1);
SG.fr2=eeprom_read_byte((uint8_t*)EEFREQ2);
SG.fr3=eeprom_read_byte((uint8_t*)EEFREQ3);
SG.freq=(((uint32_t)(SG.fr3)<<16)|((uint32_t)(SG.fr2)<<8)|((uint32_t)(SG.fr1)));
SG.acc=SG.freq/RESOLUTION;
SG.flag=0;
//default 1MHz HS signal freq
SG.HSfreq=1;
SG.deltafreq=100;
//------------init DDS output-----------
R2RPORT=0x00;//set initial zero values
R2RDDR=0xFF;//set A port as output
//-------------set ports pins for buttons----------
BDDR&=~(_BV(START)|_BV(UP)|_BV(DOWN)|_BV(RIGHT)|_BV(LEFT));
BPORT|=(_BV(START)|_BV(UP)|_BV(DOWN)|_BV(RIGHT)|_BV(LEFT));
//---------set ports pins for HS output---------
HSDDR|=_BV(HS);//configure as output
//-----------Menu init--------------
SG.ON=0;//default signal is off
Menu_Update(SG.ON);
//-----------Timer Init-------------
Timer2_Init();
//Start Timer with overflow interrupts
Timer2_Start();
}
int main(void)
{
//Initialize
Main_Init();
while(1)//infinite loop
{
if (SG.flag==1)
{
GICR|=(1<<INT0);//set external interrupt to enable stop
if (SG.mode==7)
{
//Noise
do
{
R2RPORT=rand();
}while(SG.flag==1);
//set signal level to 0
R2RPORT=0x00;
//display generator OFF
Menu_Update(SG.ON);
//stop external interrupt
GICR&=~(1<<INT0);
//start timer menu active
Timer2_Start();
}
/* else if (SG.mode==6)
{
//freq step
while((SG.flag==1))
{
//not implemented
CopyStringtoLCD(NA, 0, 1 );
}
//set signal level to 0
R2RPORT=0x00;
//display generator OFF
Menu_Update(SG.ON);
GICR&=~(1<<INT0);//|(1<<INT1);//stop external interrupt
//start timer menu active
Timer2_Start();
}*/
else if (SG.mode==8)
{
//High speed signal
Timer1_Start(SG.HSfreq);
while((SG.flag==1))
{
//not implemented
CopyStringtoLCD(MNON, 13, 1 );
}
Timer1_Stop();//timer off
//set HS pin to LOW
HSPORT&=~(1<<HS);
//display generator OFF
Menu_Update(SG.ON);
GICR&=~(1<<INT0);//|(1<<INT1);//stop external interrupt
//start timer menu active
Timer2_Start();
}
else
{
//start DDS
Signal_OUT(SIGNALS[SG.mode],
(uint8_t)((uint32_t)SG.acc>>16),
(uint8_t)((uint32_t)SG.acc>>8),
(uint8_t)SG.acc);
//set signal level to 0
R2RPORT=0x00;
//display generator OFF
Menu_Update(SG.ON);
GICR&=~(1<<INT0);//|(1<<INT1);//stop external interrupt
//start timer menu active
Timer2_Start();
}
}
}
return 0;
}



ошибка section .MySection1 loaded at [000016ce,000017cd] overlaps section .data loaded at [000016ce,000016f5]



Подскажите пожалуйста,где посмотреть, по какой причине он так записывает в память.

Гуглила, ничего толкого не нашла.

Заранее спасибо.
Раздел: Песочница или Вопрос-Ответ


 Переключатель На Блоке

11-05-2013, 11:13 Cмотрели: 438
Добрый день, имеется блок АТХ типа 430W, на нем есть переключатель для чего он служит? На переключателе написано в одном положении 230 в другом 115. Я так понял блок может работать на разное напряжение 110, 220? Блок был не исправен и был вскрыт до меня, хотел проверить 3 линии на питания, блок проверялся без компьютера, замкнул я центр(зеленый) и землю(черный) провода, когда переключатель стоял на 230, ни на одной линии не было питания, после чего перекинул на 115 (была моя глупость), перемычка как стояла так и стоит, вроде все нормально, но стоило мне достронуться крастного провода одним щупом мультиметра (2 щуп не был подключен), как сгорела проводка где-то в стене (не провод блока)..пробки стояли на 16А в счетчике, но они не сработали..кто знает в чем причина и что это за переключатель?

Прикрепленные миниатюры





  • блок.jpg





Раздел: Начинающим


 Динамики 75Гдн-4Л-4

11-05-2013, 11:13 Cмотрели: 456
Продам по Украине 2 динамика 75ГДН-4Л-4.Практически новые.Цена 400 грн. пара.
Раздел: Продам


 Автоматика Компрессора

11-05-2013, 11:13 Cмотрели: 595
Хочу сделать чтобы компрессор отключался при достигнутом давлении и включался когда давление упадет до определенного уровня. Как подключить электро-контактный манометр к магнитному пускателю? нужно ли еще какое нибудь промежуточное реле? двигатель 380В около 4кВт

10052013926.jpg
10052013927.jpg
10052013929.jpg
10052013930.jpg

Прикрепленные миниатюры





  • 10052013933.jpg





Раздел: Электрика


 Вопрос На Счет Амфитон 25У-002С

11-05-2013, 11:13 Cмотрели: 987
Здравствуйте товарищи!



Недавно нашел усилитель у помойки. Забрал домой. Включил - работает!

Сейчас использую для тыловых S-30x. Проблема в том, что срабатывает защита, на ~ 50% мощности. При этом если перевести баланс на правый канал - на 80-85%.

На фронту стоят старенькие, активные SVEN SPS-866.

Вопрос:

Стоит ли восстанавливать его (перепаивать электролиты и т.д. (если да то какие)) или лучше выкинуть "начинку" амфитона и сделать из него (в идеале 4-х канальный) на TDA2050?



Просто знаниями в электронике особо не располагаю, так что не судите строго Вопрос На Счет Амфитон 25У-002С
Раздел: Усилители мощности


 Atmega8535+Mcp23S17

11-05-2013, 11:13 Cмотрели: 634
Привет всем!



Взгляните на данный код:



#include <mega8535.h>
// MCP23S17 SPI Slave Device
#define SPI_SLAVE_ID 0x40
#define SPI_SLAVE_ADDR 0x00
#define SPI_SLAVE_WRITE 0x00
#define SPI_SLAVE_READ 0x01// MCP23S17 Registers Definition for BANK=0 (default)
#define IODIRA 0x00
#define IODIRB 0x01
#define IOCONA 0x0A
#define GPPUA 0x0C
#define GPPUB 0x0D
#define GPIOA 0x12
#define GPIOB 0x13


#define SPI_CS 0
// SPI functions
#define SPI_ACTIVE_SS(PORT,SPI_CS) PORT &= ~(1<<SPI_CS);
#define SPI_UNACTIVE_SS(PORT,SPI_CS) PORT |= (1<<SPI_CS);
// Declare your global variables here

void SPI_write(unsigned char addr,unsigned char data)
{
SPI_ACTIVE_SS(PORTB,0);
SPDR = SPI_SLAVE_ID | ((SPI_SLAVE_ADDR << 1) & 0x0E)| SPI_SLAVE_WRITE;
while(!(SPSR & (1<<SPIF)));
SPDR = addr;
while(!(SPSR & (1<<SPIF)));
SPDR = data;
while(!(SPSR & (1<<SPIF)));
SPI_UNACTIVE_SS(PORTB,0);
}

interrupt [TIM2_OVF] void timer0_ovf(void)
{

TCNT2=200;





}
void main(void)
{

PORTA=0x01;
DDRA=0x00;


DDRB=0xB1;


ASSR=0x00;
TCCR2=0x07;
TCNT2=200;
OCR2=0x00;

TIMSK=(1<<TOIE2);

ACSR=0x80;
SFIOR=0x00;

SPCR=0x50;
SPSR=0x00;

SPI_write(IOCONA,0x20); // I/O Control Register: BANK=0, SEQOP=1, HAEN=1 (Enable Addressing)
SPI_write(IODIRA,0x00); // GPIOA As Output
//SPI_Write(IODIRB,0xFF); // GPIOB As Input
//SPI_Write(GPPUB,0xFF); // Enable Pull-up Resistor on GPIOB
SPI_write(GPIOA,0x00);
#asm("sei")
while(1)
{
if (!(PINA&0x01)){
SPI_write(GPIOA ,0x01);
}
else
SPI_write(GPIOA ,0x00);
}

}

Данный простейший код который просто проверяет на правильность написанного кода для расширителя порта MCP23S17. На протеусе симулируется на гуд. А в реале Обнаруживается постоянная лог.1 в регистре MOSI при просмотре осциллографом.

А если в цикле while кода изменить так:


while(1)
{

SPI_write(GPIOA ,0x01);
SPI_write(GPIOA ,0x00);

}

}

То код работает и MOSI работает как надо.

Помогите люди с данной проблемой!! Кстати данный код работает только регистром MOSI, но ни как не влияет на работу расширителя в реале. А в протуесе даже бесконечная отправка данных по SPI влияет на работу расширителя то есть регистре GPA0 наблюдается изменение. Схему показывать не буду так как там ничего не обычного



-> питание общее для всей схемы

-на МК (с фильтром по питанию) - +5V

-на MCP23S17(без фильтра) - +5V



->ножки MOSI MISO SCK SS(CS)

-подключены на прямую \\MISO-SO\\ MOSI-SI\\ SCK-SCK\\ SS(PORTB.0)-CS



-> ножка RESET

-в МК не натянута на питание через 10кОмный резистор(т.к. пока это не важно)

-в MCP23S17 ножку подал +5V.



->MCP23S17

-ножка GPA0 подана на LED с резистором номиналом 120 Ом

-ножки A0 A1 A2 - не затронуты.

Какую инфу дать еще для быстрой помощи от Уважаемых форумчан?

Вот проект, писал на другом форусе, но там не смогли мне помочь.

http://chipenable.ru/media/kunena/attachments/8897/Spi-mcp23.rar

Раздел: AVR


 Восстановление Карты Памяти Microsdhc 4Gb (Class 4)

11-05-2013, 11:13 Cмотрели: 422
Здравствуйте. Подскажите, возможно ли как то решить данную проблему?

Вообщем купил я на Ebay флэшку, попалась первая за 4 зеленых, ну взял ее. Неизвестного производителя. Вообщем когда получил телефон Nokia 6500 slide, начал ее использовать. При заливании на нее музыки, Windows выдает ошибку, устройство больше недоступно или что-то в этом роде, а в трее CHKDSK выдает ошибку что повреждены сектора (точно непомню. запустить надо CHKDSK через командную строку надо. Ну файлы с горем пополам заливаются, однако их на 1,5Гб, а телефон говорит 872Мб. Опять форматирую, заново закину, вроде нормально становится. Но еще подобные ошибки выдает и телефон. К примеру в игре Gravity Defied повреждаются сохранения и при следующем запуске игра выдает ошибку и не запускается. Камера фотографирует и выдает ошибка сохранения и переводится в режим ожидания. Проигрыватель тьфу-тьфу без глюков проигрывает музыку.



Возможно ли восстановить флешку? Выполнял стандартную проверку (в свойствах карты ) на ошибки и дефрагментацию. Заливал через картридер, PC Suite и телефон в режиме накопителя - одно и то же

Вот фотографии этого чуда

Прикрепленные миниатюры





  • Фото001.jpg





  • Фото005.jpg





Раздел: Разное

1 2 3
Предыдущая    Следующая



Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Май 2013    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031