Sida 2 av 16

Postat: 4 november 2004, 17:49:54
av PatrikB
Misstänkte att det var BGA, någon som vet hur många anslutningspunkter det är ?

Ska se om jag kan rota fram koden, den är skriven för PIC - C http://www.ccsinfo.com/picc.shtml

Postat: 4 november 2004, 19:39:55
av strombom
Johan.o skrev:Jag skulle villja ha 50st vid max $4.99 st
Men lite billigare skadar aldrig.

/ Johan
oj vad ska du bygga? :)

/Johan

Postat: 4 november 2004, 19:51:12
av Johan.o
Ingen aning, men det är alltid bra att ha några extra =)
Synd bara att det inte var klass 1, dom här räcker bara ett tiotal meter.

/Johan

Postat: 4 november 2004, 20:22:13
av matseng
PatrikB skrev:Misstänkte att det var BGA, någon som vet hur många anslutningspunkter det är ?
30 BGA punkter varav 10 st inte används till något.

Dom är 0.89 mm stora och sitter med 1.25 mm CC, dvs 0.35 mm avstånd mellan dom.

Dom sitter i två grupper. En grupp med 2x6 st och en grupp med 3x6 st.

Dom dom sitter i 2x6-gruppen kan man nog lösa på kablar på - virtråd är praktiskt tror jag i detta fallet. Men att komma år och löda på mittenraden i 3x6-gruppen blir inte kul. Som tur är så är det bara en eller två punkter i mittenraden som är viktiga.

Postat: 4 november 2004, 21:45:38
av PatrikB
Här är en del av koden, vet inte om den säger speciellt mycket men den fungerar iaf. Detta är taget ur ett större program som jag gjort så det kan saknas kod. Kan även tillägga att det är ingen lektion i att skriva bra C ; )

Kod: Markera allt

#byte ADCON0 = 0x1F  // Kontrollregister 0 till ADC
#byte ADCON1 = 0x9F  // Kontrollregister 1 till ADC
#byte ADRESH = 0x1E  // Resultatregister H till ADC
#byte ADRESL = 0x9E  // Resultatregister L till ADC
#byte RCSTA = 0x18   // Receiver status reg
#byte RCREG = 0x1A   // Receiver reg
#byte TCREG = 0x19   // Transmitter reg
byte BTADR[6];       // Slave Adr
byte BTMADR[6];      // Master Adr
byte HANDLE[2];

//-----------------------RS232----------------------------------------------
// Circulär buffer för mottagna tecken kanal 0
byte FInRB0;                         // Pekar först i bufferten
byte LInRB0;                         // Pekar sist i bufferten
byte const NumInRBuf0 =16;           // OBS 2^n
byte RxBuf0[NumInRBuf0 ];            // Bufferten
byte const RBMask0 = NumInRBuf0-1;   // OBS 2^n-1

// Circulär buffer för att sända tecken kanal 0
byte FInTB0;                         // Pekar först i bufferten
byte LInTB0;                         // Pekar sist i bufferten
byte const NumInTBuf0 =16;           // OBS 2^n
byte TxBuf0[NumInTBuf0 ];            // Bufferten
byte const TBMask0 = NumInTBuf0-1;   // OBS 2^n-1

#int_tbe     // Avbrottsrutin för sändning av data
tbe_isr() { // Async Serial Data Transmitted
 if(FInTB0==LInTB0) {
   disable_interrupts(INT_TBE);
 } else {
   TCREG=TxBuf0[FInTB0=(++FInTB0) & TBMask0];
 }
}
void SendC0(byte b){    // Lägger en byte i databufferten för sändning
  TxBuf0[LInTB0=(++LInTB0) & TBMask0]=b;
  enable_interrupts(INT_TBE);
}
#INT_RDA    // Avbrottsrutin för mottagning av data
ReceiveInt() {
   RxBuf0[LInRB0=(++LInRB0) & RBMask0]=RCREG;
   if (BIT_TEST(RCSTA,1)) {  // check and clear overrun error
    BIT_CLEAR(RCSTA,4);
    BIT_SET(RCSTA,4);
  };
}
byte NumInRB0(){ // Returnerar antalet byte i mottagningsbufferten
  return (LInRB0-FInRB0) & RBMask0;
}
byte GetC0() {    // Hämtar en byte ur mottagningsbufferten
  return RxBuf0[FInRB0=(++FInRB0 & RBMask0)];
}
void EmptyBuffer(){ //Tömmer inbufferten
   byte tmp;
   while(numinrb0())
      tmp=getc0();
}


//------------------------BT---------------------------------------------
short WaitForBTReply(byte n, long t){ //Väntar t ms på n byte i inbufferten
  while(t && numinRb0()<=n){
	  delay_ms(1);
      t--;
  }
  if(numinrb0() == n)
      return 1;
  while(numinrb0()) 
	  getc0();
  return 0;
}

