ðÏÄËÌÀÞÉÌ Ë ÍÅÇÅ pÅÁÌÔÁÊÍËÌÏË. þÔÅÎÉÅ\ÚÁÐÉÓØ ÐpÏÇpÁÍÍÎÏ - ×ÓÅ pÁÂÏÔÁÅÔ. ïÔËÌÀÞÅÎÉÅ ÐÉÔÁÎÉÑ\ÓÂpÏÓ × ÌÀÂÏÊ ËÏÍÂÉÎÁÃÉÉ - ÎÏpÍÁÌØÎÏ.
þÔÅÎÉÅ\ÚÁÐÉÓØ ÁÐÐÁpÁÔÎÏ - ÇÉÍÏp. ðpÏ×ÏÖÕ ÕÓÔÁÎÏ×ËÕ ÞÁÓÏ×. ðpÏÇpÁÍÍÁ pÁÂÏÔÁÅÔ-ÞÉÔÁÅÔ - ÎÏpÍÁÌØÎÏ. ïÔËÌÀÞÁÀ ÐÉÔÁÎÉÅ\×ËÌÀÞÁÀ - ÓÏÄÅpÖÉÍÏÅ ïúõ ÔÅpÑÅÔÓÑ. þÉÔÁÅÔÓÑ ÇÁÌÉÍÁÔØÑ. ðpÏÉÚ×ÏÖÕ ÚÁÐÉÓØ - pÁÂÏÔÁÅÔ ÎÏpÍÁÌØÎÏ ÄÏ ÏÔËÌÀÞÅÎÉÑ ÐÉÔÁÎÉÑ. Reset ÓÏÄÅpÖÉÍÏÅ ext. ram ÎÅ pÁÚpÕÛÁÅÔ.
þÔÏ ÐÙÔÁÌÓÑ ÐpÅÄÐpÉÎÑÔØ ÄÌÑ ÕÓÔpÁÎÅÎÉÑ ËÏÓÑËÁ:
- ðÕÌÌÁÐ ÎÁ AD0...AD7.
- ðÅpÅÄ pÁÚpÅÛÅÎÉÅÍ external memory ÐÅpÅ×ÏÄÉÌ WR,RD × "1" É "0" ALE.
- DDRG = 0; PORTG = 0XFF; // ÐÏ ÄÅÆÏÌÔÕ É ÔÁË ×ÈÏÄÙ, ×ÏÏÂÝÅ-ÔÏ.
- DDRG = 0xFF; PORTG = 0XFF; // (PORTG = 0 ÔÏÖÅ ÂÙÌ);
- ôÏÖÅ ÓÁÍÏÅ ÄÌÑ PORTA.
- éÚÍÅÎÑÌ Wait-state.
- XMBK = 11. ðÕÌÌÁÐ ÎÁ AD0...AD7.
2. ðÅpÅÄ pÁÚpÅÛÅÎÉÅÍ external memory ÐÅpÅ×ÏÄÉÌ WR,RD × "1" É "0" ALE.
3. DDRG = 0; PORTG = 0XFF; // ÐÏ ÄÅÆÏÌÔÕ É ÔÁË ×ÈÏÄÙ, ×ÏÏÂÝÅ-ÔÏ.
4. DDRG = 0xFF; PORTG = 0XFF; // (PORTG = 0 ÔÏÖÅ ÂÙÌ);
5. ôÏÖÅ ÓÁÍÏÅ ÄÌÑ PORTA.
5. éÚÍÅÎÑÌ Wait-state.
7. XMBK = 1\0..
÷ÏÔ ËÕÓËÉ ÉÓÈÏÄÎÉËÁ:
// init.c
.... MCUCR |= _BV (SRE); // ÒÁÚÒÅÛÉÔØ ×ÎÅÛÎÀÀ ÐÁÍÑÔØ
// Õ×ÅÌÉÞÉÔØ ÃÉËÌ ÏÖÉÄÁÎÉÑ ÄÌÑ ÒÁÂÏÔÙ Ó ÍÅÄÌÅÎÎÏÊ ÐÁÍÑÔØÀ XMCRA |= _BV (SRW01) | _BV (SRW00);
// ÁÄÒÅÓÎÙÅ ×Ù×ÏÄÙ A8...A15 ÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ. // ÕÄÅpÖÉ×ÁÔØ ÐÏÓÌÅÄÎÅÅ ÓÏÓÔÏÑÎÉÅ ÎÁ AD0...AD7 (ÐpÏÂÏ×ÁÌ ÎÅ ÕÄÅpÖÉ×ÁÔØ ÔÏÖÅ) XMCRB |= _BV (XMM2) | _BV (XMM1) | _BV (XMM0) | _BV (XMBK); ...
// End init.c
// rtc_work.c
#define rtc_mem_begin 0x1100
... uchar rtc_read (uchar rtc_address) { uchar *rtc_cell = (uchar *) rtc_mem_begin + rtc_address; return ((uchar) *rtc_cell); } ...
// End rtc_work.c
çÄÅ ×pÁÖÅÓËÁÑ ÚÁÓÁÄÁ?
Alex