K
kar2on
Guest
हाय, मैं नीचे दिए गए कोड का उपयोग किया है कुछ टाइमर उत्पन्न करने के लिए नियमित अंतराल पर एक एमएमसी के लिए डेटा लिखने के बीच में आता है.समस्या है, जब मैं कार्ड से डाटा पढ़ने, शुरुआत क्षेत्र के कुछ बाइट्स भ्रष्ट कर रहे हैं.पढ़ने की बजाय '0 '(0x30), यह पसंद यादृच्छिक वर्ण' @ 'पढ़ा हूँ.ऐसा क्यों है, तो कभी कभी भ्रष्ट डेटा क्षेत्र (हर क्षेत्र के) के पहले कुछ बाइट्स पर है.अन्य क्षेत्र की शुरुआत बार ठीक है, लेकिन अंत आधा भ्रष्ट है ...क्यों है यह तो?
कोड mikroC में लिखा गया था ...किसी से पहले इस समस्या थी?
मैं एडीसी से मान सहित एमएमसी बहुत बार लिखा है, समस्या सॉफ्टवेयर में है ..
अहस्ताक्षरित लघु tmp1;अहस्ताक्षरित कम डेटा = 0x00;
अहस्ताक्षरित लघु data2 [512];
अहस्ताक्षरित int x = 0;
अहस्ताक्षरित लंबे = 584 सूचक;
अहस्ताक्षरित int = 0 निर्गम;
अहस्ताक्षरित = 0 outputlong int;
अहस्ताक्षरित temp_res = 0;
शून्य अंतरायन () (
उत्पादन ;
= 0xF8 TMR0H;
= 0x2F TMR0L;
= 0xA0 INTCON;
)
शून्य मुख्य () (
= 0 WDTCON.F0; / / निष्क्रिय करें पर निगरानी रखने टाइमर
0x20 = TRISC;
0x00 = TRISD;
PORTD.F0 = 1;
0x80 = T0CON; / / 1 से prescaled Timer0 सक्षम / 2
= 0xF8 TMR0L, पहले / / कोई बात नहीं अंतरायन
= 0x2F TMR0H;(x = 0 के लिए एक्स 512 <; x; ) (
data2 [x] = 0x30;
)
जबकि (Mmc_Init! (&, 2 PORTC)); / / एमएमसी intinialize
PORTD.F2 = 1;
= 0xA0 INTCON; / / ग्लोबल इंटरप्ट, Timer0 इंटरप्ट सक्षम करें
/ / Timer0 कोई अतिप्रवाह
समय (1) (
अगर (उत्पादन == 127) (/ / data2 सरणी भरा है
= 0 निर्गम; / / स्पष्ट सरणी
सूचक ; / / वेतन वृद्धि क्षेत्र सूचक
tmp1 = (सूचक, डाटा) Mmc_Write_Sector; / / एमएमसी के लिए डेटा लिखने
PORTD.F3 PORTD.F3 = ~; / / कुछ उत्पादन शो
)
)
}//~!
कोड mikroC में लिखा गया था ...किसी से पहले इस समस्या थी?
मैं एडीसी से मान सहित एमएमसी बहुत बार लिखा है, समस्या सॉफ्टवेयर में है ..
अहस्ताक्षरित लघु tmp1;अहस्ताक्षरित कम डेटा = 0x00;
अहस्ताक्षरित लघु data2 [512];
अहस्ताक्षरित int x = 0;
अहस्ताक्षरित लंबे = 584 सूचक;
अहस्ताक्षरित int = 0 निर्गम;
अहस्ताक्षरित = 0 outputlong int;
अहस्ताक्षरित temp_res = 0;
शून्य अंतरायन () (
उत्पादन ;
= 0xF8 TMR0H;
= 0x2F TMR0L;
= 0xA0 INTCON;
)
शून्य मुख्य () (
= 0 WDTCON.F0; / / निष्क्रिय करें पर निगरानी रखने टाइमर
0x20 = TRISC;
0x00 = TRISD;
PORTD.F0 = 1;
0x80 = T0CON; / / 1 से prescaled Timer0 सक्षम / 2
= 0xF8 TMR0L, पहले / / कोई बात नहीं अंतरायन
= 0x2F TMR0H;(x = 0 के लिए एक्स 512 <; x; ) (
data2 [x] = 0x30;
)
जबकि (Mmc_Init! (&, 2 PORTC)); / / एमएमसी intinialize
PORTD.F2 = 1;
= 0xA0 INTCON; / / ग्लोबल इंटरप्ट, Timer0 इंटरप्ट सक्षम करें
/ / Timer0 कोई अतिप्रवाह
समय (1) (
अगर (उत्पादन == 127) (/ / data2 सरणी भरा है
= 0 निर्गम; / / स्पष्ट सरणी
सूचक ; / / वेतन वृद्धि क्षेत्र सूचक
tmp1 = (सूचक, डाटा) Mmc_Write_Sector; / / एमएमसी के लिए डेटा लिखने
PORTD.F3 PORTD.F3 = ~; / / कुछ उत्पादन शो
)
)
}//~!