Hello everyone
Possible help in a program to send and receive temperature and displayed on LCD By RF 433Mhz
thank you :oops:
[b:a4908e8c0d][color=red:a4908e8c0d](BASCOM-AVR version : 2.0.7.8 )[/b:a4908e8c0d][/color:a4908e8c0d]
↧
BASCOM-AVR : 433Mhz send and receive temperature : NEWTOPIC
↧
Share your working BASCOM-AVR code here : BME280 sensor : REPLY
Hello Mrshilov,
thanks for sharing this project. I always like the fact that you include a PDF and a sample.
This looks like a super sensor. The LCD looks sharp and clear too.
↧
↧
BASCOM-AVR : ATTINY 84 PWM thing.... I don't get it : NEWTOPIC
So,
I configure my Timer....
Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down
And I output some stuff
Pwm0a = 32
Pwm0b = 32
I get a narrow pulse on both outputs, this much works fine.
If I make "A PWM= clear down" the pulse is negative going versus when It is up it is positive going , right?
What is bugging me, is that I can't make B PWM different from A PWM.
I think I should be able to get symetrical opposite pulses..... but they persist in being exactly the same.
Any thoughts?
:?
[b:89df494acb][color=red:89df494acb](BASCOM-AVR version : 2.0.7.8 )[/b:89df494acb][/color:89df494acb]
↧
BASCOM-AVR : 433Mhz send and receive temperature : REPLY
Maybe you can use this [url=http://blog.royalsystems.dk/#comments22]test code[/url] 433 mhz cheap module sending 2 bytes to get an idea about howto
i used info from David Collins [color=blue:58e85e42b3][url=http://www.mcselec.com/index.php?option=com_content&task=view&id=77&Itemid=57]AN #113 - Green House controller[/url][/color:58e85e42b3]
you can add your temperature module code to TX unit and sent the data to RX unit
↧
BASCOM-AVR Old versions : ADC Measurement : REPLY
I added another battery and just copy some routine..
[code:1:92394513c8]'MICRO-CONTROLLER BASED SOLAR CHARGE CONTROLLER
'USED CHIP: ATMEGA8L WITH INTERNAL RC OSCILLATOR
'***************************************************************
' INITIAL SETTINGS
'***************************************************************
$regfile = "m8def.dat" 'REGISTER FILE FOR ATMEGA8
$crystal = 1000000 'OSCILLATOR FRQUENCY=1MHZ
$swstack = 40 'SOFT STACK SIZE
$hwstack = 32 'HARDWARE STACK SIZE
$framesize = 32 'FRAME SIZE
'***************************************************************
' DEFINE INPUT/OUTPUT PORTS
'**************************************************************
Config Portd.2 = Output
Config Portd.3 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
Config Portb.7 = Output
'**************************************************************
' DEFINE ALIAS FOR GOOD READEBILITY
'**************************************************************
Charging Alias Portd.3
_load Alias Portd.2
Ch_led Alias Portb.3
Bat_h_led1 Alias Portb.1
Bat_l_led1 Alias Portb.2
Bat_h_led2 Alias Portb.4
Bat_l_led2 Alias Portb.5
Ac_led Alias Portb.6
Ac_chrg Alias Portb.7
'***************************************************************
' SETUP ADC MODULE
'***************************************************************
Config Adc = Single , Prescaler = Auto , Reference = Avcc '_2.56_nocap
Start Adc
'***************************************************************
' VARIABLE DECLARATIONS
'***************************************************************
Dim W As Word , W_single As Single
Dim Sol_v As Single , B1_high As Single
Dim Bat1_v As Single , Bat2_v As Single
Dim B1_low As Single , B2_high As Single , B2_low As Single
Dim Gp1 As Byte , Gp2 As Byte
'***************************************************************
' MAIN PROGRAM LOOP
'***************************************************************
Main:
Gosub Check_adc
If Bat1_v < B1_high And Sol_v > Bat1_v Then
Charging = 1 'CHARGING ON
Ch_led = 0 'CHARGING LED ON
Bat_h_led1 = 1 'BAT HIGH LED OFF
_load = 0 'LOAD CONNECT TO BATT2
End If
If Bat1_v >= B1_high Then
Charging = 0 'CHARGING STOPS
Ch_led = 1 'CHARGING LED OFF
Bat_h_led1 = 0 'BAT HIGH LED ON
Bat_l_led1 = 1 'BAT LOW LED OFF
_load = 1 'LOAD CONNECT TO BATT1
Else
Bat_h_led1 = 1 'BAT HIGH LED OFF
End If
If Sol_v < Bat1_v Then
Ac_led = 1
Ch_led = 0 'CHARGING LED ON
Ac_chrg = 1 'TURN AC CHARGER ON.
_load = 1 'LOAD CONNECT TO BATT2
End If
If Bat2_v < B2_high And Sol_v > Bat2_v Then
Charging = 1 'CHARGING ON
Ch_led = 0 'CHARGING LED ON
Bat_h_led2 = 1 'BAT HIGH LED OFF
_load = 1 'LOAD OFF
End If
If Bat2_v >= B2_high Then
Charging = 0 'CHARGING STOPS
Ch_led = 1 'CHARGING LED OFF
Bat_h_led2 = 0 'BAT HIGH LED ON
Bat_l_led2 = 1 'BAT LOW LED OFF
Else
Bat_h_led2 = 1 'BAT HIGH LED OFF
End If
If Sol_v < Bat2_v Then
Ac_led = 1
Ch_led = 0 'CHARGING LED ON
Ac_chrg = 1 'TURN AC CHARGER ON.
_load = 0 'LOAD CONNECT TO BATT1
End If
If Bat2_v <= B2_low Then
_load = 0 'LOAD OFF
Bat_l_led2 = 0 'BAT LOW LED ON
Else
Bat_l_led2 = 1 'BAT LOW LED OFF
End If
Goto Main
'***************************************************************
' ADC MEASUREMENT SUB ROUTINE
'***************************************************************
Check_adc:
For Gp1 = 1 To 7 'Loop through Gp1 (2-5) This is the ADC number we'll read later
W_single = 0 'Setup an accumulator
For Gp2 = 1 To 200 'Read the ADC 200 times in this loop
W = Getadc(gp1) 'Actually read the ADC Value
W_single = W_single + W 'Add to the accumulator
Next Gp2 '
If W_single <> 0 Then 'If the total of all ADC values read for this ADC is > 0 then
W_single = W_single / 200 'Divide by 200 (The number of times we read the ADC). This will give us an average
Else
W_single = 0
End If
Select Case Gp1 'Where should the average value for the ADC just read be stored?
Case 2 : Sol_v = W_single 'Save value from ADC 2 to Sol_v
Case 3 : B1_high = W_single 'Save value from ADC 3 to B1_High
Case 4 : B1_low = W_single 'Save value from ADC 4 to B1_low
Case 5 : Bat1_v = W_single 'Save value from ADC 5 to Bat1_v
Case 6 : B2_high = W_single 'Save value from ADC 6 to B2_High
Case 7 : B2_low = W_single 'Save value from ADC 7 to B2_low
Case 8 : Bat2_v = W_single 'Save value from ADC 1 to Bat2_v
Case Else
End Select
Next Gp1
Return
'****************************************************************
End 'end program[/code:1:92394513c8]
[/code]
Simulation seems to be fine..
↧
↧
BASCOM-AVR : SI4432 470MHz Wireless Module : NEWTOPIC
Hello :(
Is there any one has any information or idea :?:
[b:a271f11f48][color=red:a271f11f48](BASCOM-AVR version : 2.0.7.8 )[/b:a271f11f48][/color:a271f11f48]
↧
BASCOM-AVR : SI4432 470MHz Wireless Module : REPLY
Hi,
It's the same chip as RFM22B. Se MAK3's excellent tutorial [url]http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=10248&highlight=rfm23[/url]
↧
BASCOM-AVR : dat file for ATMEGA325p : NEWTOPIC
Hello
I'm developing serial echo program for atmega325p but I not found it in dat files.
Can I use atmega325 dat file?
Thanks
[b:e5e8680f25][color=red:e5e8680f25](BASCOM-AVR version : 2.0.7.8 )[/b:e5e8680f25][/color:e5e8680f25]
↧
BASCOM-AVR : How to access DATA Table in Bootloader area from Flash? : NEWTOPIC
Hello Forum,
Some time ago, MWS helped me access Subroutines stored in the Bootloader area from within the Flash main program.
[url]http://mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=9177&highlight=bootloader&sid=cb3fbd65717ee700d12b77df476e7079[/url]
This works perfectly.
I would now like to access a DATA table which is used by both the Bootloader and the Flash main program. It is easy to find the start address by using the following in the Bootloader:
[code:1:85d0d54fab]DIM Addr As Word
Addr = Loadlabel(Table_data)
Print "Data table Address: "; Hex(addr)
......
Table_data:
Data 1, 2, 3, 4
Data 5, 6, 7, 8
[/code:1:85d0d54fab]
Once we know the starting address, how can we access the DATA from within the Flash main program?
Thank-you for your help.
E
[b:85d0d54fab][color=red:85d0d54fab](BASCOM-AVR version : 2.0.7.9 , Latest : 2.0.7.8 )[/b:85d0d54fab][/color:85d0d54fab]
↧
↧
BASCOM-AVR : POWER with DOUBLE type : NEWTOPIC
I noticed many troubles with POWER function. I couldn't get expected results.
After all day fighting i tried example from HELP.
I added only 3 lines with stack, cause I cannot compile without them.
[code:1:9ab2b20eea]
$regfile = "m128def.dat"
$crystal = 4000000
$hwstack = 100
$swstack = 100
$framesize = 100
Dim D1 As Double , D2 As Double , D3 As Double
Dim dInf as Double, dNAN as Double
d1 = -1: dNAN = log(d1)
d1 = 1: d2 = 0: dInf = D1 / D2
Print "POWER() - Test"
Print "=============="
D1 = 0: D2 = 0: GoSub ShowPowerTest
D1 = dNAN: D2 = 3: GoSub ShowPowerTest
D1 = 3: D2 = dNAN: GoSub ShowPowerTest
D1 = dInf: D2 = 4: GoSub ShowPowerTest
D1 = 4: D2 = dInf: GoSub ShowPowerTest
D1 = 0: D2 = -2: GoSub ShowPowerTest
D1 = 0: D2 = 3: GoSub ShowPowerTest
D1 = 5: D2 = 0: GoSub ShowPowerTest
D1 = -2: D2 = -3.5: GoSub ShowPowerTest
D1 = -2: D2 = 3.5: GoSub ShowPowerTest
D1 = -2: D2 = -3: GoSub ShowPowerTest
D1 = -2: D2 = -4: GoSub ShowPowerTest
D1 = -2: D2 = -5: GoSub ShowPowerTest
D1 = -2: D2 = 3: GoSub ShowPowerTest
D1 = -2: D2 = 4: GoSub ShowPowerTest
D1 = -2: D2 = 5: GoSub ShowPowerTest
end
ShowPowerTest:
D3 = POWER(D1, D2)
Print "POWER( " ; D1 ; " , " ; D2 ; ") = " ; D3
Return
[/code:1:9ab2b20eea]
Results from simulator was:
[code:1:9ab2b20eea]
POWER() - Test
==============
POWER( 0 , 0) = NAN
POWER( NAN , 3) = NAN
POWER( 3 , NAN) = NAN
POWER( Infinity , 4) = NAN
POWER( 4 , Infinity) = NAN
POWER( 0 , -2) = Infinity
POWER( 0 , 3) = 0
POWER( 5 , 0) = 1
POWER( -2 , -3.5) = NAN
POWER( -2 , 3.5) = NAN
POWER( -2 , -3) = -NAN
POWER( -2 , -4) = NAN
POWER( -2 , -5) = -NAN
POWER( -2 , 3) = -NAN
POWER( -2 , 4) = NAN
POWER( -2 , 5) = -NAN
[/code:1:9ab2b20eea]
when in HELP-FILE is:
[code:1:9ab2b20eea]
--------------------------Simulator Output -------------------
POWER() - Test
==============
POWER( 0 , 0) = NAN
POWER( NAN , 3) = NAN
POWER( 3 , NAN) = NAN
POWER( Infinity , 4) = NAN
POWER( 4 , Infinity) = NAN
POWER( 0 , -2) = Infinity
POWER( 0 , 3) = 0
POWER( 5 , 0) = 1
POWER( -2 , -3.5) = NAN
POWER( -2 , 3.5) = NAN
POWER( -2 , -3) = -125E-3
POWER( -2 , -4) = 62.5E-3
POWER( -2 , -5) = -31.25E-3
POWER( -2 , 3) = -8
POWER( -2 , 4) = 16
POWER( -2 , 5) = -32
[/code:1:9ab2b20eea]
*************************************************
Most interesting and frustrating is one more test with result:
POWER( 2 , 2) = NAN
************************************************
What is wrong? Something with settings? Compiler?
Please help me :-/
Michał
windows 7. 64bit
BASCOM 2.0.7.8. full
[b:9ab2b20eea][color=red:9ab2b20eea](BASCOM-AVR version : 2.0.7.8 )[/b:9ab2b20eea][/color:9ab2b20eea]
↧
BASCOM-AVR : How to access DATA Table in Bootloader area from Flash? : REPLY
Turns out to be very easy!!!
Once the Address is known (using the code above in the Bootloader), use that address with this code in the Flash:
[code:1:7ab1122ec2]Dim Table_pointer As Word, I as Byte, J as Byte, K as Byte
Table_pointer = &H892A 'Address of Table from Bootloader
!lds R8, {Table_Pointer} ' }
!lds R9, {Table_Pointer + 1} ' } Restore to start DATA Table
For K = 1 To 2
For I = 1 To 3
Read J
Print J ; " " ;
Next
Print ""
Next[/code:1:7ab1122ec2]
E
↧
BASCOM-AVR : POWER with DOUBLE type : REPLY
I tested with 2079 and output is ok. POWER( 2 , 2) = 4
And output from the sample matches too.
I did test with 2079 however. I advise to update to 2079 and check again.
Maybe someone with 2078 can confirm it is a problem with 2078? There was no change in 2079 for this function.
↧
BASCOM-AVR : POWER with DOUBLE type : REPLY
Increase $hwstack = 128 and try...
↧
↧
Share your working BASCOM-AVR code here : Moving average for INTEGER and SINGLE data streams : REPLY
Hi to all,
In his original post Per mentioned the merits of recursiveness to calculate the running average.
[url]http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=9004[/url]
I did not understand the function he posted (and it could not get it to compile).
Therefore I omitted the function definition and just used the code inside of the function (posted by me above).
That does not seem to be recursive. I was asking if that was correct....
The code posted by enninom looks similar to mine - also apparently not recursive.
So what is the mystery about the recursiveness of the function posted by Per?
Had me and enniom used a non-appropriated reduction of Per's code by using it in the form of a function?
Best regards, Meister
↧
BASCOM-AVR : POWER with DOUBLE type : REPLY
I will try on Monday at work.
Maybe it is simulator fault...
↧
Share your working BASCOM-AVR code here : 1-Wire search & save + DS1820 : REPLY
Now so the free version of Bascom can be used I have set up conditional compilation
By setting one of the constants Test or Uselcd to 0 less than 4k of code is produced
Regards Paul
[code:1:67673310da]
'--------------------------------------------------------------------------------
'name : 1wireSearch.bas
'micro : Mega168p
'suited for demo : No Only due to code size which could be
'reduced by removing print commands!!!!!!!!
'commercial addon needed : no
'--------------------------------------------------------------------------------
$regfile = "m168pdef.dat"
$crystal = 8000000
$baud = 9600
$hwstack = 100 ' default use 32 for the hardware stack
$swstack = 100 'default use 10 for the SW stack
$framesize = 100 'default use 40 for the frame space
'Config 1wire = Portc.4 'use this pin
Io_1wire_port Alias Pinc
Declare Sub Read_ds1820(byval Piin As Byte )
Declare Sub Send1wire_cmd(byval Cmd As Byte , Byval Piin As Byte )
Declare Sub Look_for_devices
Declare Sub Save_eeprom
Declare Sub Check_stord
Declare Function Compare(val1 As Byte , Val2 As Byte , Byval Btcomp As Word) As Word
'we need some space from at least 8 bytes to store the ID
Dim Sc(9) As Byte ' result when reading DS chip
Dim Scd As Double At Sc(1) Overlay '1st 8 bytes ofSc(9)
Dim Dev_sc As Double
Dim Dev_scb(8) As Byte At Dev_sc Overlay '8 bytes of Dev_sc
Dim Work As Double
Dim Workw(2) As Dword At Work Overlay
Dim Devs(20 ) As Eram Double '8 bytes per device
Const Devices = 20 'max number of devices
Dim Cntr As Byte
Dim J As Byte
Dim K As Byte
Dim L As Byte
Dim I As Byte , W As Word
Dim Z As Single
Dim Zs As String * 5 'for print to LCD
Poort Alias Pinc 'pin for 1-wire
' 1WIRE COMMANDS
Const C1w_read_rom = &H33
Const C1w_match_rom = &H55
'===============================
'tell all devices to do a temperature read
'+++++++++++++++++++++++++++++
'send this command to address all devices on the bus
Const C1w_skip_rom = &HCC
'then send this command the instruction to tell all do temperature conversion
Const C1w_convert_t = &H44
'==============================
Const C1w_search_rom = &HF0
Const C1w_alarm_search = &HEC
Const C1w_wr_scratchpad = &H4E
Const C1w_rd_scratchpad = &HBE
Const C1w_cpy_scratchpad = &H48
Const C1w_recall_memory = &HB8
Const C1w_convert_v = &HB4
'======================================
' by setting one or both of these to 0 the free version can be used
Const Test = 1 '1 will enable print commands
Const Uselcd = 0 '1 will enable LCD
'=====================================
Config Pinb.2 = Output 'LCD back light on my board
' Config 1wire = Portc.4 'use this pin
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portb.0 , Rs = Portb.1
'set to 1 for print to rs232 debuging
I = 1
Set Portb.2 'turn back light on
#if Test = 1
Print "starting"
#endif
1wwrite C1w_skip_rom , 1 , Poort , 4 'address all devices
1wwrite C1w_convert_t , 1 , Poort , 4 'tell all to convert
'Now search for devices on the bus
Call Look_for_devices
#if Uselcd = 1
Cls
Locate 1 , 1
Lcd "family code";
Locate 2 , 1
Lcd Hex(sc(1));
Wait 5
Cls
#endif
Call Read_ds1820(4)
#if Uselcd = 1
Cls
Locate 1 , 1
Lcd "Deg C " ;
Zs = Fusing(z , "##.##")
Lcd Zs
#endif
End
'-------------------------------------------------------------------------------
' Name: Read_DS1820()
' Function: read the temperature from sensor (separated temp sensor)
' Input : 1Wire Hardware
'-------------------------------------------------------------------------------
Sub Read_ds1820(byval Piin As Byte )
Local T As Integer
Local Tt As Single
Local Tl As Single
'clear variables
Z = 0
T = 0
Call Send1wire_cmd(c1w_rd_scratchpad , 4 ) ' read scratchpad
Sc(1) = 1wread(9 , Poort , Piin ) ' read bytes in array
If Sc(9) = Crc8(sc(1) , 8) Then ' check CRC
'find the resolution of temp bits
Select Case Sc(5)
Case 127 ' 127 = 12 bits
Tl = 0.0625
Case 95 ' 95 = 11 bit
Tl = 0.125
Case 63 ' 63 = 10 bits
Tl = 0.25
Case 31 ' 31 = 9 bits
Tl = 0.5
End Select
T = Makeint(sc(1) , Sc(2))
Tt = T
Tt = Tt * Tl
Z = Tt
End If
Call Send1wire_cmd(c1w_convert_t , 4) ' start conversion for next read
End Sub Read_ds1820()
'-------------------------------------------------------------------------------
' Name: Send1wire_cmd(cmd)
' Function: Send a command to a predefined 1W device dsid()
' Input : 1WIRE Command (see command list)
' Output: 1Wire Hardware
'-------------------------------------------------------------------------------
Sub Send1wire_cmd(byval Cmd As Byte , Byval Piin As Byte )
1wverify Sc(1) , Poort , Piin ' Send chip unique ID
If Err = 0 Then
1wwrite Cmd , 1 , Poort , Piin ' send command
End If
End Sub
'------------------------------------------------------------
'==Search for devices on the buss
'==Put the IDs new into EEPROM
'------------------------------------------------------------
Sub Look_for_devices
Local Xv As Byte
Xv = 0
'Now search for the first device on the bus
Sc(1) = 1wsearchfirst(poort , 4)
Cls
Locate 1 , 1
Cntr = 1
If Err = 0 Then 'found device
#if Test = 1
Print "found one"
#endif
Incr Xv 'add one for every device found
Call Check_stord
End If
Lcd Hex(sc(i)); 'print the number to LCD
Print Hex(sc(i)); 'print the number
'Wait 2
#if Test = 1
Print
Print
#endif
Wait 1
Do
' Now Search For Other Devices
Sc(1) = 1wsearchnext(poort , 4)
If Err = 0 Then 'found device
#if Test = 1
Print "found another"
#endif
Incr Xv
Call Check_stord
End If
'Print
Loop Until Err = 1
Locate 2 , 1
Cntr = 1
#if Test = 1
Print Xv ; " devices found"
#endif
End Sub
'==save device IDs to eeprom
Sub Save_eeprom
Local Xl As Byte
Local Wd As Double
#if Test = 1
Print "save eeprom"
#endif
'blank eeprom is all FFFF
Workw(1) = &HFFFFFFFF
Workw(2) = &HFFFFFFFF
For Xl = 1 To Devices
Wd = Devs(xl)
If Wd = Work Then 'blank eeprom bytes are FF
#if Test = 1
Print "WD is it"
#endif
Devs(xl) = Scd 'save to eeprom
Exit For
Elseif Wd = 0 Then
#if Test = 1
Print "WD is it"
#endif
Devs(xl) = Scd 'save to eeprom
Exit For
End If
Next
If Xl = Devices Then
#if Test = 1
Print "Not saved out of space"
#endif
End If
End Sub
Sub Check_stord
Local Devpoint As Byte
Local Res As Byte
#if Test = 1
Print "Checking!"
#endif
For Devpoint = 1 To Devices
Dev_sc = Devs(devpoint)
#if Test = 1
Print "If Scd = Dev_sc Then "
Print "Sc() " ;
For I = 1 To 8
Print Hex(sc(i));
Next
Print
Print "Dev_scb " ;
For I = 1 To 8
Print Hex(dev_scb(i));
Next
Print
#endif
'Now we use the MWS Compare!
Res = Compare(dev_scb , Scd , 8)
If Res = 0 Then 'stored
Exit For 'its stored so lets not waste time
End If
Next
If Res > 0 Then
#if Test = 1
Print "not stored"
#endif
Call Save_eeprom
Else
#if Test = 1
Print "device stored"
#endif
End If
End Sub
'===============
' The MWS Compare
' "==============="
Function Compare(val1 As Byte , Val2 As Byte , Byval Btcomp As Word) As Word
!LD XL, Y+0 ' get pointer to BtComp
!LD XH, Y+1
!LD R24, X+ ' R24/25 as counter
!LD R25, X
!MOVW R16, R24 ' save BtComp for later calculation of mismatch position
!LD XL, Y+4 ' get pointer to Val1 into X
!LD XH, Y+5
!LD ZL, Y+2 ' get pointer to Val2 into Z
!LD ZH, Y+3
!cmp_start:
!LD R20, X+ ' X points to Val1
!LD R21, Z+ ' Z points to Val2
!CP R20, R21 ' compare!
!BRNE cmp_nomatch ' if equal: ok, next one
!SBIW R24, 1 ' decrease loop counter
!BRNE cmp_start ' if not zero do another turn
!RJMP cmp_end
!cmp_nomatch:
!SBIW R24, 1 ' else: calculate the position of compare mismatch
!SUB R16, R24
!SBC R17, R25
!MOVW R24, R16
!cmp_end:
!LD XL, Y+6
!LD XH, Y+7
!ST X+, R24 ' store success or position of mismatch
!ST X, R25
End Function
[/code:1:67673310da]
↧
BASCOM-AVR : POWER with DOUBLE type : REPLY
[quote:acffec74aa="dabatek"]Increase $hwstack = 128 and try...[/quote:acffec74aa]
It works! :D
After few years I still don't know how to calculate stack.
Do you have some checked method?
Michał
↧
↧
BASCOM-AVR : Interrupts and power consumption : NEWTOPIC
I have a current consumption issue on my ATXMEGA256A3BU. It draws over 30 mA in my main program but the same hardware consumes 10 mA in a test program.
I went through the program lines, measuring the current after each line, and after the following line, the current jumps from 10 to 30 mA:
Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled , Hi = Enabled
When I remark this line and remove the lo/med/hi from the IRQ's, the current does not jump to 30 mA.
Who has any idea where I should search which would explain this current jump?
[b:53b70c024c][color=red:53b70c024c](BASCOM-AVR version : 2.0.7.8 )[/b:53b70c024c][/color:53b70c024c]
↧
BASCOM-ARDUINO : TFT 5inches, ssd1963 and Mega 2560 : REPLY
Dear, I use for testing ny set this software. I have problem because the image is upside down. Do you know what I should change in the program to have correct display?
↧
BASCOM-AVR : POWER with DOUBLE type : REPLY
Also you can try this settings, and that work...
$hwstack = 100
$swstack = 100
$framesize = 60
I do not have a good method for determining the size of stack. It is clear that the use of memory is very dynamic
and that it depends on for example the type of variables, the depth of the SUB or FUNCTION, IRQ ...
I hope that in the next release be helpful [b:cc1e6b8331]code explorer can show estimated stack usage[/b:cc1e6b8331].
Best regards,
Zeljko
↧