Codevision avr

Знайомство з мікроконтролерами у мене відбулося через бажання зробити градусник. Наскільки я зрозумів, за кількістю варіантів реалізацій таких проектів, термометр на МК це вже як мультивибратор. Знайшов проект з вихідним кодом в цьому самому кожевіжне, витравив плату, спаяв, прошив 5-ю проводками і почав радіти, паралельно колупаючи исходник. Колупати в кодвіжне виявилося дуже просто, якби не деякі проблеми. Чи не повна сумісність версії це ще пів біди, найцікавіша біда це наступний мій проект: годинник на ds1307, ось про нього і буде цей пост.

Зі створенням проекту складнощів немає, середа мені здалася, та й здається досі, дуже юзер френдлі, однак зібрані годинник у мене ходити не збиралися. Запустити їх вдалося лише багаторазовим смикання ресета, і пішов розбір польотів. Повний код приводити сенсу не бачу, так як користувався стандартними бібліотечними функціями. Я, як початківець побіжно оглянув даташит на ds-ку, і виявив там цікавого абзац:

CLOCK AND CALENDAR
The time and calendar information is obtained by reading the appropriate register bytes. The RTC
registers are illustrated in Figure 3. The time and calendar are set or initialized by writing the appropriate
register bytes. The contents of the time and calendar registers are in the BCD format. Bit 7 of register 0
is the clock halt (CH) bit. When this bit is set to a 1, the oscillator is disabled. When cleared to a 0, the
oscillator is enabled.
Please note that the initial power-on state of all registers is not defined. Therefore, it is important
to enable the oscillator (CH bit = 0) during initial configuration. Таак, дивимося тепер в стандартну бібліотеку кодвіжна і бачимо ініціалізацію годинок:

Дивно, тут немає нічого про цей біт. Звичайно подивитися в бібліотеку я здогадався далеко не відразу, адже якось годинник намагалися ходити, тим більше після установки часу (в остановленние- то годинник) вони запускалися:

Причому старт годин тут виходить якимось паразитних, адже явно- то біт старту ніде не описаний.

Рішення моє звичайно криве, але на даному етапі його все-таки можна записати в перемогу

да, прямо після ініціалізації робимо перевірку і стартуємо, якщо треба.

Мій пост звичайно ж не претендує на яку-небудь інформативність, та й корисним його можна назвати напевно з натягом, але, сподіваюся, може він і буде корисний таким же початківцям як і я.

inb4: Так, я розумію, що кодевіжен дуже проблемна середовище, однак як тут часто кажуть, «поріг входження» з нею виявився для мене практично нульовим, відкривши чужий исходник, мені вистачило пари годин з «0» зрозуміти приблизно що і як.

Схожі статті