Расскажу про грабли, на которые сегодня наступил, чтоб другие не наступали. Я пока начинающий, по этому профи это все может быть давно известно, а вот новичкам как я пригодится. Значит так: Девайс at90s2313, но думаю справедливо для любого с 16-битным счетчиком. Завожу я 16-битный каунтер, он начинает тикать. Выгребаю постоянно его значения из TCNT1H, сравниваю, не натикало ли столько сколько мне нужно, если да, переключаю одну из ног в противоположное положение и записываю нули в TCNT1H и TCNT1L, чтоб заново считал.... В симуляторе в AVR Studio все пашет. Заливаю в МК - шиш! Полдня парился, пока не залез в даташит и не прочитал, что при записи в TCNT1H и TCNT1L сначала нужно обязательно писать в TCNT1H, а при чтении наоборот, первым читать TCNT1L. Причем TCNT1L вообще не пишется, пока не запишешь че-нить в TCNT1H, то есть нельзя в него по отдельности писать. С чтением наверное то-же, не проверял. Сделал, как написано - воркает!!! А симулятор молчал паразит! Мораль: не пологаться на 100% на симулятор, и побольше читать даташиты...
|