การรีเซ็ตและการอินเตอร์รัพท์

ไมโครคอนโทรลเลอร์AT90S4434/AT90S8535 มีระบบการตอบสนองสัญญาณอินเตอร์รัพท์จาก 16 แหน่งสัญญาณ โดยแยกอินเตอร์รัพท์เวกเตอร์ของแต่ละอินเตอร์รัพท์ออกจากกันในการควบคุมการตอบสนองของอินเตอร์รัพท์แต่ละแหน่ง สามารถแยกควบคุมได้จากบิท ENABLEของอินเตอร์รัพท์นั้นๆ และ บิท I ซึ่งใช้ควบคุมการอินเตอร์รัพท์ทั้งหมด โดยตำแหน่งแรกๆ ใน PROGRAM MEMORY จะเป็นตำแหน่งที่ถูกใช้เป็นพื้นที่ของอินเตอร์รัพท์เวกเตอร์และรีเซ็ทซึ่งตารางที่ 2 แสดงอินเตอร์รัพท์เวกเตอร์ต่างๆโดยเริ่มจากอินเตอร์รัพท์ที่มีระดับความสำคัญสูงสุดคือ RESETจนถึงอินเตอร์รัพท์ที่มีความสำคัญต่ำสุด

ตารางที่ 2 แสดงอินเตอร์รัพท์เวกเตอร์

Vector
Program Address
Source
Interrupt Definition
1
$000
RESET
Hardware Pin and Watchdog Reset
2
$001
INT0
External Interrut Request 0
3
$002
INT1
External Interrut Request 1
4
$003
TIMER2 COMP
Timer /Counter2 Compare Match
5
$004
TIMER2 OVF
Timer /Counter2 Overflow
6
$005
TIMER1 CAPT
Timer /Counter1 Capture Event
7
$006
TIMER1 COMPA
Timer /Counter1 Compare Match A
8
$007
TIMER1 COMPB
Timer /Counter1 Compare Match B
9
$008
TIMER1 OVF
Timer /Counter1 Overflow
10
$009
TIMER0 OVF
Timer /Counter0 Overflow
11
$00A
SPI , STC
Serial Tralsfer Complete
12
$00B
UART , RX
UART , Rx Complete
13
$00C
UART , UDRE
UART Data Register Empty
14
$00D
UART , TX
UART , Tx Complete
15
$00E
ADC
ADC Conversion Complete
16
$00F
EE_RDY
EEPROM Ready
17
$0010
ANA_COMP
Analog Comparator

สัญญาณรีเซ็ต

ไมโครคอนโทรลเลอร์ AT90S4434 / AT90S8535 มีสัญญาณรีเซ็ต 3 แหล่ง คือ

  1. POWER ON RESET ไมโครคอนโทรลเลอร์ จะรีเซ็ตเมื่อมีการจ่ายไฟให้กับขา VCC และ GND
  2. EXTERNAL RESET ไมโครคอนโทรลเลอร์ จะรีเซ็ตเมื่อมีสัญญาณลอจิก LOW เข้ามาที่ขารีเซ็ตเป็นระยะเวลามากกว่า 2คาบเวลาของสัญญาณ XTAL
  3. WATCHDOG RESET ไมโครคอนโทรลเลอร์ จะรีเซ็ตเมื่อถึงคาบเวลาของWatchdog และ Watchdogจะต้องถูกกำหนดให้ทำงาน

ในระหว่างที่เกิดการรีเซ็ต รีจีสเตอร์ทั้งหมดจะถูกกำหนดให้ค่าเริ่ม และโปรแกรมจะเริ่มทำงานที่ตำแหน่ง$0000จะต้องเป็นคำสั่งRJMPแต่ถ้า

โปรแกรมไม่มีการกำหนดให้มีการใช้อินเตอร์รัพท์พื้นที่ส่วนที่เป็นอินเตอร์รัพท์เวกเตอร์จะถูกใช้พื้นที่ของโปรแกรม

รูปที่ 22 แสดงโครงสร้างของวงจรรีเว็ต

ตารางที่ 3 คุณลักษณะของสัญญาณรีเซ็ต(Vcc=5.0V)

Symbol
Parameter
Min
Typ
Max
Units
Vpot
Power-on Reset Threshold Voltage
1.4
1.6
1.8
v
Vrst
Reset Pin Threshold Voltage
0.6Vcc
v
tTOUT
Reset DElay Time-out Period FSTRT Unprogrammed
11
16
21
mS
tTOUT
Reset DElay Time-out Period FSTRT Unprogrammed
1.0
1.1
1.2
mS

Power On Reset

วงจรของ Power On Reset (POR) ถูกสร้างขึ้นเพื่อให้แน่ใจว่า MCU จะไม่ทำงานถ้าระดับของแรงดันไฟเลี้ยงวงจรยังไม่ถึงระดับที่จะทำให้ระบบการทำงานภายในของ MCU ทำงานได้อย่างถูกต้องถ้าต้องการใช้ระบบPower On ResetภายในMCU จะต้องต่อขารีเซ็ตเข้ากับVcc หรือต่อผ่านความต้านทาน Pull Up ค่าประมาณ 100k - 500k โดย FSTRT ใช้ในการเลือกคาบเวลา Time - OUT ซึ่งเมื่อบิท FSTRT ถูกโปรแกรมจะทำให้ช่วงเวลา Time - OUTมีคาบเวลาน้อยลง ซึ่งมีประโยชน์อย่างมากเมื่อใช้ OSC ที่เป็น Ceramic Resonator

