??? 11/11/09 02:25 Read: times |
#170674 - Many, but quite simple steps Responding to: ???'s previous message |
Richard said:
Do you think students are "up-to" such a project, and, would they be first-year, or second-year students? Yes, definitely second-year students. First-year students have lot of basic skills to learn and then it's best to focus on one thing at a time. The biggest stumble stone is to take the first step. To not just see unsolvable problems but to instead jot down the things to solve and take them one-by-one. A common problem is that people see one big problem. They then start with a big-bang approach, making them unable to keep track of all the new information from all the datasheets, together with all the requirements specified for the assignment. In this case, they can make a large list of reasonably small and easy problems. - how to get a timer to tick a fixed number of times / second to count time (probably already solved in earlier exercise - blinky) - how to drive a single LED array, handling the required currents (simple transistor knowledge or suitable buffer chips) - how to convert a second tick into "time" - hours, minutes and seconds (trivial math + language/assembler skills) - how to map a time into the displayed words (simple logic requiring either a lot of decisions or a lookup table) - how to multiplex the diodes (unless the selected processor has enough signals) - how to map displayed words into individual backlighting "pixels" (possibly using trivial table lookup) - how to set the time (easiest to do what almost every other digital clock does - a couple of buttons and single-step or repeat) - how to debounce the keys most probably used for setting the time (and probably solved in earlier exercise) - how to supply power of suitable voltage(s) and current (unless just using power cube as non-permanent solution) - how to package the electronics (plexi front etc) - how to measure ambient light (optional bonus feature) - how to control the intensity of the backlighting (optional bonus feature) - how to display a flashing led somewhere as one-second marker (optional bonus feature) - how to protect multiplexed diodes from a CPU hang (optional bonus feature only relevant if they run the diodes at high intensities) - how to survive a short power failure (optional bonus feature) - how to restart in case of a hang (optional bonus use of internal or external watchdog) - how to compensate for precision and temp drift of crystal (optional bonus feature - extra correction ticks and/or oscillator module) - what to display if time hasn't been set (optional bonus feature) - power save by controlling clock backlight with motion detector (optional bonus feature) - ... Most probably, the hardest step will be the multiplexing. Not because it is hard, but because they will assume that it is hard. In this case, most of the problems with the code implementation doesn't apply. No worry about real-time updates of displayed data, since the display only changes once/minute unless they use one or more diodes of the matrix for flashing a one-second marker. No worry about behaviour of scrolling text. No memory constraint because of the tiny number of controllable light points. No timing issue sending out the refresh data since the amount of data to emit is so tiny. No worries about non-uniform color from the modulation of intensity. In the end, most problems are trivial or at least very simple, if broken down into steps. And each step can be solved using knowledge from previous lessons, or trivial use of Google. No need to cry for help on any web forum. But definitely an opportunity to create a thread discuss the advantages of different solutions. It is from feedback we can speed up our learning. But only feedback in relation to own work. |