Listen to Students Should teaching be a popularity contest? But skilled educators know the value of having good relationships with students.
Software stack overflow Inappropriate modifications to the linker file If you've modified the linker file to create an object larger than bytes, make sure you've followed all of the instructions hereespecially the part about accessing the object through a pointer.
Writing past the end of an array Writing through an uninitialized pointer Not using the variant of the startup code when standard C zeroing behavior is expected.
Not compiling with the large memory model on a K PIC Student writing assignment for misbehaving a PIC with the fast interrupt errata The easiest workaround for this errata is to use the interruptlow keyword on the high-priority interrupt.
Compiling for extended mode with the PIC configured in standard mode, or vice versa. Start by reading about how the software stack is implemented in the Calling Conventions chapter of the user's guide.
Look for large objects that use stack space. Things that are allocated on the stack include function arguments and local variables in functions which do not have the static or rom qualifiers.
Identify large structures and arrays and move them off of the stack by making them static or global, or pass a pointer to the object rather than passing the entire object.
Some library functions, such as the printf family, can use more than 64 bytes of stack space, which alone can blow the stack on parts with 64 bytes of stack space.
If you're still getting a stack overflow, here are some techniques to find it: Set a breakpoint at the beginning of your program. When you hit the breakpoint, fill the stack with a known value, such as 0xAA.
Let your program continue running until it starts misbehaving. Stop your program and inspect the stack area in the File Registers window; if all of your known values have been overwritten, you know you have a stack overflow. Set a complex breakpoint on the last memory address of the stack.
This will cause the debugger to halt at the point of the stack overflow. Enter the last address of the stack memory for example, if your byte stack is at 0x, enter 0x1FFand ensure the breakpoint type is Write.
Other debuggers might have slightly different methods for creating a complex breakpoint or may not support complex breakpoints. Since FSR1 is the stack pointer, you can inspect it at various points in your program to see how much stack has been used.
What is the best way to declare a C18 interrupt service routine ISR? This technique can generally only be used when not using interrupt priorities, which are generally not needed.
If you need interrupt priorities, this is how to declare the two interrupt handlers: Should I use interrupt priorities on the PIC18? This means there is a single interrupt vector at address 0x08, and no interrupts will vector to address 0x The disadvantages to using interrupt priorities are many: More interrupt setup code Higher latency for high-priority interrupts due to the necessary springboard GOTO Much higher latency for low-priority interrupts since they can't use the fast register stack Increased code space usage due to all of the above.
More hardware and software stack space is required. Even ignoring the disadvantages of interrupt priorities, few applications actually need them to perform correctly. A well-written interrupt handler can process all of its interrupts quickly enough to prevent any interrupts from being lost.
A typical example of a situation that needs interrupt priorities is high-speed clock coming in on an INT pin that has very tight timing requirements.
In such a case, it makes sense to enable interrupt priorities, and configure the INT interrupt as the only high-priority interrupt. Using multiple high-priority interrupts is not much different than using compatibility mode, and thus is generally pointless.
Why is my C18 interrupt behaving strangely or not running as fast as I expect? The most common cause is calling a function from the interrupt handler. In C18, calling a function from the interrupt handler triggers a worst-case context save.
This makes high-speed interrupts impossible. Note that the worst-case context save occurs even if the called function has no parameters or local variables, or even if the function is never actually called. The mere presence of a function call statement in the ISR triggers the worst-case scenario on every interrupt.
The easiest solution to this is simply not to call any functions from the interrupt handler, which will give best-case context saving.Assertive Discipline. Assertive discipline is a structured, systematic approach designed to assist educators in running an organized, teacher-in-charge classroom environment.
The current understanding of the inclusive classroom has been broadly misunderstood. It has degenerated into conversations that over generalize the experience of individuals and promote group constructs and stereotypical theories about behavior. Should teaching be a popularity contest? Probably not.
But skilled educators know the value of having good relationships with students. Establishing goodwill can help minimize classroom disruptions, improve student engagement, and reduce stress for everyone.
As ESL teachers we have all had students that can misbehave, it is part of teaching. Here are 5 solutions to misbehaving students.
With over , page views, How To Handle Disrespectful Students is one of the most popular articles on this website—and for good reason. A disrespectful student can get under a teacher’s skin like almost nothing else.
When confronted with disrespect, it’s easy to take it personally. This is a normal reaction from a passionate teacher. The Core Rules of Netiquette are excerpted from the book Netiquette by Virginia Shea. Click on each rule for elaboration. Introduction; Rule 1: Remember the Human; Rule 2: Adhere to the same standards of behavior online that you follow in real life.