รูปที่ 23 MCU Start - Up , Reset Tied to Vcc Rapidly Rising Vcc

รูปที่ 24 MCU Start - Up , Reset Tied to Vcc Slowly Rising Vcc

รูปที่ 25 MCU Start - Up , Reset Control Externally

External Reset

การรีเซ็ตจากภายนอกจะเกิดขึ้นโดยการให้ลอจิก LOW ที่ขา Reset อย่างน้อย 2 Clock ของสัญญาณนาฬิกาซึ่งเมื่อสัญญาณที่ขอบขาขึ้นของขารีเซ็ตขึ้นถึงระดับTreshold Voltage จะทำให้วงจร Time Delay เริ่มทำงาน ซึ่งCPU จะถูกรีเซ็ตเมื่อคาบเวลาของ Timer Delay มากกว่าคาบเวลาTime - Out

รูปที่ 26 แสดงคาบเวลาของการรีเซ็ตจากภายนอก

Watchdog Reset

เมื่อ WTD TIME - OUT เริ่มกำเนิดสัญญาณ PULSE ที่มีคาบเวลาเท่ากับ Clock ของสัญญาณนาฬิกา โดยในช่วงขอบขาลงของ PULSE จะทำให้ระบบการหน่วงเวลาเมื่อเริ่มทำงานจนหมดช่วงเวลาของ TIME - OUTจึงจะทำให้ CPU รีเซ็ต

รูปที่27 Watchdog Reset During Operation

MCU STATUS REGISTER - MCUSR

BIT

$34($54)

Read/Write

Intial value

7
6
5
4
3
2
1
0
-
-
-
-
-
--
EXTRF
PORF
R
R
R
R
R
R
R/W
R/W
0
0
0
0
0
0
See bit description

MCUSR

 

Bits7..2 - Res : Reserved Bit

บิทในกลุ่มนี้จะถูกสงวนไว้ในส่วนของ AT90S4434/AT90S8535 โดยปรกติจะมีลอจิก 0

Bit - PORF : Power On Reset Flag

บิทนี้จะถูกเคลียร์โดย Power on reset ซึ่งการรีเซ็ตด้วย Watchdog และ External reset จะไม่ทำให้บิทนี้เปลี่ยนแปลง

Bit 0 - EXTRF : External reset flag

หลังจากเกิด POWER ON RESET จะไม่สามารถ กำหนดได้ว่าบิทนี้จะมีสถานะใด ซึ่งสามารถเคลียร์ให้เป็น 0 ได้โดยExternal reset ส่วนการรีเซ็ตโดยระบบ Watchdog จะไม่ทำให้บิทนี้เปลี่ยนแปลง

ตารางที่ 4 แสดงค่าของ PORF และ EXTRF หลังจากการรีเซ็ต

Reset Source
PORF
EXTRF
Power On Reset
1
unchanged
External Reset
unchanged
1
Watchdog Reset
unchanged
unchanged

สามารถใช้บิทที่กล่วามานี้เป็นบิทในการกำหนดเงื่อนไขของการรีเซ็ต

ตารางที่ 5 แสดงเงื่อนไขของการรีเซ็ต

PORF
EXTRF
Reset Source
0
0
Watchdog Reset
0
1
External Reset
1
0
Power On Reset
1
0
Power On Reset

Interrupt Handling

ไมโครคอนโทรลเลอร์ AT90S4434 / AT90S8535 มีรีจีสเตอร์ที่ใช้งานอินเตอร์รัพท์ 2 ตัว คือ GIMSK และ TIMSKที่ใช้บรรจุบิทควบคุมและแสดงบิทสถานะของอินเตอร์รัพท์ ต่างๆ เมื่อมีการอินเตอร์รัพท์เกิดขึ้นจะทำให้บิท I ซึ่งเป็นบิทที่ใช้ควบคุมอินเตอร์รัพท์ถูกเคลียร์เป็น 0 และจะทำให้อินเตอรืรัพท์ทั้งหมดจะถูก Disable ผู้ใช้สามารถ เซ็ตบิท I ให้เป็น 1 เมื่อต้องการ Enable Interrupt เมื่อเกิดอินเตอร์รัพท์จะทำให้ CPU กระโดดไปทำโปรแกรมบริการอินเตอรืรัพท์และเคลียร์ Interrupt Flag ให้เป็น 0 หรือผู้ใช้สามารถเคลียร์ Interrupt Flag ได้โดยการเขียน ลอจิก 1 ลงใน Flag ที่ต้องการเคลียร์

The General Interrupt Mask Register - Enable

Bit

$3B($5B)

Read/Write

Intial value

 

7
6
5
4
3
2
1
0
INT1
INT0
-
-
-
-
-
-
R/W
R/W
R
R
R
R
R
R
0
0
0
0
0
0
0
0

GIMSK