I have now got back to trying to solve this continuing brownout issue, and have spent several days testing 4 new boards. All four boards do a brownout reset about 2-5 times every 24 hrs.
[u:55071f9904]Test Setup:[/u:55071f9904]
Processor = Atmega 1284p
Power supply= fully charged 12v battery - series diode -1000uf - 7805- low ESR 4700uF cap
0.1 on both pins of regulator
No peripherals connected to RS232 ports and no I/O onto the board except 0v & +12v
no SD card
1uF and 0,1 caps distributed around board at each device supply pin
Processor 5v supply & 0v lines supply processor only - not anywhere else (Remainder of board uses separate star connection to +5)
No ground plane
AVcc connected to +5 via 100uH choke + 1uf bypass
Avref has 0.1 bypass only
Reset has 10k pullup & 0.1 bypass
All 4 boards run for 24hrs at a time with test code shown below
BOD set to 4.3v
Xtal = full swing
LED supply resistor = 1k
Total board consumption during with test code = about 20mA
PCB is double sided PTH
[u:55071f9904]Results:[/u:55071f9904]
All 4 boards reset about 2-5 times per 24hrs. All report peek(0) = 4
Changing regulator to 7625 switching regulator made no difference
Changing processor to atmega644 made no difference
Running the processor at 122880hz seems to make a significant improvement. ( divide by 8 in place)
[code:1:55071f9904]
-- '*******************************************************************************
$regfile = "m1284pdef.dat"
$crystal = 9830400
$framesize = 100
$hwstack = 100
$swstack = 100
Disable Jtag
' '-------------------------------------------------------------------------------
'Open a software UART channel for debug dB9
Open "comc.3:9600,8,n,1" For Output As #1
'*******************************************************************************
config PORTa.3 = output 'led
config watchdog = 8192
start watchdog
dim resetcount as eram byte
dim tempb as byte
dim rbyte as byte
rbyte = peek(0)
'-------------------------------------------------
'incr reset count every time processor reboots
print #1 , "There has been a restart"
tempb = resetcount 'read from eeprom
incr tempb
resetcount = tempb 'save to eeprom
wait 5 'protect eeprom
'------------------------------------------------
do
tempb = resetcount 'read from eeprom
print #1 , "reset count=" ; tempb
print #1 , "Previous MCUSR=" ; rbyte
mcusr = 0
toggle portA.3
reset watchdog
wait 1
loop
[/code:1:55071f9904]
I believe that the problem is layout, but I find it hard to believe that the layout is so critical, at 10mHz?? I am about to do a new layout with a proper ground plane but like to get a better handle on the actual cause before embarking on this. I'd hate to do a new layout, order baords and find I still have the same problem.
↧