void ResetBTModule(){//Gör reset på BT-modulen
short ok=0;
byte i=0;
byte a[7] = {0x04,0x0e,0x04,0x01,0x03,0x0C,0x00};
   for(i=3;i<7;i++)sendc0(a[i]);
   if(waitforbtreply(7,100))
       for(i=0,ok=1;i<7;i++)
           if(getc0() != a[i]) ok = 0;

   if(ok)
       return 1;
   return 0;
}
short GetBTDevAdr(){ //Hämtar BT:ns adress
short ok=0;
byte i=0;
byte a[7] = {0x04,0x0e,0x0a,0x01,0x09,0x10,0x00};
   for(i=3;i<7;i++)sendc0(a[i]);
   if(waitforbtreply(13,100))
      for(i=0,ok=1;i<7;i++)
         if(getc0() != a[i]) ok = 0;
   if(ok){
      for(i=0;i<6;i++)
            BTADR[i]=getc0();
      return 1;
      }
   for(i=0;i<6;i++)
      BTADR[i] = 0x00;
   return 0;
}
short SetBTEventFilter(){//Sätter upp eventfilter för kommunikation med mastern
short ok=0;
byte i=0;
byte a[7] = {0x01,0x05,0x0c,0x03,0x02,0x00,0x02};
byte b[7] = {0x04,0x0e,0x04,0x01,0x05,0x0c,0x00};
   for(i=0;i<7;i++)sendc0(a[i]);
   if(waitforbtreply(7,100))
      for(i=0,ok=1;i<7;i++)
         if(getc0() != b[i]) ok = 0;
   if(ok)
	   return 1;
return 0;
}
short BTWriteScanEnable(){//Gör writescan enable för kommunikation med mastern
short ok=0;
byte i=0;
byte a[5] = {0x01,0x1A,0x0c,0x01,0x03};
byte b[7] = {0x04,0x0e,0x04,0x01,0x1a,0x0c,0x00};
byte c[4] = {0x04,0x03,0x0b,0x00};

   for(i=0;i<5;i++)sendc0(a[i]);
   if(waitforbtreply(7,100))
      for(i=0,ok=1;i<7;i++)
         if(getc0() != b[i]) ok = 0;
   if(!ok) return 0;

   if(waitforbtreply(14,10000)){
      for(i=0,ok=1;i<4;i++)
         if(getc0() != c[i]) ok = 0;
      if(!ok) return 0;
      HANDLE[1]=getc0();
      HANDLE[0]=getc0();
      for(i=0;i<6;i++)
         BTMADR[i]= getc0();
      return 1;
   }
   else return 0;
}
short ConnectToRemoteMasterAsSlave(){ //Kör hela uppkopplingen mot mastern


   if(!resetbtmodule())
      return 0;

   if(!GetBTDevAdr())
      return 0;

   if(!SetBTEventFilter())
      return 0;

   if(!BTWriteScanEnable())
      return 0;

   return 1;
}
byte WaitForACLReply(){ //Väntar på svar efter att ha sänt ett ACL paket
short Ok=0;
long i=0xFFFF;
byte a[9] = {0x02,0x00,0x20,0x05,0x00,0x01,0x00,0x00,0x00};
a[1] = HANDLE[1];

   while(i && !ok){
      if(numinrb0() == 10){
         Ok = 1;
      }
      i--;
   }
   if(Ok){
      for(i=0,ok=1;i<9;i++)
         if(getc0() != a[i]) ok = 0;
      if(ok)
         return getc0();
      else
         getc0();
   }
   else
      emptybuffer();
   return 0;
}
void SendACLByte(byte d){ //Skickar ett ACL paket med en data byte
byte i,j=1;
byte a[10] = {0x02,0x00,0x20,0x05,0x00,0x01,0x00,0x00,0x00,0x00};
   a[9] = d;
   a[1] = HANDLE[1];
   do{
      emptybuffer();
      for(i=0;i<10;i++)sendc0(a[i]);
      i = WaitForACLReply();
      j--;
   } While(j && !i);
   emptybuffer();
}

Postat: 4 november 2004, 22:43:17
av Elektron
Jag köper gärna en 10stycken om det blir sambeställning av. Kan tänka mig några fler om vi inte når upp till 50gränsen.

Postat: 5 november 2004, 01:45:56
av chille
Er som klagar på att det bara är 10m räckvid kan jag bara råda att ni ska modda dom för längre räckvidd 8-)

PatrikB:
Vilkan BT-modul använder du?

Och för er andra som har frågar så säger jag: RTFM! :)

(Tankar upp all info jag hittat på min webserver och drar en edit med adress här så fort jag får tid/orkar)

Postat: 5 november 2004, 03:32:55
av klintan
ja för va 5 dollar nu blir * 7 cirka? 35 spänn styck skulle jag kunna tänka mig 4 att labba med :)

Postat: 5 november 2004, 04:35:48
av chille
http://chille.se/bt/

Där tänkte jag vi skulle samla all info vi har :)

Postat: 5 november 2004, 06:24:00
av sebastiannielsen
är inte dollarn 9 nu? 5 * 9 = 40 kr /styck.

Postat: 5 november 2004, 07:05:18
av chille
Nä, den är några ören under 7 nu.

Kolla forex

Postat: 5 november 2004, 13:09:56
av Johan.o

chille"]Er som klagar på att det bara är 10m räckvid kan jag bara råda att ni ska modda dom för längre räckvidd 8-)
har du något länktips hur man moddar dessa moduler?

Postat: 5 november 2004, 13:40:41
av chille
Beror ju helt och håller på hur lång räckvidd man vill ha, vad det är för modul, vad man har för krav osv.

Enklaste är ju att bara slänga på en egen antenn, det ger förvånansvärt mycket bättre räckvidd.

Postat: 5 november 2004, 13:58:29
av Johan.o
Jag tänker då på de aktuella modulerna, som den här tråden handlar om.
Trodde du låg inne med modifikationstips för att höja utteffekten till klass 1.

Egen antenn lär det bli, finns ingen förmonterad antenn på
dom.

/ Johan

Postat: 5 november 2004, 16:28:47
av chille
"egen antenn" och "egen antenn". En 4mm lång kabelsnutt kan ju anses som antenn, medans en specialanpassad för bästa räckvidd (som är fysiskt möjligt) lär vara lite bättre.