tag:blogger.com,1999:blog-18932085958408712902024-03-13T06:58:02.731+05:30RF & Mechatronics Hobby ProjectsVU3XVR an mechatronic enthusiast blog.Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-1893208595840871290.post-51845512314413886302019-03-26T19:47:00.001+05:302019-03-28T17:16:14.127+05:30YAALI 40 CW TCVR Using SI5351 DDS VFO and ATtiny13 Assembly Language NOT ARDUINOThis project is to show the efficiency of ASM aka assembly language to
control SI5351. The Source code can be found at the bottom.<br /><br />Yaali / Yali : The meaning is a mythical creature seen in many South Indian sculptures. It may be portrayed as part lion, part elephant and part horse. Source: wikipedia<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/NFZL0z4oEps/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/NFZL0z4oEps?feature=player_embedded" width="320"></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUSxlc7A9lSNzBtDpdwLSKvZDsXCYOMPGDoV7QKaLM5mWlYzBuNxPNRcO_X2NyAigylpqIEHc_Z7lMcwZFedV6T0HY-F2NqZjSOCUJTHsPAMaspurOj8pA1R90ct_jPzPyPs6OatQNo0i0/s1600/IMG_20190326_191759.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUSxlc7A9lSNzBtDpdwLSKvZDsXCYOMPGDoV7QKaLM5mWlYzBuNxPNRcO_X2NyAigylpqIEHc_Z7lMcwZFedV6T0HY-F2NqZjSOCUJTHsPAMaspurOj8pA1R90ct_jPzPyPs6OatQNo0i0/s400/IMG_20190326_191759.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg78zUM_Qk4RlzWn1WVh6at0Kvuv-3vMC2pAOpqjmQjQkZxgLJEkGbpG6aagDEhXGSCvbcKlHhuK2j6MuZzSDcaH_UyULtReDG5Jv3dtxOlmHpXleDnTwQcYoC01Zx1-cVjsjBBlSXk10o2/s1600/IMG_20190326_193148.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg78zUM_Qk4RlzWn1WVh6at0Kvuv-3vMC2pAOpqjmQjQkZxgLJEkGbpG6aagDEhXGSCvbcKlHhuK2j6MuZzSDcaH_UyULtReDG5Jv3dtxOlmHpXleDnTwQcYoC01Zx1-cVjsjBBlSXk10o2/s400/IMG_20190326_193148.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3-oruEAJreDYdAckNUibJ1OcShftoG9NFBvWjpSoaTm33Q5pGkyW3xXDqa93pw3qeRMAW4Ulb437CzAnKgMYMazYWkvb7JMn17M8n3mDW6t9vS9PowjHTHfMm93j9RIWoAEv9yqXq-Vrs/s1600/IMG_20190326_193223.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3-oruEAJreDYdAckNUibJ1OcShftoG9NFBvWjpSoaTm33Q5pGkyW3xXDqa93pw3qeRMAW4Ulb437CzAnKgMYMazYWkvb7JMn17M8n3mDW6t9vS9PowjHTHfMm93j9RIWoAEv9yqXq-Vrs/s400/IMG_20190326_193223.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdc3_9J3Unn3VviJ2YDH7U95P0eA7StHmdhcIYrYWKbotqHxy4CUjExwYYwQNF2-pj0OLFz5OcwdyXnZ9E9OiDP-Bwww_OjmAfV3psmykwvR-n45XXkV2cc7o-F65hMnXwjKP3mD9GO9pb/s1600/IMG_20190326_193234.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdc3_9J3Unn3VviJ2YDH7U95P0eA7StHmdhcIYrYWKbotqHxy4CUjExwYYwQNF2-pj0OLFz5OcwdyXnZ9E9OiDP-Bwww_OjmAfV3psmykwvR-n45XXkV2cc7o-F65hMnXwjKP3mD9GO9pb/s400/IMG_20190326_193234.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoZws38k72ScmOy0qTlCPUs_IHGP0CYckBzIJSLHjAecb2vhng1HQgFUmTdmJF4Y3oSvNvrKmcBP0qF0m6BUQK2XTR_sQDIb-EUmp4jnSuePn1Ks9-FfizD8WVv77de81q38DMl1p5gef8/s1600/IMG_20190326_193300.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoZws38k72ScmOy0qTlCPUs_IHGP0CYckBzIJSLHjAecb2vhng1HQgFUmTdmJF4Y3oSvNvrKmcBP0qF0m6BUQK2XTR_sQDIb-EUmp4jnSuePn1Ks9-FfizD8WVv77de81q38DMl1p5gef8/s400/IMG_20190326_193300.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZgPqKOBAm8RaO_gSkA1oI0YDmPanLcuzYG6rhgc913XK7hkXW5IfPDFOgME-G_NCqgKfZoT-GIPE39pi8tN-NySHD9HCncED8UPl6PdXRG6DiUc9iqZIdHQ8ikBSduIJImY4_b4-RP-U3/s1600/IMG_20190326_193312.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZgPqKOBAm8RaO_gSkA1oI0YDmPanLcuzYG6rhgc913XK7hkXW5IfPDFOgME-G_NCqgKfZoT-GIPE39pi8tN-NySHD9HCncED8UPl6PdXRG6DiUc9iqZIdHQ8ikBSduIJImY4_b4-RP-U3/s400/IMG_20190326_193312.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisBXsgliOTqhlF4M1qh4hNYFTNaucbMKK-R9vl8xICjRtcE7GX6zpNe34hlGKusLsVhTEyVksoERdNlZxxuKiJVtlLaBGWZGSLlBf7U4R6s8KAEd6T-P54PaHn5-Z4LWVq9wZBNQcibX1W/s1600/IMG_20190326_193321.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisBXsgliOTqhlF4M1qh4hNYFTNaucbMKK-R9vl8xICjRtcE7GX6zpNe34hlGKusLsVhTEyVksoERdNlZxxuKiJVtlLaBGWZGSLlBf7U4R6s8KAEd6T-P54PaHn5-Z4LWVq9wZBNQcibX1W/s400/IMG_20190326_193321.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3esJJ8vqmhlZnnaKyUOuWlcKWgsygR1gR2SBM-7vaP5c5Ei44eQURXZzonwoGbhk42FO2tx2soqWbI9n2glEz6X9Pa3ZWRTmhsXLRil2VYNU-56V9Lr9isUbdOZySIw7w3pWwOq0SuegN/s1600/IMG_20190326_193330.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3esJJ8vqmhlZnnaKyUOuWlcKWgsygR1gR2SBM-7vaP5c5Ei44eQURXZzonwoGbhk42FO2tx2soqWbI9n2glEz6X9Pa3ZWRTmhsXLRil2VYNU-56V9Lr9isUbdOZySIw7w3pWwOq0SuegN/s400/IMG_20190326_193330.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibsJUVVullRX15bw2AwZpUDlegBsIZSq0uGxdJpCnnUkkdz-BtGurit6EZNk3T4yQBaVqDeoCPUSp0oB1bf7FlVRDg_HyBOuvRBna76fTKyRMBX8AFOEJUyPRnRuwtqUI3EtrA9DDMqoxP/s1600/IMG_20190326_193335.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibsJUVVullRX15bw2AwZpUDlegBsIZSq0uGxdJpCnnUkkdz-BtGurit6EZNk3T4yQBaVqDeoCPUSp0oB1bf7FlVRDg_HyBOuvRBna76fTKyRMBX8AFOEJUyPRnRuwtqUI3EtrA9DDMqoxP/s400/IMG_20190326_193335.jpg" width="400" /></a></div>
<br />
<br />
<br />
SOURCE CODE:<br />
<br />
/*<br />
V U 3 X V R <br />
Si5351 Clock Generator using ATtiny13<br />
Programmed By : Ram Sankar Pillai<br />
Date : 25-June-2018<br />
Version : 1.0<br />
Microcontroller Clock Speed = 1.2MHz using internal oscillator 9.6MHz/8 = 1.2MHz<br />
8bit Timer0 overflow interrupt set to occur every 0.012Secons = 12millis<br />
I2C data transfer using BIT-BANG method.<br />
<br />
;******************************************************************************************** <br />
*/<br />
.nolist<br />
.include "tn13def.inc"<br />
.list<br />
<br />
;**** Ports ****<br />
<br />
.equ SDAPORT = PORTB<br />
.equ SDABIT = PORTB0<br />
.equ SDADDR = DDRB<br />
.equ SDAPIN = PINB<br />
<br />
.equ SCLPORT = PORTB<br />
.equ SCLBIT = PORTB1<br />
.equ SCLDDR = DDRB<br />
.equ SCLPIN = PINB<br />
<br />
.equ txPORT = PORTB<br />
.equ txBIT = PORTB2<br />
.equ txDDR = DDRB<br />
.equ txPIN = PINB<br />
<br />
.equ keyPORT = PORTB<br />
.equ keyBIT = PORTB4<br />
.equ keyDDR = DDRB<br />
.equ keyPIN = PINB<br />
<br />
.equ b_dir = 0 ; transfer direction bit in i2cadr<br />
.equ txFlagBit = 0 ; BIT0 of flagRegister SRAM # 128<br />
.equ txDelayTimeFlagBit = 1 ; BIT1 of RX/TX switching delay time<br />
;**** Registers ****<br />
.def i2cdata = r17 ; I2C data transfer register<br />
.def i2cadr = r18 ; I2C address and direction register<br />
<br />
.def regNum = r20<br />
.def regVal = r21<br />
<br />
.def A = r16<br />
;.def lastFreqVal = r17<br />
;.def currentFreqVal = r18<br />
;.def adcFreqByte1 = r19<br />
;.def adcFreqByte2 = r20<br />
;.def adcFreqByte3 = r21<br />
.def btnCount = r22<br />
.def currentBtnAdcVal = R23<br />
<br />
.def tempFreqByte1 = R25<br />
.def tempFreqByte2 = R26<br />
.def tempFreqByte3 = R27 <br />
<br />
.def counter = R30<br />
;********** Division def *****************<br />
.def remainder1 = R0 <br />
.def remainder2 = R1 <br />
.def remainder3 = R2<br />
.def remainder4 = R3 <br />
.def remainder5 = R4 <br />
.def remainder6 = R5 <br />
<br />
.def dividend1 = r16<br />
.def dividend2 = r17 <br />
.def dividend3 = r18 <br />
.def dividend4 = r19 <br />
.def dividend5 = r20<br />
.def dividend6 = r21 <br />
<br />
.def divisor1 = r24 <br />
.def divisor2 = r25 <br />
.def divisor3 = r26 <br />
.def divisor4 = r27<br />
.def divisor5 = r28<br />
.def divisor6 = r29<br />
<br />
;********** Multiply def ******************<br />
.def ANS1 = R0 ;64-Bit Answer<br />
.def ANS2 = R1 ;<br />
.def ANS3 = R2 ;<br />
.def ANS4 = R3 ;<br />
.def ANS5 = R4 ;<br />
.def ANS6 = R5 ;<br />
.def ANS7 = R6 ;<br />
.def ANS8 = R7 ;<br />
<br />
.def A1 = R16 ;Multiplicand<br />
.def A2 = R17 ;<br />
.def A3 = R18 ;<br />
.def A4 = R19 ;<br />
.def B1 = R20 ;Multiplier<br />
.def B2 = R21 ;<br />
.def B3 = R22 ;<br />
.def B4 = R23 ;<br />
<br />
.def C = R24 ;Loop Counter <br />
<br />
.def freqByte1 = R8 ; do not change as it is not deleted by CLEAR ALL<br />
.def freqByte2 = R9<br />
.def freqByte3 = R10<br />
;.def freqByte4 = R11<br />
<br />
;___________________ START OF SRAM ADDRESS _____________________________________<br />
.DSEG<br />
aByte1: .byte 1<br />
aByte2: .byte 1<br />
<br />
bByte1: .byte 1<br />
bByte2: .byte 1<br />
bByte3: .byte 1<br />
bByte4: .byte 1<br />
b48bit1: .byte 1<br />
b48bit2: .byte 1<br />
b48bit3: .byte 1<br />
b48bit4: .byte 1<br />
b48bit5: .byte 1<br />
b48bit6: .byte 1<br />
p1Byte1: .byte 1<br />
p1Byte2: .byte 1<br />
<br />
p2Byte1: .byte 1<br />
p2Byte2: .byte 1<br />
p2Byte3: .byte 1<br />
<br />
aTimes128B1: .byte 1<br />
aTimes128B2: .byte 1<br />
<br />
bTimes128b1: .byte 1<br />
bTimes128b2: .byte 1<br />
bTimes128b3: .byte 1<br />
bTimes128b4: .byte 1<br />
<br />
bTimes128byC: .byte 1<br />
<br />
cTimes128bbyC1: .byte 1<br />
cTimes128bbyC2: .byte 1<br />
cTimes128bbyC3: .byte 1<br />
cTimes128bbyC4: .byte 1<br />
<br />
synth: .byte 1<br />
flagRegister: .byte 1<br />
lastFreqVal: .byte 1<br />
currentFreqVal: .byte 1<br />
<br />
temp1: .byte 1<br />
temp2: .byte 1 <br />
<br />
.equ pllFreq = 810000000<br />
.equ fr1 = 2970000+700<br />
.equ fr2 = 7022300<br />
<br />
;___________________________________________________________________________<br />
<br />
.cseg<br />
.ORG 0x000 RJMP onReset ;RESET VECTOR<br />
.ORG 0x003 RJMP TIMER0_OVF<br />
<br />
;___________________________________________________________________________<br />
;*************************************<br />
; TIMER 0 OVERFLOW INTERUPT ROUTINE *<br />
;*************************************<br />
TIMER0_OVF: ; 0.012 seconds; @1.2MHz clk; 12 milli second<br />
PUSH A<br />
INC counter<br />
LDI A, 0b0010_0011 ; select ADC 03 = Tunning<br />
RCALL readADC<br />
STS currentFreqVal, A<br />
LDI A,0x8B ;0x1F ;SET THE COMPARE REGISTER<br />
OUT TCNT0,A<br />
POP A<br />
RETI<br />
<br />
;___________________________________________________________________________<br />
onReset:<br />
LDI A, LOW(RAMEND)<br />
OUT SPL, A <br />
<br />
; LDI A,0b0000_0011 ; CLK 1/64<br />
LDI A,0b0000_0101 ; CLK 1/1024<br />
OUT TCCR0B, A<br />
LDI A,0b0000_0010 ;ENABLE TIMER1 OVF, TIMER0_OVF <br />
OUT TIMSK0, A<br />
LDI A1,0x1F ;SET THE COMPARE REGISTER<br />
OUT TCNT0, A<br />
<br />
LDI A, 0b1000_0011 ; ADC clock should be 100 to 200KHz, Processor Clock Speed / 100k = x(round up to next division factor) <br />
OUT ADCSRA, A ; ADC enable, ADC prescaler division factor 10<br />
<br />
SEI<br />
SBI txDDR, txBIT<br />
CBI keyDDR, keyBIT<br />
SBI keyPORT, keyBIT<br />
;************ I2C INIT *********************<br />
SBI SDADDR, SDABIT ; as output<br />
SBI SCLDDR, SCLBIT ; as output<br />
<br />
;************ PLL SETTINGS ******************* <br />
; Except PLL parameter #29, 32 all are ZERO only.<br />
; 810MHZ DIV 27 MHz, then a=30; b=0; c=0<br />
; becomes P1 = 3328 0b0000_1101_0000_0000<br />
LDI regNum, 29<br />
LDI regVal, 0b0000_1101<br />
RCALL i2cSend<br />
<br />
; LDI regNum, 32<br />
; LDI regVal, 0b0000_1101<br />
; RCALL i2cSend<br />
<br />
; ******* One Time Settings *****************<br />
LDI regNum, 16 ; CLK0 enable<br />
LDI regVal, 0b0100_1101<br />
RCALL i2cSend <br />
<br />
; LDI regNum, 17 ; CLK1 disable<br />
; LDI regVal, 0b0100_1101<br />
; RCALL i2cSend <br />
<br />
LDI regNum, 18 ; CLK2 enable<br />
LDI regVal, 0b0100_1101<br />
RCALL i2cSend <br />
<br />
LDI regNum, 177 ; PLL Reset<br />
LDI regVal, 0xAC<br />
RCALL i2cSend<br />
<br />
LDI regNum, 183 ; capacitor value<br />
LDI regVal, 0b1101_0010<br />
RCALL i2cSend<br />
<br />
LDI regNum, 03 ; clock disable<br />
LDI regVal, 0b1111_1110<br />
RCALL i2cSend<br />
;___________________ MAIN PROGRAM STARTS HERE ________________________________<br />
main:<br />
SBIS keyPIN, keyBIT<br />
RJMP keyPressed<br />
RJMP keyNotPressed<br />
<br />
keyPressed:<br />
LDS A, flagRegister<br />
SBRC A, txFlagBIT ; skip next if txFlagBIT is 0. ie was in RX mode<br />
RJMP checkFreqChange ; Do nothin, go to main loop<br />
SBI txPORT, txBIT<br />
LDI regNum, 03 ; clock enable<br />
LDI regVal, 0b1111_1010<br />
RCALL i2cSend<br />
LDS A, flagRegister<br />
SBR A, (1<<txFLagBIT) | (1<<txDelayTimeFlagBit)<br />
STS flagRegister, A<br />
RJMP checkFreqChange<br />
<br />
keyNotPressed:<br />
LDS A, flagRegister<br />
SBRS A, txFlagBIT ; skip next if txFlagBIT is 1. ie was in TX mode<br />
RJMP checkDelayTimeFlag ; Do nothing, go to main loop<br />
LDI regNum, 03 ; clock enable<br />
LDI regVal, 0b1111_1110<br />
RCALL i2cSend<br />
LDS A, flagRegister<br />
CBR A, 1<<txFLagBIT<br />
STS flagRegister, A<br />
CLR counter<br />
RJMP checkFreqChange<br />
<br />
checkDelayTimeFlag:<br />
LDS A, flagRegister<br />
SBRS A, txDelayTimeFlagBit<br />
RJMP checkFreqChange<br />
CPI counter, 4 ; 350 millis delay<br />
BRLO main ; keyChecked<br />
CBI txPORT, txBIT<br />
LDS A, flagRegister<br />
CBR A, 1<<txDelayTimeFlagBit<br />
STS flagRegister, A<br />
; RJMP main<br />
<br />
checkFreqChange:<br />
LDS A, currentFreqVal<br />
LDS R17, lastFreqVal<br />
CP R17, A<br />
BREQ main<br />
STS lastFreqVal, A <br />
CLI<br />
LDS R17, currentFreqVal<br />
CLR XL<br />
CLR XH<br />
mapStart:<br />
INC XH<br />
SUBI XL, -10<br />
CPI XH, 25<br />
BRLT ok<br />
RJMP mapEnd<br />
OK:<br />
CP R17, XL<br />
BRSH mapStart<br />
mapEnd:<br />
<br />
multiply8x8:<br />
.def ansL = R0<br />
.def ansH = R1<br />
.def multiply8a = R26 ; A<br />
.def multiply8b = R27 ; B<br />
MOV multiply8a, XL ;currentFreqVal<br />
LDI multiply8b, 100<br />
LDI R28, 8 ; counter for multiply ; C<br />
CLR ansH<br />
MOV ansL, multiply8b<br />
LSR ANSL<br />
loopMul:<br />
BRCC skipMul<br />
ADD ANSH, multiply8a<br />
skipMul:<br />
ROR ANSH<br />
ROR ANSL<br />
DEC R28<br />
BRNE loopMul<br />
;************************ CLK 1 ************************** <br />
LDI tempFreqByte1, LOW(fr1)<br />
LDI tempFreqByte2, byte2(fr1)<br />
LDI tempFreqByte3, byte3(fr1)<br />
<br />
MOV freqByte1, tempFreqByte1<br />
MOV freqByte2, tempFreqByte2<br />
MOV freqByte3, tempFreqByte3<br />
<br />
PUSH ansL<br />
PUSH ansH<br />
<br />
ADD freqByte1, ansL<br />
ADC freqByte2, ansH<br />
LDI A, 0<br />
ADC freqByte3, A<br />
<br />
LDI A, 42 ; setting frequency on CLK0<br />
STS synth, A<br />
RCALL arithmatic<br />
<br />
;********************* CLK 2 *******************************<br />
POP ansH<br />
POP ansL<br />
LDI tempFreqByte1, LOW(fr2)<br />
LDI tempFreqByte2, byte2(fr2)<br />
LDI tempFreqByte3, byte3(fr2)<br />
<br />
MOV freqByte1, tempFreqByte1<br />
MOV freqByte2, tempFreqByte2<br />
MOV freqByte3, tempFreqByte3<br />
<br />
SUB freqByte1, ansL<br />
SBC freqByte2, ansH<br />
LDI A, 0<br />
SBC freqByte3, A<br />
<br />
LDI A, 58 ; ; setting frequency on CLK2<br />
STS synth, A<br />
RCALL arithmatic<br />
<br />
SEI<br />
rjmp main<br />
<br />
;______________________ ENF OF MAIN PROGRAM ____________________________<br />
;************************************************<br />
; Subprogram delay *<br />
;************************************************<br />
;delay:<br />
; CLR counter<br />
;delayNotFinished:<br />
; CP counter, A<br />
; BRLO delayNotFinished<br />
;RET<br />
;_________________________________________________________________________<br />
readADC:<br />
OUT ADMUX, A ; AVcc, left adjust( we need just ADCH only), ADC0<br />
SBI ADCSRA, ADSC ; start ADC conversion<br />
keep_pooling:<br />
SBIS ADCSRA, ADIF ; look for ADC conversion finish flag ADIF<br />
RJMP keep_pooling<br />
SBI ADCSRA, ADIF <br />
IN A, ADCH ; load ADCH into A<br />
RET<br />
;_________________________________________________________________________<br />
;************************************************<br />
; Set Frequencey subroutines *<br />
;************************************************<br />
setFrequency:<br />
<br />
; P1 Registers<br />
; #46 #45 #44<br />
; MS0_P1[0:7], MS0_P1[15:8], MS0_P1[17:16]<br />
; p1Byte1 p1Byte2, p1Byte3 <br />
; when freq is > 2MHz the P1 will be less than 16bit, hence<br />
; bit 17:16 will become zero.<br />
; #44 also contains R divider value, which is Zero in our case<br />
; P2 Registers<br />
; #49 #48 #47<br />
; MS0_P2[0:7], MS0_P2[15:8], MS0_P2[19:16] [3:0]<br />
; p2Byte1 p2Byte2, p2Byte3 <br />
<br />
; P3 registers<br />
; #43 #42 #47<br />
; MS0_P3[0:7], MS0_P3[15:8], MS0_P3[19:16] [7:4]<br />
; p1Byte1 p1Byte2, p1Byte3 <br />
<br />
LDS regNum, synth ; #42, #50, #58<br />
LDI regVal, 0b1111_1111<br />
RCALL i2cSend <br />
<br />
INC regNum ; #43<br />
LDI regVal, 0b1111_1111<br />
RCALL i2cSend<br />
<br />
INC regNum ; #44 this parameter is always ZERO<br />
; LDI regNum, 44<br />
; LDI regVal, 0x00<br />
; RCALL i2cSend<br />
<br />
INC regNum ; #45<br />
LDS regVal, p1Byte2<br />
RCALL i2cSend<br />
<br />
INC regNum ; #46<br />
LDS regVal, p1Byte1<br />
RCALL i2cSend<br />
<br />
INC regNum ; #47<br />
LDS A, p2Byte3<br />
ORI A, 0b1111_0000<br />
MOV regVal, A<br />
RCALL i2cSend<br />
<br />
INC regNum ; #48<br />
LDS regVal, p2Byte2<br />
RCALL i2cSend<br />
<br />
INC regNum ; #49<br />
LDS regVal, p2Byte1<br />
RCALL i2cSend<br />
RET<br />
;*_____________________________________________________________<br />
i2cSend:<br />
ldi i2cadr,0xc0;+i2cwr ; Set device address and write<br />
rcall i2c_start ; Send start condition and address<br />
MOV i2cdata,regNum ; Write word address (0x00)<br />
rcall i2c_do_transfer ; Execute transfer<br />
MOV i2cdata,regVal ; Set write data to 01010101b<br />
rcall i2c_do_transfer ; Execute transfer<br />
rcall i2c_stop ; Send stop condition<br />
RET<br />
;_____________________________________________________________<br />
i2c_start: <br />
mov i2cdata,i2cadr ; copy address to transmitt register<br />
sbi SDADDR,SDABIT ; force SDA low<br />
rcall i2cDelay ; quarter period delay<br />
i2c_write:<br />
sec ; set carry flag<br />
rol i2cdata ; shift in carry and out bit one<br />
rjmp i2c_write_first<br />
i2c_write_bit:<br />
lsl i2cdata ; if transmit register empty<br />
i2c_write_first:<br />
breq i2c_get_ack ; goto get acknowledge<br />
sbi SCLDDR,SCLBIT ; force SCL low<br />
brcc i2c_write_low ; if bit high<br />
nop ; (equalize number of cycles)<br />
cbi SDADDR,SDABIT ; release SDA<br />
rjmp i2c_write_high<br />
i2c_write_low: ; else<br />
sbi SDADDR,SDABIT ; force SDA low<br />
rjmp i2c_write_high ; (equalize number of cycles)<br />
i2c_write_high:<br />
rcall i2cDelay ; half period delay<br />
cbi SCLDDR,SCLBIT ; release SCL<br />
rcall i2cDelay ; half period delay<br />
rjmp i2c_write_bit<br />
i2c_get_ack:<br />
sbi SCLDDR,SCLBIT ; force SCL low<br />
cbi SDADDR,SDABIT ; release SDA<br />
rcall i2cDelay ; half period delay<br />
cbi SCLDDR,SCLBIT ; release SCL<br />
i2c_get_ack_wait:<br />
sbis SCLPIN,SCLBIT ; wait SCL high <br />
;(In case wait states are inserted)<br />
rjmp i2c_get_ack_wait<br />
clc ; clear carry flag<br />
sbic SDAPIN,SDABIT ; if SDA is high<br />
sec ; set carry flag<br />
rcall i2cDelay ; half period delay<br />
RET<br />
;*_____________________________________________________________<br />
i2c_do_transfer:<br />
sbrs i2cadr,b_dir ; if dir = write<br />
rjmp i2c_write ; goto write data<br />
i2c_stop:<br />
sbi SCLDDR,SCLBIT ; force SCL low<br />
sbi SDADDR,SDABIT ; force SDA low<br />
rcall i2cDelay ; half period delay<br />
cbi SCLDDR,SCLBIT ; release SCL<br />
rcall i2cDelay ; quarter period delay<br />
cbi SDADDR,SDABIT ; release SDA<br />
rcall i2cDelay ; half period delay<br />
<br />
RET<br />
;*_____________________________________________________________<br />
i2cDelay:<br />
NOP<br />
NOP<br />
NOP<br />
NOP<br />
RET<br />
;_____________________________________________________________<br />
;******************************************************<br />
; P1, P2, P3 Arithmatic Functions *<br />
;******************************************************<br />
arithmatic: <br />
RCALL clearAll<br />
ldi dividend1, low(pllFreq) ;1 LS-Byte<br />
ldi dividend2, byte2(pllFreq) ;1<br />
ldi dividend3, byte3(pllFreq) ;1<br />
ldi dividend4, byte4(pllFreq) ;1 MS-Byte<br />
MOV divisor1, freqByte1 ;1 LS-Byte <br />
MOV divisor2, freqByte2 ;1<br />
MOV divisor3, freqByte3 ;1<br />
CLR divisor4;, freqByte4 ;1 MS-Byte <br />
; this is a + b/c = PLLFreq / Freq<br />
rcall divideU32byU32r ;- result (dividend4-dividend1) should be 1000000 (1000000.49)<br />
STS aByte1, dividend1 ; hold value of " a "<br />
STS aByte2, dividend2<br />
MOV r12, remainder1<br />
MOV r13, remainder2<br />
MOV r14, remainder3<br />
MOV r15, remainder4<br />
<br />
RCALL clearAll ; aByte & bByte both TESTED OK<br />
;______________________________________________________________________________<br />
; remainder multiply 0xFFFFF<br />
MOV a1, r12<br />
MOV a2, r13<br />
MOV a3, r14<br />
MOV a4, r15<br />
ldi b1, low(0xFFFFF)<br />
ldi b2, byte2(0xFFFFF)<br />
ldi b3, byte3(0xFFFFF)<br />
RCALL multiply32x32<br />
MOV r12, ans1<br />
MOV r13, ans2<br />
MOV r14, ans3<br />
MOV r15, ans4<br />
STS b48bit5, ans5<br />
STS b48bit6, ans6<br />
RCALL clearAll<br />
<br />
;______________________________________________________________________________<br />
; divide by frequency<br />
MOV dividend1, r12<br />
MOV dividend2, r13<br />
MOV dividend3, r14<br />
MOV dividend4, r15<br />
LDS dividend5, b48bit5<br />
LDS dividend6, b48bit6<br />
<br />
MOV divisor1, freqByte1<br />
MOV divisor2, freqByte2<br />
MOV divisor3, freqByte3<br />
CLR divisor4;, freqByte4<br />
<br />
rcall divideU32byU32r<br />
<br />
STS bByte1, dividend1 ; hold value of " b "<br />
STS bByte2, dividend2<br />
STS bByte3, dividend3<br />
STS bByte4, dividend4 ; holds b final value<br />
RCALL clearAll<br />
<br />
;______________________________________________________________________________<br />
; b times 128<br />
LDS A1, bByte1<br />
LDS A2, bByte2<br />
LDS A3, bByte3<br />
LDS A4, bByte4<br />
LDI B1, 128;LOW(128)<br />
rcall multiply32x32 ; this is = b * 128 ; 32bit answer<br />
STS bTimes128b1, ANS1<br />
STS bTimes128b2, ANS2<br />
STS bTimes128b3, ANS3<br />
STS bTimes128b4, ANS4<br />
RCALL clearAll<br />
;______________________________________________________________________________<br />
LDS dividend1, bTimes128b1 <br />
LDS dividend2, bTimes128b2 <br />
LDS dividend3, bTimes128b3 <br />
LDS dividend4, bTimes128b4 <br />
<br />
ldi divisor1, low(0xFFFFF) ;1 LS-Byte <br />
ldi divisor2, byte2(0xFFFFF) ;1<br />
ldi divisor3, byte3(0xFFFFF) ;1<br />
rcall divideU32byU32r ; this result is = 128 * b / 1048575<br />
<br />
STS bTimes128byC, dividend1<br />
RCALL clearAll<br />
;______________________________________________________________________________<br />
; now it = 128 * a<br />
LDS A1, aByte1<br />
LDS A2, aByte2<br />
LDI B1, 128;LOW(128)<br />
RCALL multiply32x32 ; i'm getting 14720 ; we are interested in ans1 & ans2 only = 16bit<br />
MOV r12, ans1<br />
MOV r13, ans2<br />
RCALL clearAll<br />
;______________________________________________________________________________<br />
MOV add1L, r12<br />
MOV add1H, r13<br />
LDS add2L, bTimes128byC<br />
CLR add2H<br />
add add1l, add2l ;Add low bytes<br />
adc add1h, add2h<br />
STS temp1, add1L<br />
STS temp2, add1H<br />
RCALL clearAll<br />
;______________________________________________________________________________<br />
LDS sub1L, temp1<br />
LDS sub1H, temp2<br />
LDI sub2L, LOW(512)<br />
LDI sub2H, BYTE2(512)<br />
sub sub1l,sub2l ;Subtract low bytes<br />
sbc sub1h,sub2h ;Add high byte with carry<br />
STS p1Byte1, sub1L<br />
STS p1Byte2, sub1H ; this hold P1 Value.<br />
RCALL clearAll<br />
;______________________________________________________________________________<br />
; now it = 128 * b<br />
LDS A1, bByte1<br />
LDS A2, bByte2<br />
LDS A3, bByte3<br />
LDS A4, bByte4<br />
LDI B1, LOW(128)<br />
; LDI B2, BYTE2(128)<br />
RCALL multiply32x32 <br />
STS bTimes128b1, ANS1 <br />
STS bTimes128b2, ANS2<br />
STS bTimes128b3, ANS3<br />
STS bTimes128b4, ANS4<br />
RCALL clearAll<br />
;______________________________________________________________________________<br />
; now it = C *( 128 * b/c )<br />
LDS A1, bTimes128byC<br />
LDI B1, LOW(0xFFFFF)<br />
LDI B2, BYTE2(0xFFFFF)<br />
LDI B3, BYTE3(0xFFFFF)<br />
RCALL multiply32x32 <br />
MOV r12, ans1<br />
MOV r13, ans2<br />
MOV r14, ans3<br />
MOV r15, ans4<br />
RCALL clearAll<br />
;______________________________________________________________________________<br />
; Now subtraction of (128*b) - (c* 128*b/c)<br />
LDS sub1byte1, bTimes128b1<br />
LDS sub1byte2, bTimes128b2<br />
LDS sub1byte3, bTimes128b3<br />
LDS sub1byte4, bTimes128b4<br />
MOV sub2Byte1, r12<br />
MOV sub2Byte2, r13<br />
MOV sub2Byte3, r14<br />
MOV sub2Byte4, r15<br />
SUB sub1byte1,sub2byte1 ;Add the lower bytes together<br />
SBC sub1byte2,sub2byte2 ;Add the second bytes and include carry bit<br />
SBC sub1byte3,sub2byte3 ;Add the third bytes and include carry bit<br />
SBC sub1byte4,sub2byte4 ;Add the fourth bytes and include carry bit<br />
STS p2Byte1, sub1byte1 ; this on holds P2 values.<br />
STS p2Byte2, sub1byte2 <br />
STS p2Byte3, sub1byte3 <br />
RCALL setFrequency<br />
RET<br />
;______________________________________________________________________________<br />
<br />
;************************************************************<br />
; CLEAR ALL REGISTERS *<br />
;************************************************************<br />
clearAll: ; These are registers used in arithmatic functions.<br />
CLR R0<br />
CLR R1<br />
CLR R2<br />
CLR R3<br />
CLR R4<br />
CLR R5<br />
CLR R6<br />
CLR R7<br />
<br />
CLR R16<br />
CLR R17<br />
CLR R18<br />
CLR R19<br />
CLR R20<br />
CLR R21<br />
CLR R22<br />
CLR R23<br />
CLR R24<br />
CLR R25<br />
CLR R26<br />
CLR R27<br />
CLR R28<br />
CLR R29<br />
<br />
RET<br />
<br />
;**** add16 Register Variables<br />
.def add1l = r16<br />
.def add1h = r17<br />
.def add2l = r18<br />
.def add2h = r19<br />
<br />
;sub32 Register Variables<br />
.DEF sub1byte1 = R16 ;To hold low byte of value1<br />
.DEF sub1byte2 = R17 ;To hold second byte of value1<br />
.DEF sub1byte3 = R18 ;To hold third byte of value1<br />
.DEF sub1byte4 = R19 ;To hold fourth byte of value1<br />
.DEF sub2byte1 = R20 ;To hold low byte of value2<br />
.DEF sub2byte2 = R21 ;To hold second byte of value2<br />
.DEF sub2byte3 = R22 ;To hold third byte of value2<br />
.DEF sub2byte4 = R23 ;To hold fourth byte of value2<br />
<br />
;* "sub16" - Subtracting 16-bit registers <br />
.def sub1l = r16<br />
.def sub1h = r17<br />
.def sub2l = r18<br />
.def sub2h = r19<br />
;************************************************************<br />
; Start of 32 % 32 bit division *<br />
; http://www.avrfreaks.net/comment/4819#comment-4819 *<br />
;************************************************************<br />
; Dividend will hold the integer result<br />
divideU32byU32r: <br />
ldi counter,49 ;1 init loop counter <br />
divideU32byU32ra: <br />
sec ;1 set carry <br />
divideU32byU32rb: <br />
rol dividend1 ;1 shift left dividend <br />
rol dividend2 ;1 <br />
rol dividend3 ;1 <br />
rol dividend4 ;1 <br />
rol dividend5<br />
rol dividend6<br />
dec counter ;1 <br />
brne divideU32byU32rc ;1/2 <br />
ret ;4 <br />
<br />
divideU32byU32rc: <br />
rol remainder1 ;1 <br />
rol remainder2 ;1 <br />
rol remainder3 ;1 <br />
rol remainder4 ;1<br />
rol remainder5<br />
rol remainder6<br />
sub remainder1,divisor1 ;1 rem -= divisor <br />
sbc remainder2,divisor2 ;1 <br />
sbc remainder3,divisor3 ;1 <br />
sbc remainder4,divisor4 ;1 <br />
sbc remainder5,divisor5<br />
sbc remainder6,divisor6<br />
brcc divideU32byU32ra ;1/2 if res < 0 <br />
add remainder1,divisor1 ;1 restore remainder <br />
adc remainder2,divisor2 ;1 <br />
adc remainder3,divisor3 ;1 <br />
adc remainder4,divisor4 ;1 <br />
adc remainder5,divisor5<br />
adc remainder6,divisor6 <br />
clc ;1 clear carry <br />
rjmp divideU32byU32rb ;2 <br />
<br />
;************************************************************<br />
; Start of 32 x 32 bit multiplication *<br />
;************************************************************<br />
multiply32x32:<br />
; https://sites.google.com/site/avrasmintro/home/2b-basic-math<br />
MUL3232:<br />
SUB ANS8,ANS8 ;Clear ANS8 and Carry Flag<br />
MOV ANS1,B1 ;Copy Multiplier to Answer<br />
MOV ANS2,B2 ;<br />
MOV ANS3,B3 ;<br />
MOV ANS4,B4 ; <br />
LDI C,33 ;Set Loop Counter to 33 <br />
LOOP: <br />
ROR ANS4 ;Shift Multiplier to right<br />
ROR ANS3 ;<br />
ROR ANS2 ;<br />
ROR ANS1 ;<br />
DEC C ;Decrement Loop Counter <br />
BREQ DONE ;Check if all bits processed <br />
BRCC SKIP ;If Carry Clear skip addition<br />
ADD ANS5,A1 ;Add Multipicand into Answer<br />
ADC ANS6,A2 ;<br />
ADC ANS7,A3 ;<br />
ADC ANS8,A4 ;<br />
SKIP:<br />
ROR ANS8 ;Shift high bytes of Answer<br />
ROR ANS7 ;<br />
ROR ANS6 ;<br />
ROR ANS5 ;<br />
RJMP LOOP<br />
DONE:<br />
RET<br />
;************************ END of 32 x 32 bit Multiplication ************************<br />
<br />
<br />
<br />Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com2tag:blogger.com,1999:blog-1893208595840871290.post-57298173765878599242018-10-08T12:59:00.000+05:302018-10-09T12:20:34.832+05:30Homebrew 5 Watts 40m CW Transceiver Using TIA Amplifiers. Si5351 Based Superhetrodyne Receiver<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivg2T7vwQR79XL2KWJCxowKN4j22Cu54N7iBrUyBNtY92BJaj5_3-UnkYxn3mtoBRXc8tQegnqPL-5ubBbo2F9kDrh3-9GgCIon7mMid8FiYPull8klvTCE0sVajxNyW4leftyR-9CrzJL/s1600/VU3XVR-40m-CW-TXVR-5W_001.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="360" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivg2T7vwQR79XL2KWJCxowKN4j22Cu54N7iBrUyBNtY92BJaj5_3-UnkYxn3mtoBRXc8tQegnqPL-5ubBbo2F9kDrh3-9GgCIon7mMid8FiYPull8klvTCE0sVajxNyW4leftyR-9CrzJL/s1600/VU3XVR-40m-CW-TXVR-5W_001.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">All design ideas from the EMRFD book. Thanks to W7ZOI, KK7B, W7PUA. And i'm blessed to get this book in India at a second hand book seller. I told him to reserve any radio related books, one fine eve he called me about this book. I also bought ARRL 2011 book. If i'm not using the design concept from this book, then its a shame on having the book. So, here is my QRP Project.. </td></tr>
</tbody></table>
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhncd1OJzJ9s0zhiA8NPpF8hb9AOgeOz0HLtj9uRPFzaEm69QsBH-BP3HESbOpQhqghftNYXFxkHAKXgGP2ggUNELheB9R7HWFtvIqJfrspx9ZUDPx7izmZ0q_AOeXYJIRdrLKDmYPYg2ir/s1600/VU3XVR-40m-CW-TXVR-5W_002.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="360" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhncd1OJzJ9s0zhiA8NPpF8hb9AOgeOz0HLtj9uRPFzaEm69QsBH-BP3HESbOpQhqghftNYXFxkHAKXgGP2ggUNELheB9R7HWFtvIqJfrspx9ZUDPx7izmZ0q_AOeXYJIRdrLKDmYPYg2ir/s1600/VU3XVR-40m-CW-TXVR-5W_002.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">1st design requirement is, front facing 4" speaker. No compromise.</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilRcjJKXmTqRsP014ZCPmsLcUHVAnt0D0xJCSUGiPBroA4kdFhX26ga_Wk98233PKG2qpeRKCx1mAFyPlw-O_7kPA13I0tPAujFPUUWnYLF65VuZfcbssIVF43VHBpMQroCsvAL8kxQiLB/s1600/VU3XVR-40m-CW-TXVR-5W_003.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="270" data-original-width="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilRcjJKXmTqRsP014ZCPmsLcUHVAnt0D0xJCSUGiPBroA4kdFhX26ga_Wk98233PKG2qpeRKCx1mAFyPlw-O_7kPA13I0tPAujFPUUWnYLF65VuZfcbssIVF43VHBpMQroCsvAL8kxQiLB/s1600/VU3XVR-40m-CW-TXVR-5W_003.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I wanted this to be a self powered, no need to search for DC adapter. The transformer salvaged from old HI-FI cassette player. 15V 2A. I used 12V regulated power supply for TIA chain. Rest using unregulated 17V. </td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHDg-HjaRP2RWVyUXZgiwhR8cy-TdA3PQEQVWOZZlh6r0rEuOQRgtZyMnvtqq7uG7FpfPurv5fCOr8Bra8IUM1PFD2dJ0S52_5u7yYJQMjKaT7lXIOo7np0B49fwTQ6gNKFvhdezpVBQ4K/s1600/VU3XVR-40m-CW-TXVR-5W_004.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="270" data-original-width="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHDg-HjaRP2RWVyUXZgiwhR8cy-TdA3PQEQVWOZZlh6r0rEuOQRgtZyMnvtqq7uG7FpfPurv5fCOr8Bra8IUM1PFD2dJ0S52_5u7yYJQMjKaT7lXIOo7np0B49fwTQ6gNKFvhdezpVBQ4K/s1600/VU3XVR-40m-CW-TXVR-5W_004.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Close up view</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWQYeYPYrQp02vNk8QFepJiDuMrYGgdcGxxCjV7oF3p-9yHUdW6_M-FLWgK0CPJc59KrGUd64TdaOMjcYUlvWTMx-gXbCRkRaIQlBZSPO0HGAdujOB6imWuL915zamxHVlJ_oh2Oixv_EA/s1600/VU3XVR-40m-CW-TXVR-5W_005.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="270" data-original-width="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWQYeYPYrQp02vNk8QFepJiDuMrYGgdcGxxCjV7oF3p-9yHUdW6_M-FLWgK0CPJc59KrGUd64TdaOMjcYUlvWTMx-gXbCRkRaIQlBZSPO0HGAdujOB6imWuL915zamxHVlJ_oh2Oixv_EA/s1600/VU3XVR-40m-CW-TXVR-5W_005.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">From right >> RX/TX antenna relay >> 40m BPf >> 1st TIA amp >> VFO diode ring mixer >>10MHz ladder filter >> 2nd TIA amp >> 10MHz BFO >> 2nd diode ring mixer >> 2N2222 preamp >> audio power amp ><br />
ULN2003 for all relay switching</td></tr>
</tbody></table>
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKx-9AsZ6xJvOxKbJCRY3NYwOf8Bvw384iHSg9-oMNKiV-L_Jj3a3uPlvjIKUq47MpU80_NBhHYL8vg5nQlhyOuwYEb62xhNCG9oL_puLPDq7rczWKDgyM4yrbGNzqWAU3vi3jeaXElSsx/s1600/VU3XVR-40m-CW-TXVR-5W_006.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="270" data-original-width="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKx-9AsZ6xJvOxKbJCRY3NYwOf8Bvw384iHSg9-oMNKiV-L_Jj3a3uPlvjIKUq47MpU80_NBhHYL8vg5nQlhyOuwYEb62xhNCG9oL_puLPDq7rczWKDgyM4yrbGNzqWAU3vi3jeaXElSsx/s1600/VU3XVR-40m-CW-TXVR-5W_006.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Transmitter stage. >> 2N2222 >> BD139 >> 2SC1971 >> 5th order LPF . 2SC1971 gives spurr free 5 watts clean output with 17V 2A. I connect SI5351 clock output directly to 2N2222. All are TV balun cores. Cause thats what i have.</td></tr>
</tbody></table>
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikNl5X7al7oBT6FvGBLRhwwNOPZV8bb5LSFTtSw67sYycZtnkhLNaQa1MKicwhTOmg33cW-6WMXTIMUqoDLAchoGw6WHisXBsjs61M9mMN-vEeUHG2d_0Payhl5W-ZNw9WqVmlGJXtiKMc/s1600/VU3XVR-40m-CW-TXVR-5W_007.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="270" data-original-width="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikNl5X7al7oBT6FvGBLRhwwNOPZV8bb5LSFTtSw67sYycZtnkhLNaQa1MKicwhTOmg33cW-6WMXTIMUqoDLAchoGw6WHisXBsjs61M9mMN-vEeUHG2d_0Payhl5W-ZNw9WqVmlGJXtiKMc/s1600/VU3XVR-40m-CW-TXVR-5W_007.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Side tone oscillator , Power supply and audio amplifier close up view</td></tr>
</tbody></table>
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi5aFwhADFIa5fXFK4a4MFeiN3L_5eAjpWwzMAllmt3S6o3NpDiZBORA4xz0uWGdEH81GlJZhNDube6vXpYW5qAStmcf8JfOWjKe6pBiQXTWLca7ffPFLC97TTSz86zb-Dui7Vx2vNiyGL/s1600/VU3XVR-40m-CW-TXVR-5W_008.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="360" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi5aFwhADFIa5fXFK4a4MFeiN3L_5eAjpWwzMAllmt3S6o3NpDiZBORA4xz0uWGdEH81GlJZhNDube6vXpYW5qAStmcf8JfOWjKe6pBiQXTWLca7ffPFLC97TTSz86zb-Dui7Vx2vNiyGL/s1600/VU3XVR-40m-CW-TXVR-5W_008.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This is my own SI5351 clock generator board using ATMega8. ( I Hate arduino. ). I'm using C language in this project, but assembly version is in progress. You can find details about this PCB on this blog, look for SI5351 DDS board..</td></tr>
</tbody></table>
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp0OXorvISVjR4NK1diiVNeb03Sc1lbDTscW4PU11d6Gy5OmuEw8hc_gL3cVp9WhXa2c7eAug9-qrYGYPgzmC2M00CwTxh7u1mIoNwgL-qJE-Fo1yW-ME-EsjZ8e7CgvMo95djOvmSplSr/s1600/VU3XVR-40m-CW-TXVR-5W_009.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="360" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp0OXorvISVjR4NK1diiVNeb03Sc1lbDTscW4PU11d6Gy5OmuEw8hc_gL3cVp9WhXa2c7eAug9-qrYGYPgzmC2M00CwTxh7u1mIoNwgL-qJE-Fo1yW-ME-EsjZ8e7CgvMo95djOvmSplSr/s1600/VU3XVR-40m-CW-TXVR-5W_009.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The speaker is from old National Panasonic cassette player. Excellent audio quality.</td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNiH4ILZUkMQz7I8U5cmYKl0NGbda6QwDmmFC31gVnPDHJwqB-anQZS_XL58CEONibPGM8-Fr_7-0tdhCS8Ys7BNa2CmZ63WIUEyRwMyStWiam4dIl8Mdd6cbHizBCdUpbWAU-MGVA5XvF/s1600/VU3XVR-40m-CW-TXVR-5W_010.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" border="0" data-original-height="360" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNiH4ILZUkMQz7I8U5cmYKl0NGbda6QwDmmFC31gVnPDHJwqB-anQZS_XL58CEONibPGM8-Fr_7-0tdhCS8Ys7BNa2CmZ63WIUEyRwMyStWiam4dIl8Mdd6cbHizBCdUpbWAU-MGVA5XvF/s1600/VU3XVR-40m-CW-TXVR-5W_010.jpg" title="VU3XVR-40m-CW-TXVR-Homebrew-5W-QRP-Transceiver" /> </a><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdRk4Q9MNq5_359kQleL8g-GnFr_eTOK35UQ_baXR9zfyPxCZRIljWJO-68u8C20zCR_6fkVtn4hCGz3Y8MFXkCDvTiuc_xHON7yH4ud8B2qUeK7fYg4zdzPZQ9QUWyTrXL4DTGxyggbRW/s1600/TIA+AMP.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="360" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdRk4Q9MNq5_359kQleL8g-GnFr_eTOK35UQ_baXR9zfyPxCZRIljWJO-68u8C20zCR_6fkVtn4hCGz3Y8MFXkCDvTiuc_xHON7yH4ud8B2qUeK7fYg4zdzPZQ9QUWyTrXL4DTGxyggbRW/s1600/TIA+AMP.jpg" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Etched TIA Amp board, i made about ten PCBs for future uses. Around 1" x 1" approx</td></tr>
</tbody></table>
</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCyRaMy4PCZcZ7r0lZIn0c8KggwsYWw4iPlJFU48kOlV9xmy-D-DwbFlyZYTyoiSCyV7b-Oh2NsIvqCKoN3IZSy5KmSJ1UlAb32dTtSTJA6GI3hVJe4xqfH3B1XuUXna2mRB9uFqiN0GfO/s1600/TCVR+LAYOUT.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="640" data-original-width="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCyRaMy4PCZcZ7r0lZIn0c8KggwsYWw4iPlJFU48kOlV9xmy-D-DwbFlyZYTyoiSCyV7b-Oh2NsIvqCKoN3IZSy5KmSJ1UlAb32dTtSTJA6GI3hVJe4xqfH3B1XuUXna2mRB9uFqiN0GfO/s1600/TCVR+LAYOUT.jpg" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Initial layout. Modular PCB system makes very easy to assemble and troubleshoot. </td></tr>
</tbody></table>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNiH4ILZUkMQz7I8U5cmYKl0NGbda6QwDmmFC31gVnPDHJwqB-anQZS_XL58CEONibPGM8-Fr_7-0tdhCS8Ys7BNa2CmZ63WIUEyRwMyStWiam4dIl8Mdd6cbHizBCdUpbWAU-MGVA5XvF/s1600/VU3XVR-40m-CW-TXVR-5W_010.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"> </a>Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com6tag:blogger.com,1999:blog-1893208595840871290.post-48163400272887700262018-07-01T11:11:00.000+05:302018-07-17T14:25:31.568+05:30Si5351 DDS Clock Generator Using ATtiny13 Microcontroller with assembly language<h3 style="text-align: justify;">
<span style="font-family: inherit;">Introduction</span></h3>
<div style="text-align: justify;">
<span style="font-family: inherit;">This is my project to demonstrate the simplicity of assembly language program. Usually we need lot of program size when we use Arduino compilers and its library. I'm much worried about the program size and coding efficiency. So i wanted to try my skill to make assembly language code to interface Si5351 DDS. After the introduction of mobile phones we lost our memory capacity to store the phone numbers in our brain. Similarly Arduino is spoiling our programming skills. It of-course opened up the creativity on hardware side, but on the software side most of the peoples copy-paste. The first place to look for Arduino code is google. Most of us just copy somebody's library and use it. Arduino made everybody to hesitate to study the datasheet and follow the instruction. I'm not an anti-arduino man, but i want to blow the whistle. </span><br />
<br />
The challenge in this project is 1kB or less program size to interface Si5351 chip. I took the challenge myself. In arduino 1kB is just enough to blink LED with some sequence. Thats the beauty of Arduino ..LOL</div>
<br />
<h3>
Project Specification:</h3>
<ul>
<li>Use the Si5351 as variable frequency oscillator to cover CW range</li>
<ul>
<li>Ex : 7000 to 7050 KHz</li>
<li> 10100 to 10150 KHz</li>
<li> 14000 to 14050 KHz </li>
<li> 3500 to 3550 KHz etc... </li>
</ul>
<li>To change the frequency using potentiometer</li>
<li>CLK2 as beat frequency oscillator for required frequency </li>
<li>Control the VFO or ON/OFF the CLK0 output with morse key</li>
<li>1 digital output for TX/RX relay</li>
<li>Operating voltage is 3.3V for ATTiny13 and Si5351</li>
</ul>
<h3>
Circuit Diagram </h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh99G7xoezw8bIo3PKZf3gMN6oYQ26DU4yVD8c31b-ohDcDxt4wkAL0gQat72fn71Ugz2DeRiZo8rQRza365FbG-oZdUtXr5uDY2EVsquZq8jq6IPvVcitVDotZn2sMsbbYDPymTrMNglD6/s1600/Si5351-ATtiny13-DDS.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="696" data-original-width="1030" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh99G7xoezw8bIo3PKZf3gMN6oYQ26DU4yVD8c31b-ohDcDxt4wkAL0gQat72fn71Ugz2DeRiZo8rQRza365FbG-oZdUtXr5uDY2EVsquZq8jq6IPvVcitVDotZn2sMsbbYDPymTrMNglD6/s320/Si5351-ATtiny13-DDS.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBWiANGU-LO66M_0Wjw0I8yt6HUVYYqzQGMHyz1lH29hr6_p_jmZ3tx7MWZK9WMPOpQRb5dnFO5ANe2yvxh9oXcGbcH7DIF2Ly4YL_w2LNbiLh3uuT6Of8AAorBfmk0k4gy2uWzd3nC468/s1600/LM317-Regulator.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="436" data-original-width="596" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBWiANGU-LO66M_0Wjw0I8yt6HUVYYqzQGMHyz1lH29hr6_p_jmZ3tx7MWZK9WMPOpQRb5dnFO5ANe2yvxh9oXcGbcH7DIF2Ly4YL_w2LNbiLh3uuT6Of8AAorBfmk0k4gy2uWzd3nC468/s320/LM317-Regulator.jpg" width="320" /></a></div>
<h3>
Source Code :</h3>
<a href="https://drive.google.com/open?id=1ZcIOsl0bre3bflsb4GdEHthyniV8QQMT" target="_blank">80m - 3500 to 3550 KHz</a><br />
<a href="https://drive.google.com/open?id=1ZcIOsl0bre3bflsb4GdEHthyniV8QQMT" target="_blank">40m - 7000 to 7050 KHz</a><br />
<a href="https://drive.google.com/open?id=1ZcIOsl0bre3bflsb4GdEHthyniV8QQMT" target="_blank">30m - 10100 to 10150 KHz</a><br />
<a href="https://drive.google.com/open?id=1ZcIOsl0bre3bflsb4GdEHthyniV8QQMT" target="_blank">20m - 14000 to 14050 KHz </a><br />
<br />
<h3>
Youtube Video</h3>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/hcMF9SVjnp0/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/hcMF9SVjnp0?feature=player_embedded" width="320"></iframe></div>
<h3>
https://www.youtube.com/watch?v=hcMF9SVjnp0</h3>
<ul>
</ul>
Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com3tag:blogger.com,1999:blog-1893208595840871290.post-41772111201006797802017-11-01T15:09:00.001+05:302017-11-01T15:09:29.054+05:30Valve Audio Amplifier<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDk4LjRI6ry1IABVp69qoCkPfs57Bv2mW03FuHhtfFSjkhfTG7xeiavGkJqWdZmHh_R1KsF7daPMaKvTaHbQjPfuoUundg3Mryof8YfOOg_LnrGivE9ky33yN0lY2xmDVKcJjeNJ6KrJFU/s1600/476345355858610.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="450" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDk4LjRI6ry1IABVp69qoCkPfs57Bv2mW03FuHhtfFSjkhfTG7xeiavGkJqWdZmHh_R1KsF7daPMaKvTaHbQjPfuoUundg3Mryof8YfOOg_LnrGivE9ky33yN0lY2xmDVKcJjeNJ6KrJFU/s320/476345355858610.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsQ36hmtUGFzLMYRCklwAzxJpobU6MaxppVHeo3JpLian3gCPMDl1S-mqnkLVUqv35geCQoKVWWubqHRik8uXGt7wZWqdJr1l3nUlvaqlgPhddHMeLi_vJ4ciL0zcFXSdBFXGIW9Ace9mi/s1600/476345442525268.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="450" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsQ36hmtUGFzLMYRCklwAzxJpobU6MaxppVHeo3JpLian3gCPMDl1S-mqnkLVUqv35geCQoKVWWubqHRik8uXGt7wZWqdJr1l3nUlvaqlgPhddHMeLi_vJ4ciL0zcFXSdBFXGIW9Ace9mi/s320/476345442525268.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5OouTG0voFqY41dGJtRP63SCukjTfeCAY3OMPrYh2ccKWXnXG1EisL-g8T8TyhQTS7zdFGsaDErF_2rO9IAJowQuVvtfBGN4hGHbzgiC3cL8BiCWbrlLhTAmggoYlXFXdfOW8QnxfIjJy/s1600/476345529191926.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="450" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5OouTG0voFqY41dGJtRP63SCukjTfeCAY3OMPrYh2ccKWXnXG1EisL-g8T8TyhQTS7zdFGsaDErF_2rO9IAJowQuVvtfBGN4hGHbzgiC3cL8BiCWbrlLhTAmggoYlXFXdfOW8QnxfIjJy/s320/476345529191926.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVhrpt45-HXdkHustKq-MG0k8d0c088fKEtsi8Ux_sacsL6uhPxkRA-vOcgN6vOqtiYDOw1Bsieokm-jYp1KtzAq4HuRwz0qW-DQU7MpzmWoZrcjkF-AyNj5wcKlwl3ccmdfQK0Vo-mB27/s1600/476345542525258.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVhrpt45-HXdkHustKq-MG0k8d0c088fKEtsi8Ux_sacsL6uhPxkRA-vOcgN6vOqtiYDOw1Bsieokm-jYp1KtzAq4HuRwz0qW-DQU7MpzmWoZrcjkF-AyNj5wcKlwl3ccmdfQK0Vo-mB27/s320/476345542525258.jpg" width="320" /></a></div>
<br />Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com2tag:blogger.com,1999:blog-1893208595840871290.post-2307091266834804262017-11-01T15:08:00.000+05:302017-11-01T15:08:08.197+05:30Magnetic Loop Antenna For TransmittingAfter the success of my receiving magnetic loop, i wanted to give a try on transmitting loop. It has both good and bad results.<br />
<br />
One fine evening my friend OM Prem VU2RPC and myself started fabricating the magnetic loop to transmit on 40meter.<br />
<br />
Used 3/4" copper tube used for air conditioner with a length of 9 feet.<br />
Wide spaced variable capacitor 30-300pF salvaged from old valve transmitter<br />
2.5SQm wire for inner loop.<br />
Construction is as simple as possible. Just used 3/4" PVC pipes.<br />
Just maintained the outer loop dia as 3feet, and inner loop 0.5feet.<br />
<br />
We had about 10 contacts within 15 mins, it was sunday. The tough part is to keep the SWR.<br />
The loop is very narrow bandwidth, even 10KHz change is frequency will affect the SWR to 3:1. Really bad, so maintain power level not more than 50 watts.<br />
The RF from the antenna was also very severe, we can feel the radiation.<br />
<br />
Result :<br />
The overall result is,<br />
It is definitely compromised antenna for receiving. There is no doubt, we had no noise pick up, and very good gain also.<br />
<br />
For transmitting it not a good antenna. Unless we want to use just for only one frequency, like beacon. Because the bandwidth is too narrow. We have to adjust the variable capacitor for every change on frequency.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht0T0_CPVH4j3uKR8xNKhm4q7hd2JDkYCFuAeUL1tW60Uv4v6cWIp7kq-exYxdE0zj_QWzrfBQ9rrmvlZbdH7HXaewmO-3ffBz9jHOl7IWVITtbWNDbzochDWI54r1UgTskZRZB35lS0aT/s1600/601802853312859.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="450" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht0T0_CPVH4j3uKR8xNKhm4q7hd2JDkYCFuAeUL1tW60Uv4v6cWIp7kq-exYxdE0zj_QWzrfBQ9rrmvlZbdH7HXaewmO-3ffBz9jHOl7IWVITtbWNDbzochDWI54r1UgTskZRZB35lS0aT/s320/601802853312859.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRkrPfd8XNhaPAE2iNGxY8yH_w1SFHYoNVjnFkZ76bu2zXn5bwhEzxBGVz0-gINt-ovN3_PWltZzPoG4M0gDsmL8RzDM4xc8YH_D5dxsbvt4_pOAPkWKUrawXEDALxC3iO6YtpWFS6JaDJ/s1600/601802863312858.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="450" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRkrPfd8XNhaPAE2iNGxY8yH_w1SFHYoNVjnFkZ76bu2zXn5bwhEzxBGVz0-gINt-ovN3_PWltZzPoG4M0gDsmL8RzDM4xc8YH_D5dxsbvt4_pOAPkWKUrawXEDALxC3iO6YtpWFS6JaDJ/s320/601802863312858.jpg" width="240" /></a></div>
Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com0tag:blogger.com,1999:blog-1893208595840871290.post-26579735104229259622017-11-01T14:55:00.002+05:302017-11-01T14:55:37.526+05:30Magnetic Loop for Shortwave Receiving<h4>
DRM AIR +6100 KHz Shortwave receiving Magnetic loop antenna for 80m to 20m band</h4>
<div>
This is my trial during year 2015 to receive All India Radio DRM signal from Delhi, India. I'm located south India which is 3600Km far. The actual DRM on 6100KHz is transmit to cover 80Km surrounding Delhi. I made a simple Magnetic loop to get signal from that far. It was a huge seccess. Since i'm using magnetic loop the noise level was very low, and i can null alomost to zero. Below you can find the pictures of my AIR DRM 6100KHz.</div>
<div>
<br /></div>
<div>
I used old Oats container filled with sand on it as a post support. 3/4" PVC pipe, inside is a house electric wiring wire (3-20swg wire). Its about 3feet diameter. The outer loop is connected with a 365pF broadcast set variable capacitor. Inner loop is 1/2 feet dia. I used the same wire.</div>
<div>
<br /></div>
<div>
The radio Redsun (Kaito) RP-2100 comes with a IF out. I made a small converter to convert the RF to AF. Its inside the small black color box.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF1dKJ0ewIi5Ldnt1WCJBp1IEoULw7CCoxYinS-g7LbWy47wfGT9ZAgs-Tg5ycBmyPNMl70RIOelwPp048o10xXwVjryhe-SCVpsKCJyaLE_ELa8P6hj5a3yiiGz6xBWiBCRftoGAoKsbG/s1600/201207523372396.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF1dKJ0ewIi5Ldnt1WCJBp1IEoULw7CCoxYinS-g7LbWy47wfGT9ZAgs-Tg5ycBmyPNMl70RIOelwPp048o10xXwVjryhe-SCVpsKCJyaLE_ELa8P6hj5a3yiiGz6xBWiBCRftoGAoKsbG/s320/201207523372396.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIL1dZ-nIY-1POzSNR_79MZnlC44a60f-s9AZEG4hhAm6A0t3TCfYrLYAlL8JajMyOox2IBJzoB97hMXS4db79TmKOu8T_PXbD_8BXzEa-lktaygjRgfNdNDLjEDn_RMDTGFqKjdoBJGcV/s1600/201207596705722.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIL1dZ-nIY-1POzSNR_79MZnlC44a60f-s9AZEG4hhAm6A0t3TCfYrLYAlL8JajMyOox2IBJzoB97hMXS4db79TmKOu8T_PXbD_8BXzEa-lktaygjRgfNdNDLjEDn_RMDTGFqKjdoBJGcV/s320/201207596705722.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjO87k9px_asmNziTlBRZBr5Cc8hrPCTyF57W5qldO6Ar7szbmqK5RUbsAximpOcRmDJeT_-rxHYiPRJL7w1oEA2KRa-eo3dFfEYKBCpHnzQt-L8iucmb7TqnjvQpbHaE6UHndwBlsn44o/s1600/201207720039043.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjO87k9px_asmNziTlBRZBr5Cc8hrPCTyF57W5qldO6Ar7szbmqK5RUbsAximpOcRmDJeT_-rxHYiPRJL7w1oEA2KRa-eo3dFfEYKBCpHnzQt-L8iucmb7TqnjvQpbHaE6UHndwBlsn44o/s320/201207720039043.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br /></div>
Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com0tag:blogger.com,1999:blog-1893208595840871290.post-87540316593048291732017-01-07T12:48:00.000+05:302017-01-07T12:48:03.125+05:30VU3XVR Software Defined Radio SDR Using Si5351 DDS VFO and ATMega8 Microcontroller This is a demonstration on Software Defined Radio Using Si5351 DDS VFO. Original designer is Burkard Kainka, Author of Elektor SDR-2007. I Just modified VFO by using my own Si5351 based VFO, For more details please chek my blog vu3xvr dot blogspot dot in<br /><br />
<h3>
Specification :</h3>
Frequency Range : 3 to 30 MHz<br />
Mode : AM - SSB - CW - DRM<br />
Hardware Used : <a href="https://www.elektormagazine.de/magazine/elektor-201607/29066" style="font-weight: bold;">https://www.elektormagazine.de/magazine/elektor-201607/29066</a> <br />
Software Used : SDRadio by I2PHD available from this website<a href="http://digilander.libero.it/i2phd/sdradio/" target="_blank"> http://digilander.libero.it/i2phd/sdradio/</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju8-18gfS2q7RlnWamt8VA4Qz478HwiZzMy7XuLoTbzQEzjdhDjizQbFp2H09sv_xR9fOZaAnfOWS-6B7trSddop9EC0ye1g44IcpFo4YE4M1991SFjKaH0cZMJgry1V7qmprZIYfaSQug/s1600/VU3XVR+SDR-002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju8-18gfS2q7RlnWamt8VA4Qz478HwiZzMy7XuLoTbzQEzjdhDjizQbFp2H09sv_xR9fOZaAnfOWS-6B7trSddop9EC0ye1g44IcpFo4YE4M1991SFjKaH0cZMJgry1V7qmprZIYfaSQug/s320/VU3XVR+SDR-002.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqKwIiTUW7jw1ka6bVsEeDlhYd5xqDwAXjXqI21WheEDmjphnOaNXlY4_5bCt2CEp7OxBcU4PK31-pWmU783V8F7kuCRi48vyYWS4nKXnKUj0UYVRTb_YJTGjzouIXHCaCit_hA-Phj1Zm/s1600/VU3XVR+SDR-001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqKwIiTUW7jw1ka6bVsEeDlhYd5xqDwAXjXqI21WheEDmjphnOaNXlY4_5bCt2CEp7OxBcU4PK31-pWmU783V8F7kuCRi48vyYWS4nKXnKUj0UYVRTb_YJTGjzouIXHCaCit_hA-Phj1Zm/s320/VU3XVR+SDR-001.jpg" width="320" /></a></div>
<br /><br /><br /><br /><br />
<br />
<br />Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com0tag:blogger.com,1999:blog-1893208595840871290.post-3713114295510958192017-01-05T12:15:00.001+05:302017-02-07T15:59:39.235+05:30VU3XVR Si5351 DDS VFO to Use BITX40<div class="separator" style="clear: both; text-align: left;">
Click here for the video demo of sending CW using BITX (real carrier !!! not modified tone)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/S3OvxuAq_VA/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/S3OvxuAq_VA?feature=player_embedded" width="320"></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAIg0Xuqy_k_lgqMDs7JNamcetx_H8m6cyQ9nubvaFSvDh6SPBZuj9CsyR3YHfg7ErrseZnhbTUjVQjwimIMEQ5L-lKflYn-K7EUD3AvNhtS6wvNp6i8dA9Z7148xFXWsNS_rj8oJ6zSAL/s1600/VU3XVR-Si5351-DDS-VFO-000.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAIg0Xuqy_k_lgqMDs7JNamcetx_H8m6cyQ9nubvaFSvDh6SPBZuj9CsyR3YHfg7ErrseZnhbTUjVQjwimIMEQ5L-lKflYn-K7EUD3AvNhtS6wvNp6i8dA9Z7148xFXWsNS_rj8oJ6zSAL/s320/VU3XVR-Si5351-DDS-VFO-000.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsM7VRVkFITMT6kp-0c0faXRikvrSORaMknpl28ZD5T0b57YIURZs41OMarVWL1TmJYslSzzFMub9p9QEVCXhR6fDPxgRAuLGOYUI6aWMjfWoqG2KBeZkXO4A4edjXo9S0J7wQZDrex3zu/s1600/VU3XVR-Si5351-DDS-VFO-003.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsM7VRVkFITMT6kp-0c0faXRikvrSORaMknpl28ZD5T0b57YIURZs41OMarVWL1TmJYslSzzFMub9p9QEVCXhR6fDPxgRAuLGOYUI6aWMjfWoqG2KBeZkXO4A4edjXo9S0J7wQZDrex3zu/s320/VU3XVR-Si5351-DDS-VFO-003.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgglAdhcfomTiXUyI5fWVE4ONyzTzyQhf5gCU6_ZbIP9x5bMA61dEz3MC2e5VAz8d6E6lhbglaujbkbsFA2tgO1ZrtXlYnxvBPVNim1-hWinwQbwyOBTExXuYt-8US46r_BE8VOz-biMyXy/s1600/VU3XVR-Si5351-DDS-VFO-006.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgglAdhcfomTiXUyI5fWVE4ONyzTzyQhf5gCU6_ZbIP9x5bMA61dEz3MC2e5VAz8d6E6lhbglaujbkbsFA2tgO1ZrtXlYnxvBPVNim1-hWinwQbwyOBTExXuYt-8US46r_BE8VOz-biMyXy/s320/VU3XVR-Si5351-DDS-VFO-006.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaMmkq_FzJCsSTGLM-K8Znz3zF6gFRp5ZT8_UmyQBwGxVjCB5P_RH6uOuv8T6gPab6gJkBwV5lqmb5gHOJNNlNs7co6SOV7koslt2reWO_tC5OdJ-_-Ve8dI-KEgfkl8SHobpuWBrzqSXt/s1600/VU3XVR-Si5351-DDS-VFO-007.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaMmkq_FzJCsSTGLM-K8Znz3zF6gFRp5ZT8_UmyQBwGxVjCB5P_RH6uOuv8T6gPab6gJkBwV5lqmb5gHOJNNlNs7co6SOV7koslt2reWO_tC5OdJ-_-Ve8dI-KEgfkl8SHobpuWBrzqSXt/s320/VU3XVR-Si5351-DDS-VFO-007.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglMmlhhPVJzEpzZGtVCH5SAfKB-aIzs5EGHxc7zpTj7Mdij-ycZVZ2KYXgZp9R5PAAJSNw6k3wDpRwjp8c9vwktxWKKTtMVPM0r9Fkbm98d70Hlw0MUI0quAmVKr71w94xxtwECExo59km/s1600/VU3XVR-Si5351-DDS-VFO-008.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglMmlhhPVJzEpzZGtVCH5SAfKB-aIzs5EGHxc7zpTj7Mdij-ycZVZ2KYXgZp9R5PAAJSNw6k3wDpRwjp8c9vwktxWKKTtMVPM0r9Fkbm98d70Hlw0MUI0quAmVKr71w94xxtwECExo59km/s320/VU3XVR-Si5351-DDS-VFO-008.JPG" width="320" /></a></div>
Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com3tag:blogger.com,1999:blog-1893208595840871290.post-9195030976670599212016-03-11T21:49:00.000+05:302017-11-01T15:11:36.856+05:30Washing Machine Controller Using AVR ATMEL ATmega8 Microcontroller Using Assembly Language (NOT Arduino)<h2>
Washing Machine Controller Using AVR ATMEL ATmega8 Microcontroller Using Assembly Language (NOT Arduino)</h2>
<h3>
A brief history about why I decided to make my own controller :- </h3>
<div style="text-align: justify;">
I have a washing machine, with control board problems. I did changed the control board from OEM 2 times, each time it cost Rs.3900 + 300 for service charges. So, I spent Rs.8200/- since 2008. Actual machine cost is Rs.12,000/- Now in year 2016 the same control board SMPS failure . The washing machine model is Whirlpool Splash 55. Seems the designer of the board is a beer addict during design ! Very sad that not only for me for those having this model is having the same issue!!!. But this time I'm decided to design my own control board with my experiences. My control board costs less than Rs.500 and all of the components are from my junk box. not spent a paisa but time.</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/iCkHyHlh5oI/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/iCkHyHlh5oI?feature=player_embedded" width="320"></iframe></div>
<h3>
</h3>
<h3>
Basic operation sequence of a washing machine :-</h3>
There is just 4 relays to be controlled in a regular sequence, not a rocket science either. The basic operation sequence is like this<br />
<ol>
<li>Water filling (at actual time)</li>
<li>Agitronic soak (15mins)</li>
<li>First wash (15mins)</li>
<li>First drain (4mins)</li>
<li>Second wash or call it as first rinse (10mins)</li>
<li>Second drain (4mins)</li>
<li>Spin (5mins)</li>
<li>Buzzer chim (15sec)</li>
</ol>
There are lot of information available about the time taken for each operation from several washing machine manufacturer. But i referred Whirlpools manual and it recommends as below<br />
Program Time / Cycle time for each mode <br />
All values in minutes<br />
Agitronic Normal Speedy R+S S only<br />
Soak 20 - - - -<br />
Wash 20 20 9 - - <br />
Rinse 16 16 16 8 -<br />
Spin 8 8 6 6 6<br />
And there is a very nice recommendation from Bureau Of Energy Efficiency<br />
<a href="https://www.beestarlabel.com/Content/Files/Schedule12-WM.pdf" target="_blank">Energy Labeling Scheme For Washing Machines by Bureau Of Energy Efficiency</a><br />
https://www.beestarlabel.com/Content/Files/Schedule12-WM.pdf<br />
<br />
From the above given recommendation i choose following timings<br />
soakTime = 15 mins<br />
washTime = 15 mins (For one wash cycle)<br />
rinseTime = 8 mins<br />
spinTime = 5 mins<br />
At this point of time, there is no selector / program selector available on the controller. But it's on my wish list.<br />
<br />
<h3>
Why decided to use AVR Assembly language and not to use Arduino C</h3>
<div style="text-align: justify;">
For this washing machine controller i decided to use assembly language, and it'll be my first AVR assembly language project. I'm using AVR Studio 4.19 and ProgISP to compile and upload.</div>
<div style="text-align: justify;">
I personally do not recommend higher version of AVR Studio. V 4.19 is lite and there is not much improvement on ASM compiler between V4.19 and V6.2. (Both IDE's assembler version is 2.1.xx) <br />
Since 2006 i'm using Arduino, now i'm feeling limited with arduino resources when there is really a lot of things can be done with AVRs other line of products like ATtiny13, 2313, etc....Arduino will not help to develop codes for this. The size of HEX code for LedBlink in arduino is 890 bytes, the same LedBlink in assembly will be just 34 bytes !!!! Wow ahh.. Excess 856 bytes of code dumped inside my ATmega8 for nothing. When comes to industrial application the unwanted junk of code will generate lot of issues. That's why the Arduino's liquidCrystal library is not recommended by most of developers as it collide with interrupt cycle or millis() library. <br />
Arduino is for kids and new comers. For real time application Arduino is not the right tool to write my code. Best to go for ASM Assembly language for AVR. </div>
<br />
<h3>
Hardware setup</h3>
I had my own ATmega8 break out board with 6 inputs and 4 outputs. I'm using this pcbs for most of my project. Here is the schematic diagram of controller.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGCoso9Jg2Wwj7m57pOnoMnFopGBG2FE9JfYzNWrAaih2a3cNJ562jce3E7YO5T7hw5k-6brTBFl4Ya1q9P3S5OfjUOPFJdp5d8gQici_p1vpz6ll8HyqShAQCaLcFkLrU7SBDHB_6oHaV/s1600/AVR-ATMEL-ATmega8-Microcontroller-controllerd-washing-machine-+Using-Assembly-Language.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGCoso9Jg2Wwj7m57pOnoMnFopGBG2FE9JfYzNWrAaih2a3cNJ562jce3E7YO5T7hw5k-6brTBFl4Ya1q9P3S5OfjUOPFJdp5d8gQici_p1vpz6ll8HyqShAQCaLcFkLrU7SBDHB_6oHaV/s320/AVR-ATMEL-ATmega8-Microcontroller-controllerd-washing-machine-+Using-Assembly-Language.png" width="320" /></a></div>
<br />
<h4>
Inputs</h4>
Water level pressure switch<br />
Loading door open / close switch. (in my project, i'm not using this sensor)<br />
<h4>
Outputs</h4>
Buzzer<br />
Motor forward<br />
Motor reverse<br />
Water inlet solenoid<br />
Water drain traction motor<br />
( In my model Whirlpool Splash 55, Its single motor for slow spin and fast spin, it's the drain traction motor change the gear wheel between slow and fast spin )<br />
Wish list : heartbeat LED, sequence indication LEDs, start / pause button, EEPROM storage of electricity failure recovery, etc...<br />
<br />
Here is my complete source code in ASM language for ATMEL ATmega8 controlled Washing Machine<br />
<a href="https://drive.google.com/open?id=0B-XdS52xCN8wVzJ1ZE00UGZWRTA" target="_blank">AVR-ATMEL-ATmega8-Microcontroller-controllerd-washing-machine- Using-Assembly-Language.asm</a><br />
<br />
Complete project file in zip file (asm, HEX, etc..)<br />
<a href="https://drive.google.com/open?id=0B-XdS52xCN8wNUJZVEpiSElkT1E" target="_blank">AVR-ATMEL-ATmega8-Microcontroller-controllerd-washing-machine- Using-Assembly-Language</a><br />
<br />
<br />
<br />Ram Sankar.Vhttp://www.blogger.com/profile/12764814971315934133noreply@blogger.com7Tirunelveli, Tamil Nadu 627001, India8.7139126000000022 77.7566523000000428.5883521000000016 77.595290800000043 8.8394731000000029 77.91801380000004