The Author Online Book Forums are Moving

The Author Online Book Forums will soon redirect to Manning's liveBook and liveVideo. All book forum content will migrate to liveBook's discussion forum and all video forum content will migrate to liveVideo. Log in to liveBook or liveVideo with your Manning credentials to join the discussion!

Thank you for your engagement in the AoF over the years! We look forward to offering you a more enhanced forum experience.

vmars316 (14) [Avatar] Offline
#1
Greetings,
I am having trouble with the 'interrupt coding' Listing 2.2 Start-stop display.
This !state is new to me:
Evidently, state = !state; is the same as state = 0 ?

I see how the normal flow of code is interrupted, and just stops (I guess).
But I don't yet see (codewise) HOW program gets STARTED UP again ( void loop(){ .
Can you help me with this?
Thanks
martin.evans (25) [Avatar] Offline
#2
Re: After interrupt, how does ( void loop() get started up again?
Hi
the statement state = !state; isn't the same as state = 0;
The ! is a logical operator and means NOT,
so state = !state; in plain means
state equals NOT state; i.e becomes the opposite.

There's a coding primer in Appendix B, have a look at that, it might help.
Thanks
Martin
vmars316 (14) [Avatar] Offline
#3
Re: After interrupt, how does ( void loop() get started up again?
Thanks,
I see how the normal flow of code is interrupted, and just stops (I guess),
at the end of 'ledOnOff' routine.
But I don't yet see (codewise) HOW program gets STARTED UP again.
Pls, what is the 'code flow', once the button is clicked for ON, doesn't program
go to ledOnOff first?
Pls, what is that 'code flow'?
Can you help me with this?
Thanks
martin.evans (25) [Avatar] Offline
#4
Re: After interrupt, how does ( void loop() get started up again?
Hi
the switch is a momentary contact switch, so each time you press it the state is changed within the interrupt routine. So the leds either start or stop flashing.
Thanks
Martin
vmars316 (14) [Avatar] Offline
#5
Re: After interrupt, how does ( void loop() get started up again?
Thanks,
<<the switch is a momentary contact switch, so each time you press it the state is changed within the interrupt routine. So the leds either start or stop flashing.>>
Yes, I understand WHAT it does. I want to know HOW it does it.
When the button is pressed, codeFlow goes directly to LedOnOff routine.
How does program know to "NOT go back to Loop", for !state?
How does program know to "YES go back to Loop", for state?
I don't see any GOTOs.
What part of the code says "YES go back to Loop".
Thanks...Vernon
martin.evans (25) [Avatar] Offline
#6
Re: After interrupt, how does ( void loop() get started up again?
Hi
The interrupt routine is called whenever the button is pressed. No matter where it is in the loop routine, when the interrupt function completes it returns to the loop at the point in the loop it was called from.
Thanks
Martin
vmars316 (14) [Avatar] Offline
#7
Re: After interrupt, how does ( void loop() get started up again?
Oh,
I get it (I think):
State is initially state = LOW (or !state), so the program keeps looping thru the 'Loop'
endlessly checking state to see if it is HIGH ?
The lights don't light up until state = HIGH.

Is that right so far?
Thanks...vm
martin.evans (25) [Avatar] Offline
#8
Re: After interrupt, how does ( void loop() get started up again?
Hi vm

yes that's right, and when the button is pressed again state changes back to low turning the led's off.

Martin
vmars316 (14) [Avatar] Offline
#9
Re: After interrupt, how does ( void loop() get started up again?
Also, I need some clarification on different useages of 'state'
1)
state = !state;
state has only two values, LOW and HIGH:
This statement says 'set state equal to' = 'what state is NOT' .
In other words if state is LOW (it is NOT HIGH), then change state to HIGH,
and if state is HIGH (state is NOT LOW), change state to LOW .
[stranger than fiction to me]

2)
where as:
if (!state)
says if state is not HIGH, in other word, if state is LOW.

Is that the difference between the two state useages.

Thanks...
martin.evans (25) [Avatar] Offline
#10
Re: After interrupt, how does ( void loop() get started up again?
Yes that's correct
akiru (1) [Avatar] Offline
#11
Re: After interrupt, how does ( void loop() get started up again?
แต่กลับพบประเทศที่มีการออกหลักเกณฑ์ในการจัดสรรเบอร์สวยด้วยการประมูลโดย 2 ประเทศ คือ สิงคโปร์และมาเลเซีย ทำให้คณะอนุกรรมการบูรณาการและปรับปรุงกฎหมายโทรคมนาคมฯ เห็นว่า สำหรับประเทศไทย ไม่ควรมีการประมูลเบอร์สวย แต่จากความเห็นที่ต่างกันของคนในคณะกรรมการกิจการโทรคมนาคม (กทค.) ซึ่งเป็นคณะกรรมการชุดหลักของ กสทช. ทำหน้าที่ในการกำกับกิจการโทรคมนาคม และดูแลเรื่องการจัดสรรเลขหมายโทรศัพท์ ซึ่งไม่กี่เดือนที่ผ่านมามีการเสนอให้นำเบอร์สวยที่เคยชะลอไว้ 1.74 ล้านเลขหมาย คืนให้แก่ผู้เสริมการที่เคยถูกดึงเบอร์สวยออกมาจากการจัดสรรตามปกติ ทำไมถึงต้องเป็นอย่างนั้น ก็เพราะว่าคนเราชอบสิ่งไหนไม่เหมือนกัน เบอร์ dtac การนำผลการศึกษานี้มาสรุปว่าการประมูลเบอร์สวยไม่ควรเกิดขึ้นในประเทศไทย เพราะประเทศอื่นๆ ส่วนใหญ่ไม่มีการประมูลเบอร์สวยนั้น ควรมีการพิจารณาอย่างละเอียดรอบคอบ เบอร์ ซิมเติมเงินจะมีวันหมดอายุระบุไว้ที่แพ็คเก็จ ถ้าใกล้จะถึงวันที่ระบุ เราต้องนำซิมใส่เข้าเครื่องมือถือและทำการเปิดเบอร์เพื่อต่ออายุของซิม เบอร์สวย จากรายงานการใช้ประโยชน์และความขาดแคลนเลขหมายโทรคมนาคม ได้มีการเลือกประเทศกลุ่มตัวอย่างจำแนกตามภูมิภาค คือ ประเทศสหรัฐอเมริกา จากทวีปอเมริกาเหนือ