Autor Tema: Error al transmitir a 115200  (Leído 1358 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado joker53

  • PIC10
  • *
  • Mensajes: 31
Error al transmitir a 115200
« en: 28 de Septiembre de 2007, 13:08:15 »
Hola amigos a ver si alguien encuentra el error, estoy transmitiendo desde el puerto serie de una pc a traves de unos modulos inalambricos xbee(este no parece ser el problema, ya que probe lo mismo con un 16f628 y anda ok) a un pic 18f2550 a 115200 8 n 1
en el pic solo hago un echo de lo que recibo....
pero lo que recibo no es lo mismo que manda, pero es raro fijense que en los primeros 127 que yo le mando recibo numeros del 0 al 255 y en los que mando del 128 al 255 vuelvo a recibi valores del 0 al 255 miren.....
Poniendo todo a 57600 anda perfecto......

Mas abajo pongo el codigo

0=0
1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
10=10
11=11
12=12
13=13
14=14
15=15
16=48
17=49
18=50
19=51
20=52
21=53
22=54
23=55
24=56
25=57
26=58
27=59
28=60
29=61
30=62
31=63
32=64
33=65
34=66
35=67
36=68
37=69
38=70
39=71
40=72
41=73
42=74
43=75
44=76
45=77
46=78
47=79
48=112
49=113
50=114
51=115
52=116
53=117
54=118
55=119
56=120
57=121
58=122
59=123
60=124
61=125
62=126
63=127
64=128
65=129
66=130
67=131
68=132
69=133
70=134
71=135
72=136
73=137
74=138
75=139
76=140
77=141
78=142
79=143
80=176
81=177
82=178
83=179
84=180
85=181
86=182
87=183
88=184
89=185
90=186
91=187
92=188
93=189
94=190
95=191
96=192
97=193
98=194
99=195
100=196
101=197
102=198
103=199
104=200
105=201
106=202
107=203
108=204
109=205
110=206
111=207
112=240
113=241
114=242
115=243
116=244
117=245
118=246
119=247
120=248
121=249
122=250
123=251
124=252
125=253
126=254
127=255
128=0
129=1
130=2
131=3
132=4
133=5
134=6
135=7
136=8
137=9
138=10
139=11
140=12
141=13
142=14
143=15
144=48
145=49
146=50
147=51
148=52
149=53
150=54
151=55
152=56
153=57
154=58
155=59
156=60
157=61
158=62
159=63
160=64
161=65
162=66
163=67
164=68
165=69
166=70
167=71
168=72
169=73
170=74
171=75
172=76
173=77
174=78
175=79
176=112
177=113
178=114
179=115
180=116
181=117
182=118
183=119
184=120
185=121
186=122
187=123
188=124
189=125
190=126
191=127
192=128
193=129
194=130
195=131
196=132
197=133
198=134
199=135
200=136
201=137
202=138
203=139
204=140
205=141
206=142
207=143
208=176
209=177
210=178
211=179
212=180
213=181
214=182
215=183
216=184
217=185
218=186
219=187
220=188
221=189
222=190
223=191
224=192
225=193
226=194
227=195
228=196
229=197
230=198
231=199
232=200
233=201
234=202
235=203
236=204
237=205
238=206
239=207
240=240
241=241
242=242
243=243
244=244
245=245
246=246
247=247
248=248
249=249
250=250
251=251
252=252
253=253
254=254
255=255

El codigo en CSS es el siguiente....

#include <18F2550.h>
#include <MATH.H>

#FUSES HS                       //Crystal osc > 4mhz
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES PUT                      //Power Up Timer
#FUSES NOLVP                      //NO Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOMCLR
#FUSES PROTECT

#USE delay(clock=20000000)
#USE rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8, DISABLE_INTS)


#USE STANDARD_IO(A)
#USE STANDARD_IO(B)

void writebyte(char c);

void main()
{

   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   
   OUTPUT_LOW(PIN_A1);
   OUTPUT_LOW(PIN_A2);
   
   writebyte(0x00);
   writebyte(0x00);
   writebyte(0x00);
   writebyte(0x00);
   OUTPUT_HIGH(PIN_A2);
   OUTPUT_LOW(PIN_A2);
   
   
   while(1)
   {
   }

}

#int_RDA
void  RDA_isr(void)
{
      int caract;
      caract = getc();
     
      putc(caract);
     
      //muestro el bite:
     
      writebyte(caract);
      writebyte(0x00);
      writebyte(0x00);
      writebyte(0x00);
      OUTPUT_HIGH(PIN_A2);
      OUTPUT_LOW(PIN_A2);
     
     
}

void writebyte(char c1){
   int i;
   int c;
   c=c1;

   for(i=0; i<8; i++){
     
      if(BIT_TEST(c,7)){
         OUTPUT_HIGH(PIN_A0);
      } else {
         OUTPUT_LOW(PIN_A0);
      }
     
      OUTPUT_HIGH(PIN_A1);
      OUTPUT_LOW(PIN_A1);
       c=(c<<1);
   }
   
}



Muchas gracias....!!!