การรีเซ็ตและการอินเตอร์รัพท์
ไมโครคอนโทรลเลอร์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 แหล่ง คือ
ในระหว่างที่เกิดการรีเซ็ต รีจีสเตอร์ทั้งหมดจะถูกกำหนดให้ค่าเริ่ม และโปรแกรมจะเริ่มทำงานที่ตำแหน่ง$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 |
|
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
|
|
GIMSK
|