pic18 asm macro sorunu

Başlatan emrez, 21 Mayıs 2011, 22:00:03

emrez

arkadaşlar pic18 için gönderdiğim SRAMT(0xff); örnek makro yazmak istiyorum ancak hata alıyorum.
amacım gönderdiğim değerlerdeki örnek 0b11111111 her bir bite göre 7. bitten başlayıp bit 1 ise LATDbits.LATD4 1 olacak, bu kodu c ile 10 * 4 (hspll) 40 mhz de 6 us ile yapabiliyorum, kodun iş gören yeri 3,5 us gibi zaman alıyor ancak kodun başlangıcı ve sonunda bir sürü ekleme aralarda call vs. iki üç saat palsi boş yere giden kodlar ekliyor c18, asm de yazamadım, bunu nasıl yaparım.

#include "P18CXXX.INC"
#include "MACRO.INC"

STRING CODE

;///////////////////////////////////////////////////////////////////////////////////
;// SRAMT(unsigned char c);
;///////////////////////////////////////////////////////////////////////////////////

SRAMT
DEGER
	global SRAMT

		Stk1CpyToReg -1,WREG ; put bank to FSR2H
		MOVWF  DEGER, ACCESS

BCF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x4, ACCESS

MOVLB 0
BTFSC DEGER, 0x7, BANKED
BSF 0xf8c, 0x4, ACCESS
BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x4, ACCESS
BTFSC DEGER, 0x6, BANKED
BSF 0xf8c, 0x4, ACCESS

 clk_high() clk_low() için. lat bit.

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS  once sıfır yap bir if kodundan kurtulmak için alttaki satır pini bir yapmazsa işlem clockta pin 0

BTFSC DEGER, 0x5, BANKED test et gelen bytenin 4.biti 1 se alttaki çalışsın
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC DEGER, 0x4, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC DEGER, 0x3, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS
BTFSC DEGER, 0x2, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x4, ACCESS

BTFSC DEGER, 0x1, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC DEGER, 0, BANKED
BSF 0xf8c, 0x4, ACCESS
                 
BSF 0xf8c, 0x5, ACCESS


NOP
RETURN

 end


hata
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 18 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 19 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 21 : Found opcode in column 1. (MOVLB)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 22 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 23 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 24 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 25 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 26 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 27 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 28 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 30 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 31 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 33 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 35 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 36 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 38 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 39 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 41 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 43 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 44 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 46 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 47 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 49 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 51 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 52 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 54 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 55 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 57 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 58 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 59 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 61 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 62 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 63 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 65 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 66 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 68 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 69 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 71 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 73 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 74 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 76 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 79 : Found opcode in column 1. (NOP)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 80 : Found opcode in column 1. (RETURN)

emrez

#1
Böyle 5,75 -6 us a kadar düştüm, 4 bit 1 5,75 us 8 bit 1 (ff) 6 us bunu 8 bit 1 ile 5,75 e indirmem lazım. derlemne sonrası c18 yine ilaveler yapıyor bu kodu macro yapmam için yardım rica ederim.
void SramWrite(unsigned char data)    
{   //0xfd9  FSR2L   POSTINC1 0xfe6   FSR2L yi posnice taşı
_asm
// FSR1L   FSR2L 
//  91A2    CFD9     MOVFF 0xfd9, 0xfe6

//  91A6    CFE1     MOVFF 0xfe1, 0xfd9

MOVLW 0xfe  //  Verilen 0xfe W'nin içine ata.
MOVFF 0xfdb, 0xfe   //PLUSW2 deki sayıyı  0xfe  ye taşı

BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

MOVLB 0
BTFSC 0xfe, 0x7, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC 0xfe, 0x6, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

 BCF 0xf8c, 0x4, ACCESS

BTFSC 0xfe, 0x5, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC 0xfe, 0x4, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS
BTFSC 0xfe, 0x3, BANKED
BSF 0xf8c, 0x4, ACCESS
  
BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC 0xfe, 0x2, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC 0xfe, 0x1, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC 0xfe, 0, BANKED
BSF 0xf8c, 0x4, ACCESS
                
BSF 0xf8c, 0x5, ACCESS
_endasm
}


