7 inch display board
(Difference between revisions)
(Created page with "== Description == == Hardware == WIZFI210 Wireless network <br/>ITRAX300 GPS <br/>BTM220 Class 1 bluetooth <br/>Bluegiga WT41 1 kilometer bluetooth <...") |
|||
Line 1: | Line 1: | ||
== Description == | == Description == | ||
+ | == Hardware == | ||
+ | WIZFI210 Wireless network <br/>ITRAX300 GPS <br/>BTM220 Class 1 bluetooth <br/>Bluegiga WT41 1 kilometer bluetooth <br/>SCP1000 barometer <br/>DS1337 clock with battery backup <br/>RS232 <br/>Alvidi AVRB Atxmega128A1 module <br/>7 inch display <br/>FT232RL USB | ||
− | == | + | == Pictures == |
− | + | == DS1338-33 clock == | |
+ | Put a DS1338-33 clock IC on the board. It is the 3,3 volts 1307. <br/>Got some help to get soft I2c running, the command $forcesofti2c did the trick. And if you study the history.txt files of the Bascom-AVR updates, you will find this command. | ||
− | == | + | |
+ | |||
+ | |||
+ | And here the software, with on top a little scan to check if the clock can be found on the soft i2c bus <source lang="bascomavr"> | ||
+ | $regfile = "xm128a1def.dat" | ||
+ | $hwstack = 200 | ||
+ | $swstack = 200 | ||
+ | $framesize = 500 | ||
+ | $crystal = 32000000 | ||
+ | |||
+ | Config Osc = Enabled , 32mhzosc = Enabled | ||
+ | Config Sysclock = 32mhz | ||
+ | |||
+ | Config Osc = Disabled , 32mhzosc = Enabled | ||
+ | Osc_pllctrl = &B10_0_00100 | ||
+ | Do | ||
+ | Loop Until Osc_status.1 = 1 'Check if RC2MRDY is ready ' | ||
+ | 'enable PLL | ||
+ | Set Osc_ctrl.4 'PLL enable | ||
+ | 'configure the systemclock | ||
+ | Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1 'use PLL | ||
+ | |||
+ | Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled | ||
+ | |||
+ | Config Com5 = 57600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 | ||
+ | Open "COM5:" For Binary As #1 | ||
+ | |||
+ | Print #1 , "Start clock" | ||
+ | |||
+ | $forcesofti2c ' with this the software I2C/TWI commands are used when including i2c.lbx | ||
+ | $lib "i2c.lbx" ' override the normal xmega i2c lib | ||
+ | |||
+ | Dim B As Byte | ||
+ | Dim Weekday As Byte | ||
+ | Dim Text As String * 30 | ||
+ | |||
+ | Declare Sub Setdate | ||
+ | Declare Sub Settime | ||
+ | Declare Sub Getdatetime | ||
+ | |||
+ | 'We use here Virtual port 0 | ||
+ | Config Vport0 = B ' 'map portB to virtual port0 | ||
+ | |||
+ | Config Scl = Port0 .3 ' Pin to use as SCL (The hardware pin is Pinb.1) | ||
+ | Config Sda = Port0 .4 ' Pin to use as SDA (The hardware pin is Pinb.0) | ||
+ | I2cinit ' Bring the Pin's in the proper state | ||
+ | |||
+ | |||
+ | Print #1 , "Scan start" | ||
+ | For B = 0 To 254 Step 2 'for all odd addresses | ||
+ | I2cstart 'send start | ||
+ | I2cwbyte B 'send address | ||
+ | If Err = 0 Then 'we got an ack | ||
+ | Print #1 , "Slave at : " ; B ; " hex : " ; Hex(b) ; " bin : " ; Bin(b) | ||
+ | End If | ||
+ | I2cstop 'free bus | ||
+ | Next | ||
+ | Print #1 , "End Scan" | ||
+ | |||
+ | Wait 5 ' Bring the Pin's in the proper state | ||
+ | |||
+ | |||
+ | 'DS1338 | ||
+ | Const Ds1338w = &HD0 ' Adres van de Ds1338 clock | ||
+ | Const Ds1338r = &HD1 | ||
+ | |||
+ | 'Clock | ||
+ | Config Clock = User | ||
+ | Config Date = Dmy , Separator = . | ||
+ | |||
+ | $lib "ds1307clock.lib" | ||
+ | |||
+ | 'Time$ = "00:07:00" | ||
+ | 'Date$ = "24.02.13" | ||
+ | |||
+ | |||
+ | Do | ||
+ | Call Getdatetime | ||
+ | Print #1 , _hour | ||
+ | Print #1 , _min | ||
+ | Wait 5 | ||
+ | Loop | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | 'called from ds1307clock.lib | ||
+ | |||
+ | '------------------------------------------------------------------------------- | ||
+ | ' DS1338 Get date-time routine | ||
+ | '------------------------------------------------------------------------------- | ||
+ | Getdatetime: | ||
+ | I2cstart ' Generate start code | ||
+ | I2cwbyte Ds1338w ' send address | ||
+ | I2cwbyte 0 ' start address in 1338 | ||
+ | |||
+ | I2cstart ' Generate start code | ||
+ | I2cwbyte Ds1338r ' send address | ||
+ | I2crbyte _sec , Ack | ||
+ | I2crbyte _min , Ack ' MINUTES | ||
+ | I2crbyte _hour , Ack ' Hours | ||
+ | I2crbyte Weekday , Ack ' Day of Week | ||
+ | I2crbyte _day , Ack ' Day of Month | ||
+ | I2crbyte _month , Ack ' Month of Year | ||
+ | I2crbyte _year , Nack ' Year | ||
+ | I2cstop | ||
+ | _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour) | ||
+ | _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year) | ||
+ | Return | ||
+ | |||
+ | |||
+ | '------------------------------------------------------------------------------- | ||
+ | ' DS1338 set date routine | ||
+ | '------------------------------------------------------------------------------- | ||
+ | Setdate: | ||
+ | _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year) | ||
+ | I2cstart ' Generate start code | ||
+ | I2cwbyte Ds1338w ' send address | ||
+ | I2cwbyte 4 ' starting address in 1338 | ||
+ | I2cwbyte _day ' Send Data to SECONDS | ||
+ | I2cwbyte _month ' MINUTES | ||
+ | I2cwbyte _year ' Hours | ||
+ | I2cstop | ||
+ | Return | ||
+ | |||
+ | |||
+ | '------------------------------------------------------------------------------- | ||
+ | ' DS1338 set time routine | ||
+ | '------------------------------------------------------------------------------- | ||
+ | Settime: | ||
+ | _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour) | ||
+ | I2cstart ' Generate start code | ||
+ | I2cwbyte Ds1338w ' send address | ||
+ | I2cwbyte 0 ' starting address in 1338 | ||
+ | I2cwbyte _sec ' Send Data to SECONDS | ||
+ | I2cwbyte _min ' MINUTES | ||
+ | I2cwbyte _hour ' Hours | ||
+ | I2cstop | ||
+ | Return | ||
+ | |||
+ | End | ||
+ | </source> |
Revision as of 11:12, 26 February 2013
Contents |
Description
Hardware
WIZFI210 Wireless network
ITRAX300 GPS
BTM220 Class 1 bluetooth
Bluegiga WT41 1 kilometer bluetooth
SCP1000 barometer
DS1337 clock with battery backup
RS232
Alvidi AVRB Atxmega128A1 module
7 inch display
FT232RL USB
Pictures
DS1338-33 clock
Put a DS1338-33 clock IC on the board. It is the 3,3 volts 1307.
Got some help to get soft I2c running, the command $forcesofti2c did the trick. And if you study the history.txt files of the Bascom-AVR updates, you will find this command.
$regfile = "xm128a1def.dat" $hwstack = 200 $swstack = 200 $framesize = 500 $crystal = 32000000 Config Osc = Enabled , 32mhzosc = Enabled Config Sysclock = 32mhz Config Osc = Disabled , 32mhzosc = Enabled Osc_pllctrl = &B10_0_00100 Do Loop Until Osc_status.1 = 1 'Check if RC2MRDY is ready ' 'enable PLL Set Osc_ctrl.4 'PLL enable 'configure the systemclock Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1 'use PLL Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled Config Com5 = 57600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 Open "COM5:" For Binary As #1 Print #1 , "Start clock" $forcesofti2c ' with this the software I2C/TWI commands are used when including i2c.lbx $lib "i2c.lbx" ' override the normal xmega i2c lib Dim B As Byte Dim Weekday As Byte Dim Text As String * 30 Declare Sub Setdate Declare Sub Settime Declare Sub Getdatetime 'We use here Virtual port 0 Config Vport0 = B ' 'map portB to virtual port0 Config Scl = Port0 .3 ' Pin to use as SCL (The hardware pin is Pinb.1) Config Sda = Port0 .4 ' Pin to use as SDA (The hardware pin is Pinb.0) I2cinit ' Bring the Pin's in the proper state Print #1 , "Scan start" For B = 0 To 254 Step 2 'for all odd addresses I2cstart 'send start I2cwbyte B 'send address If Err = 0 Then 'we got an ack Print #1 , "Slave at : " ; B ; " hex : " ; Hex(b) ; " bin : " ; Bin(b) End If I2cstop 'free bus Next Print #1 , "End Scan" Wait 5 ' Bring the Pin's in the proper state 'DS1338 Const Ds1338w = &HD0 ' Adres van de Ds1338 clock Const Ds1338r = &HD1 'Clock Config Clock = User Config Date = Dmy , Separator = . $lib "ds1307clock.lib" 'Time$ = "00:07:00" 'Date$ = "24.02.13" Do Call Getdatetime Print #1 , _hour Print #1 , _min Wait 5 Loop End 'called from ds1307clock.lib '------------------------------------------------------------------------------- ' DS1338 Get date-time routine '------------------------------------------------------------------------------- Getdatetime: I2cstart ' Generate start code I2cwbyte Ds1338w ' send address I2cwbyte 0 ' start address in 1338 I2cstart ' Generate start code I2cwbyte Ds1338r ' send address I2crbyte _sec , Ack I2crbyte _min , Ack ' MINUTES I2crbyte _hour , Ack ' Hours I2crbyte Weekday , Ack ' Day of Week I2crbyte _day , Ack ' Day of Month I2crbyte _month , Ack ' Month of Year I2crbyte _year , Nack ' Year I2cstop _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour) _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year) Return '------------------------------------------------------------------------------- ' DS1338 set date routine '------------------------------------------------------------------------------- Setdate: _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year) I2cstart ' Generate start code I2cwbyte Ds1338w ' send address I2cwbyte 4 ' starting address in 1338 I2cwbyte _day ' Send Data to SECONDS I2cwbyte _month ' MINUTES I2cwbyte _year ' Hours I2cstop Return '------------------------------------------------------------------------------- ' DS1338 set time routine '------------------------------------------------------------------------------- Settime: _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour) I2cstart ' Generate start code I2cwbyte Ds1338w ' send address I2cwbyte 0 ' starting address in 1338 I2cwbyte _sec ' Send Data to SECONDS I2cwbyte _min ' MINUTES I2cwbyte _hour ' Hours I2cstop Return End