Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Need help for Bascom Avr read SPI MCP3304 13-Bit 8 single channel

Status
Not open for further replies.

ilacmano

Newbie level 6
Joined
Aug 30, 2010
Messages
11
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Croatia
Activity points
1,392
I'm newbie in Bascom Avr and need help for SPI read MCP3304 13-bit 8 single channel. I am writes code and don't receiving value in volts which read by digital voltmeter as sample read 4.844V by digital voltmeter read 4.999V.
Where is my error code.

BascomAvr Code:


Code Basic4GL - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Dim Vtxt As String * 6
Dim I As Byte
 
' MCP3304 channel address
A_mcp3304 = &B11000000                                      'CH0
 
'Port B was convenient for me to use so I tried the Software SPI.
'MCP3304 Din --> MOSI, Dout --> MISO, SCK --> CLK, /CS --> PBO
' Software SPI
Config Spi = Soft , Din = Pinb.5 , Dout = Portb.6 , Ss = Portb.0 , Clock = Portb.7
 
Config Portb.0 = Output                                     ' PORTB.0/4 SPI Control pin
Config Portb.5 = Input                                      ' PORTB.5 Din  MOSI
Config Portb.6 = Output                                     ' PORTB.6 Dout MISO
Config Portb.7 = Output                                     ' PORTB.7 CLK  SCK
 
Cs Alias Portb.0                                            ' SS
Clk Alias Portb.7                                           ' CLK / SCK
Din Alias Portb.5                                           ' Din / MOSI
Dout Alias Portb.6                                          ' Dout / MISO
 
'Initalize SPI
Spiinit
 
Set Cs                                                      ' CS = 1
Waitms 100
Reset Cs                                                    ' CS = 0
Waitms 100
Setfont Font6x8
Cls
Lcdat 1 , 1 , "MCP3304 13-Bit ADC"
Lcdat 2 , 1 , "=================="
Do
    For I = 1 To 8
      W_mcp3304 = 0
      Vout = 0
      Select Case I
         Case 1 : A_mcp3304 = &B11000000                    'CH0
         Case 2 : A_mcp3304 = &B11001000                    'CH1
         Case 3 : A_mcp3304 = &B11010000                    'CH2
         Case 4 : A_mcp3304 = &B11011000                    'CH3
         Case 5 : A_mcp3304 = &B11100000                    'CH4
         Case 6 : A_mcp3304 = &B11101000                    'CH5
         Case 7 : A_mcp3304 = &B11110000                    'CH6
         Case 8 : A_mcp3304 = &B11111000                    'CH7
      End Select
      Reset Cs                                              ' CS = 0
      Reset Clk                                              ' CLK = 0
      Shiftout Dout , Clk , A_mcp3304 , 0 , 5      
      ' Bring cs low to start talking to device
      Spiin C(1) , 2
 
      Set Cs                                                ' CS = 1
      Set Clk                                               ' CLK = 0
 
      W_mcp3304 = C(1)
      Shift W_mcp3304 , Left , 8
      Shift C(2) , Right , 5
                                                             ' Read ADC value
      W_mcp3304 = W_mcp3304 + C(2)
 
      Lcdat 3 , 1 , "A_MCP:" ; Bin(a_mcp3304) ; "  "
      Lcdat 4 , 1 , "W_MCP3304: " ; W_mcp3304 ; "    "
 
      'Convert ADC value to Volts
      Vout = W_mcp3304 * 6.0                                ' !!! 5V Vref if you use other change this to the volt x.xxxx
      Vout = Vout / 8192
 
      Vtxt = Fusing(vout , "#.###")
      Lcdat 6 , 1 , "Vout: " ; Vtxt ; " V  Ch:" ; I ; "  "
      Waitms 1000
   Next I
Loop
End                                                         'end program
 
$include "Font6x8.font"

 
Last edited by a moderator:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top