04 октомври, 2007

Да пишем на С за Microchip MCU

Започнах с Тонито преди време една тема "Да пишем на С за Microchip MCU". Пред мен стоеше задачата с минимум време да предам знания, необходими за да се напише първата програмка. И от там - в процеса на писане на нови и нови програми да се навлиза все повече в същността. Започнато почти на шега, преминахме горе-долу в следната последователност:
(за съжаление не мога да посоча колко време е отделено за всеки разгледан въпрос)

Начално състояние: 11-класничка с някакви понятия от информатика и С, придобити в СМГ
  1. Бройни системи. Двоична, десетична и шестнадесетична система, преминаване от една към друга.
  2. Bit-wise операции - AND, OR, XOR . Приложението им в практиката.
  3. Принцип на работата на динамичната индикация. Седемсегментни светодиодни индикатори, ОА, ОК.
  4. Архитектура на Microchip MCU - съвсем бегъл обзор: памет-flash, EEPROM, RAM; ядро + периферия: портове, таймери, АЦП, USART.(Засега без компараторите, Capture/Compare, WDT, SPI и т.н., не се разглежда von Neuman и Harvard архитектура)
  5. Понятия за интерфейс и протокол (седемслойният модел на OSI - друг път)
  6. Синхронно и асинхронно предаване на данни. RS-232. Старт, стоп бит, битове за данни, контрол по четност/нечетност. Лог. "0" и "1", TTL нива и нива при RS-232
  7. Запознаване с CCS, PicWizard. IC-PROG, програматор Schaer
  8. Типове променливи, разлики спрямо "познатото" С. Variable scope
  9. Програмирането: 1% писане + 99% дебъгване.
  10. Първи проект: PIC16F628, 4-разрядна седемсегментна LED индикация, два бутона(червен и зелен.) При натискане на зеления бутон започва броене от 0000 до 9999 с период 1с (0.1 или 00.1сек). При натискане на червения - спира броенето. Тука се учат много неща..
  11. Усложняване на експеримента: при задържане натиснат червения бутон повече от секунда - нулиране на брояча.
  12. Усложняване 2: при натискане неколкократно на червения да показва времето на съответното натискане, вътрешно да продължава да си брои...т.е. засичане на междинни времена, като на състезание.
  13. Втори проект: при натискане на зеления бутон да се генерира случайно число и да започне обратно отброяване до 0. Като стигне до 0 - ще направи нещо, ама какво - и аз не знам. Тука се появяват функциите rand(), srand(), директивата ifdef (за да се дефининира RAND_MAX)
(ще се дописва още....)

Няма коментари:

Публикуване на коментар