c18 kodu uzatunca asm bile olsa, bu kodu biraz daha verimli nasıl yazabilirim. 6 us fazla oluyor. gelen veriyi sram oradanda sd karta atmak için biraz daha kodu itileştirmem lazım.

 >:(

218:               void SramWrite(unsigned char data)    
  91AA    CFD9     MOVFF 0xfd9, 0xfe6
  91AC    FFE6     NOP
  91AE    CFE1     MOVFF 0xfe1, 0xfd9
  91B0    FFD9     NOP
219:               {   //0xfd9  FSR2L   POSTINC1 0xfe6   FSR2L yi posnice taşı
220:               _asm
221:               // FSR1L   FSR2L 
222:               //  91A2    CFD9     MOVFF 0xfd9, 0xfe6
223:               
224:               //  91A6    CFE1     MOVFF 0xfe1, 0xfd9
225:               
226:               MOVLW 0xfe  //  Verilen 0xfe W'nin içine ata.
  91B2    0EFE     MOVLW 0xfe
227:               MOVFF 0xfdb, 0xfe   //PLUSW2 deki sayıyı  0x9e ye taşı
  91B4    CFDB     MOVFF 0xfdb, 0xfe
  91B6    F0FE     NOP
228:               
229:               BCF 0xf8c, 0x5, ACCESS
  91B8    9A8C     BCF 0xf8c, 0x5, ACCESS
230:               
231:               BCF 0xf8c, 0x4, ACCESS
  91BA    988C     BCF 0xf8c, 0x4, ACCESS
232:               
233:               MOVLB 0
  91BC    0100     MOVLB 0
234:               BTFSC 0xfe, 0x7, BANKED
  91BE    BFFE     BTFSC 0xfe, 0x7, BANKED
235:               BSF 0xf8c, 0x4, ACCESS
  91C0    888C     BSF 0xf8c, 0x4, ACCESS
236:               
237:               BSF 0xf8c, 0x5, ACCESS
  91C2    8A8C     BSF 0xf8c, 0x5, ACCESS
238:               BCF 0xf8c, 0x5, ACCESS
  91C4    9A8C     BCF 0xf8c, 0x5, ACCESS
239:               
240:               BCF 0xf8c, 0x4, ACCESS
  91C6    988C     BCF 0xf8c, 0x4, ACCESS
241:               
242:               BTFSC 0xfe, 0x6, BANKED
  91C8    BDFE     BTFSC 0xfe, 0x6, BANKED
243:               BSF 0xf8c, 0x4, ACCESS
  91CA    888C     BSF 0xf8c, 0x4, ACCESS
244:               
245:               BSF 0xf8c, 0x5, ACCESS
  91CC    8A8C     BSF 0xf8c, 0x5, ACCESS
246:               BCF 0xf8c, 0x5, ACCESS
  91CE    9A8C     BCF 0xf8c, 0x5, ACCESS
247:               
248:                BCF 0xf8c, 0x4, ACCESS
  91D0    988C     BCF 0xf8c, 0x4, ACCESS
249:               
250:               BTFSC 0xfe, 0x5, BANKED
  91D2    BBFE     BTFSC 0xfe, 0x5, BANKED
251:               BSF 0xf8c, 0x4, ACCESS
  91D4    888C     BSF 0xf8c, 0x4, ACCESS
252:               
253:               BSF 0xf8c, 0x5, ACCESS
  91D6    8A8C     BSF 0xf8c, 0x5, ACCESS
254:               BCF 0xf8c, 0x5, ACCESS
  91D8    9A8C     BCF 0xf8c, 0x5, ACCESS
255:               
256:               BCF 0xf8c, 0x4, ACCESS
  91DA    988C     BCF 0xf8c, 0x4, ACCESS
257:               
258:               BTFSC 0xfe, 0x4, BANKED
  91DC    B9FE     BTFSC 0xfe, 0x4, BANKED
259:               BSF 0xf8c, 0x4, ACCESS
  91DE    888C     BSF 0xf8c, 0x4, ACCESS
260:               
261:               BSF 0xf8c, 0x5, ACCESS
  91E0    8A8C     BSF 0xf8c, 0x5, ACCESS
262:               BCF 0xf8c, 0x5, ACCESS
  91E2    9A8C     BCF 0xf8c, 0x5, ACCESS
263:               
264:               BCF 0xf8c, 0x4, ACCESS
  91E4    988C     BCF 0xf8c, 0x4, ACCESS
265:               BTFSC 0xfe, 0x3, BANKED
  91E6    B7FE     BTFSC 0xfe, 0x3, BANKED
266:               BSF 0xf8c, 0x4, ACCESS
  91E8    888C     BSF 0xf8c, 0x4, ACCESS
267:                 
268:               BSF 0xf8c, 0x5, ACCESS
  91EA    8A8C     BSF 0xf8c, 0x5, ACCESS
269:               BCF 0xf8c, 0x5, ACCESS
  91EC    9A8C     BCF 0xf8c, 0x5, ACCESS
270:               
271:               BCF 0xf8c, 0x4, ACCESS
  91EE    988C     BCF 0xf8c, 0x4, ACCESS
272:               
273:               BTFSC 0xfe, 0x2, BANKED
  91F0    B5FE     BTFSC 0xfe, 0x2, BANKED
274:               BSF 0xf8c, 0x4, ACCESS
  91F2    888C     BSF 0xf8c, 0x4, ACCESS
275:               
276:               BSF 0xf8c, 0x5, ACCESS
  91F4    8A8C     BSF 0xf8c, 0x5, ACCESS
277:               BCF 0xf8c, 0x5, ACCESS
  91F6    9A8C     BCF 0xf8c, 0x5, ACCESS
278:               
279:               BCF 0xf8c, 0x4, ACCESS
  91F8    988C     BCF 0xf8c, 0x4, ACCESS
280:               
281:               BTFSC 0xfe, 0x1, BANKED
  91FA    B3FE     BTFSC 0xfe, 0x1, BANKED
282:               BSF 0xf8c, 0x4, ACCESS
  91FC    888C     BSF 0xf8c, 0x4, ACCESS
283:               
284:               BSF 0xf8c, 0x5, ACCESS
  91FE    8A8C     BSF 0xf8c, 0x5, ACCESS
285:               BCF 0xf8c, 0x5, ACCESS
  9200    9A8C     BCF 0xf8c, 0x5, ACCESS
286:               
287:               BCF 0xf8c, 0x4, ACCESS
  9202    988C     BCF 0xf8c, 0x4, ACCESS
288:               
289:               BTFSC 0xfe, 0, BANKED
  9204    B1FE     BTFSC 0xfe, 0, BANKED
290:               BSF 0xf8c, 0x4, ACCESS
  9206    888C     BSF 0xf8c, 0x4, ACCESS
291:                               
292:               BSF 0xf8c, 0x5, ACCESS
  9208    8A8C     BSF 0xf8c, 0x5, ACCESS
293:               _endasm
294:               }
  920A    52E5     MOVF 0xfe5, F, ACCESS
  920C    CFE7     MOVFF 0xfe7, 0xfd9
  920E    FFD9     NOP
  9210    0012     RETURN 0
295:               

Tagli

Shift register mı yapmaya çalışıyorsun? Yazdığın asm kodu karışık gözüküyor. Arka arkaya komutları bu şekilde sıralamak yerine çok basit bir döngü oluşturabilirsin.  Ayrıca, sana tavsiyem, asm kodunu ayrı bir dosyada yazıp o şekilde çağırman. C ve asm kodunun beraber kullanımı hakkında maalesef deneyimim yok ama okuduğum kadarıyla, inline olarak birkaç satırdan fazla asm kodu yazılması tavsiye edilmiyor.
Gökçe Tağlıoğlu

emrez

teşekkür ederim,  bir byte değer yolluyorum bu bytenin bitlerinin 1-0 olmasına göre sırası ile bir pini 0-1 yapıyorum (bit7 0 sa pin de sıfır) sonrasında başka bir pin + sonra - oluyor bir sonraki 6. bite göre pin 0 veya 1 oluyor, yine diğer bir pin +- oluyor, şuan devre sorunsuz sram yazma yapıyor ancak max 6 us min 5,25 us gibi bir sürede bir karakteri srama atarken 4,5 usta okuma yapıyor, okuma hızı çok iyi çünkü bunun için c18 de yazılan kod asm ye en az döngüde uyarlanıyor ancak yazma için olan kodu biraz daha kısaltabilirsem uygun zamanlı sd kart / sram ve gelen dataların srama yazılmasını sağlayabilirim. asm macro yazmayı başaramadığımdan mecburen inline ekledim. c18 in yazdığı gibi oldu ancak burada bitlere tek tek bakmak için c18 de uygun bir kısa kod bulamadığım için bu şekilde yazdım,  asm yerine byte -> 8 bit struct ile c18 ile yapmayıda denedim. hız olarak yakın sonuçlar aldım (bitlere tek tek bakmak için bildiğim en hızlı yöntem sadece  struct ->8 bit). daha kısa yolu varmıdır bilmiyorum malesef.

CLR

#4
Alıntı yapılan: emrez - 21 Mayıs 2011, 22:00:03
arkadaşlar pic18 için gönderdiğim SRAMT(0xff); örnek makro yazmak istiyorum ancak hata alıyorum.
amacım gönderdiğim değerlerdeki örnek 0b11111111 her bir bite göre 7. bitten başlayıp bit 1 ise LATDbits.LATD4 1 olacak, bu kodu c ile 10 * 4 (hspll) 40 mhz de 6 us ile yapabiliyorum, kodun iş gören yeri 3,5 us gibi zaman alıyor ancak kodun başlangıcı ve sonunda bir sürü ekleme aralarda call vs. iki üç saat palsi boş yere giden kodlar ekliyor c18, asm de yazamadım, bunu nasıl yaparım.

#include "P18CXXX.INC"
#include "MACRO.INC"

STRING CODE

;///////////////////////////////////////////////////////////////////////////////////
;// SRAMT(unsigned char c);
;///////////////////////////////////////////////////////////////////////////////////

SRAMT
DEGER
	global SRAMT

		Stk1CpyToReg -1,WREG ; put bank to FSR2H
		MOVWF  DEGER, ACCESS

BCF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x4, ACCESS

MOVLB 0
BTFSC DEGER, 0x7, BANKED
BSF 0xf8c, 0x4, ACCESS
BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x4, ACCESS
BTFSC DEGER, 0x6, BANKED
BSF 0xf8c, 0x4, ACCESS

 clk_high() clk_low() için. lat bit.

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS  once sıfır yap bir if kodundan kurtulmak için alttaki satır pini bir yapmazsa işlem clockta pin 0

BTFSC DEGER, 0x5, BANKED test et gelen bytenin 4.biti 1 se alttaki çalışsın
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC DEGER, 0x4, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC DEGER, 0x3, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS
BTFSC DEGER, 0x2, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x4, ACCESS

BTFSC DEGER, 0x1, BANKED
BSF 0xf8c, 0x4, ACCESS

BSF 0xf8c, 0x5, ACCESS
BCF 0xf8c, 0x5, ACCESS

BCF 0xf8c, 0x4, ACCESS

BTFSC DEGER, 0, BANKED
BSF 0xf8c, 0x4, ACCESS
                 
BSF 0xf8c, 0x5, ACCESS


NOP
RETURN

 end


hata
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 18 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 19 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 21 : Found opcode in column 1. (MOVLB)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 22 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 23 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 24 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 25 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 26 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 27 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 28 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 30 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 31 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 33 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 35 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 36 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 38 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 39 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 41 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 43 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 44 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 46 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 47 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 49 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 51 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 52 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 54 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 55 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 57 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 58 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 59 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 61 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 62 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 63 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 65 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 66 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 68 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 69 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 71 : Found opcode in column 1. (BCF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 73 : Found opcode in column 1. (BTFSC)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 74 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 76 : Found opcode in column 1. (BSF)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 79 : Found opcode in column 1. (NOP)
Warning[203] D:\NEWPCB\SOURCES\FASTTEST.ASM 80 : Found opcode in column 1. (RETURN)



Merhaba,

Macro ile byte byte veri gönderilmez, programın çok şişer, altroutine veya fonksiyon ile göndermelisin. Anladığım kadarıyla hızlı göndersin diyorsun, bunun için en iyi çözüm, donanımsal spi modüldür, yoksa sram'a data göndereceğim diye tüm işlemciyi meşgul edersin.
Donanımsal spi'ı hazırla ve her gönderimden sonra interrupt oluştursun ve yeni data alsın onu göndersin. Spi gönderirkende işlemci boş kalsın.


Knowledge and Experience are Power

emrez

teşekkür ederim, amacım sram ı direk ram olarak kullanmak, spi yolunda sd kart mevcut uart ile 11 kb veriyi alıp direk srama yazıyorum gelen veri 11 kb olduğundan ve sdkarta hazırlamak yazmak uzun sürdüğünden sramdan veriyi 11kb sonrası bekleme sürecinde direk sd karta hızlıca aktarıyorum. şuan devre sorunsuz çalışıyor ancak bazı durumlarda tam veri yazımı bitmeden 6-10 kadar byte kala uart üzerinden kesme girip yeni veri gelmeye başlıyor hızlı yazıp okumam için kodu optimize etmem gerekli yoksa her defasında bir miktar verim kaybolacak,  bunu devreden logic analyzer ile test ediyorum.  belki bir iki kod az yazsam olacak gibi. tekrar teşekkür ederim.

Tagli

Araya tampon koymayı denedin mi? Eğer seri porttan gelen veri normalde SD karta yazma hızından daha yavaş geliyorsa ve sadece bazı durumlarda yazma hızından daha hızlı veri alıyorsan araya koyacağın bir tampon bellek sorununu çözebilir.
Gökçe Tağlıoğlu

Elektroemre

Selamlar emrez hocam,

Merakımı mazur görürseniz bir şey sormak istiyorum;
Eski bilgisayarlara ilgim var ara sıra http://www.commodore.gen.tr/forum/ adrsine göz atarım.
Buradada emrez nickli bir üye bulunmakta, acaba oradaki kişi sizmisiniz?
Amigalarla ilgili yeni bir proje mi yoksa buda? :)

İyi çalışmalar diliyorum.

emrez

Selam arkadaşlar, c18 ile en iyi btye bit uyarlaması asm kodunu kısa tutuyor "tabi kod kısa içindeki call kodları ile 8 us-12 us a çıkıyor," bende bir hile yaptım ancak araya kesme girerse srama veri yanlış yazılır /uzun asm oldu ama az çevrim / buna dikkat edeceğim, şimdilik 5-6 us kadar. c18 de if(veri&0b1000000) gibi yapınca asm tarafı her defasında veriyi w ye yüklüyor ve rcall yapıyor.

Evet bu kullanıcı benim,  amiga ve commoder bilgisayarlarlara benimde ilgim var.

Alıntı yapılan: Elektroemre - 23 Mayıs 2011, 22:54:33
Selamlar emrez hocam,

Merakımı mazur görürseniz bir şey sormak istiyorum;
Eski bilgisayarlara ilgim var ara sıra http://www.commodore.gen.tr/forum/ adrsine göz atarım.
Buradada emrez nickli bir üye bulunmakta, acaba oradaki kişi sizmisiniz?
Amigalarla ilgili yeni bir proje mi yoksa buda? :)

