Узнаём причину Reset МК
'===============================================================================
' Узнаём причину сброса МК
'===============================================================================
'стр.54 документации на МК
' +------ Bit 1 – EXTRF: External Reset Flag
' |+----- Bit 0 – PORF: Power-on Reset Flag
' ||
'MCUSR = &B_0000_0000 – MCU Status Register
' ||
' |+------- Bit 2 – BORF: Brown-out Reset Flag
' +-------- Bit 3 – WDRF: Watchdog System Reset Flag
Dim Причина_сброса_мк As Byte
!sts {Причина_сброса_мк} , R0 'В регистр R0 Bascom забирает значение регистра MCUSR – MCU Status Register$map ' Получаем карту распределения памяти компилятором Bascom
$regfile = "m328pdef.dat" 'Документация Atmel - http://www.atmel.com/images/Atmel-8271- … mplete.pdf
$crystal = 8000000
$framesize = 128 ' Размер области используемой и необходимой для преобразований
$hwstack = 128 ' Размер аппаратного стека
$swstack = 128 ' Размер программного стека$baud = 38400
Config Com1 = Baud , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Ucsr0a.1 = 1 ' Двойная скорость работы USART, скорость трансляции = $baud * 2Gosub Причина_сброса_atmega328p
Do
Loop
End'===============================================================================
Причина_сброса_atmega328p:
'-------------------------------------------------------------------------------
' Print "&B_";
' Print Bin(причина_сброса_мк)If Причина_сброса_мк.3 = 1 Or Причина_сброса_мк = 0 Then
Print "Reset от Watchdog"
Причина_сброса_мк.7 = 1
Mcusr.3 = 0
End IfIf Причина_сброса_мк.2 = 1 Then
Print "Reset от снижения питания"
Причина_сброса_мк.2 = 0
Mcusr.2 = 0
End IfIf Причина_сброса_мк.1 = 1 Then
Print "Reset от кнопки"
Причина_сброса_мк.1 = 0
Mcusr.1 = 0
End IfIf Причина_сброса_мк.0 = 1 Then
Print "Reset от подачи питания"
Причина_сброса_мк.0 = 0
Mcusr.0 = 0
End If
'-------------------------------------------------------------------------------
Return
'===============================================================================
использую давно и проблема была только в одном каком-то МК, в котором по непонятной причине глючил бит Reset от BOD. Возможно, проблема конкретного МК, не проверял.