İyi çalışmalar diliyorum.

emrez

10 mhz hspll  yaklaşık 4,5-5 us macro çok verimli çalışıyor. işinize yarayabilir.

// extern char FSRAM(char c); // WREG e değeri attık
// ornek  FSRAM(0x0f);

#include "P18F4620.INC"
#include "C18MACRO.INC"

STRING CODE


FSRAM
  global FSRAM


BCF LATD,5, ACCESS
BCF LATD,4, ACCESS
BTFSC WREG,7, ACCESS
BSF LATD,4, ACCESS

BSF LATD,5, ACCESS
BCF LATD,5, ACCESS
BCF LATD,4, ACCESS

BTFSC WREG,6, ACCESS
BSF LATD,4, ACCESS


BSF LATD,5, ACCESS
BCF LATD,5, ACCESS
BCF LATD,4, ACCESS

BTFSC WREG,5, ACCESS
BSF LATD,4, ACCESS

BSF LATD,5, ACCESS
BCF LATD,5, ACCESS
BCF LATD,4, ACCESS

BTFSC WREG,4, ACCESS
BSF LATD,4, ACCESS

BSF LATD,5, ACCESS
BCF LATD,5, ACCESS
BCF LATD,4, ACCESS

BTFSC WREG,3, ACCESS
BSF LATD,4, ACCESS

BSF LATD,5, ACCESS
BCF LATD,5, ACCESS
BCF LATD,4, ACCESS

BTFSC WREG,2, ACCESS
BSF LATD,4, ACCESS

BSF LATD,5, ACCESS
BCF LATD,5, ACCESS
BCF LATD,4, ACCESS

BTFSC WREG,1, ACCESS
BSF LATD,4, ACCESS


BSF LATD,5, ACCESS
BCF LATD,5, ACCESS
BCF LATD,4, ACCESS

BTFSC WREG, 0, ACCESS
BSF LATD,4, ACCESS

BSF LATD,5, ACCESS


RETURN     

end