Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
12 years, 11 months ago.
xbee does not work after the init_vga() in vga640*480graphic libraray?
i am trying to get data from xbee and then display it on vga. but xbee does not work after the init_vga command in vga640*480graphic buitin libraray?
/*
* 640x480 60Hz fullgraphic monochrome VGA Driver demo program
*
* Copyright (C) 2011 by Ivo van Poorten <ivop(at)euronet.nl>
* and Gert van der Knokke <gertk(at)xs4all.nl>
* This file is licensed under the terms of the GNU Lesser
* General Public License, version 3.
*
* Inspired by Simon's (not Ford) Cookbook entry and Cliff Biffle's
* assembly code.
*/
#include "mbed.h"
#include "vga640x480g.h"
Serial xbee1(p9, p10);
DigitalOut rst1(p11);
// visual feedback
DigitalOut myled(LED1);
DigitalOut myled1(LED2);
void vga(void)
{
myled1=1;
init_vga();
wait(0.001);
int s,t;
// serial port on at 115200 baud
//linktopc.baud(115200);
setbuf(stdout, NULL); // no buffering for this filehandle
// clear the screen
vga_cls();
// draw some circles
for (t=10; t<200; t+=5)
{
vga_circle(20+t,399-t,t,WHITE);
wait(0.04);
}
myled1=0;
// draw some boxes
for (t=10; t<100; t+=5)
vga_box(400+t,100+t,400+t*2,100+t*2,WHITE);
// circumfence the screen
vga_box(0,0,639,479,WHITE);
// show the complete character set
for (s=0; s<4; s++) {
for (t=0; t<64; t++) {
vga_putchar(20+t*8,20+16*s,t+s*64,WHITE);
}
}
// put a string on screen
vga_putstring(400,370,"Hello World!",WHITE);
myled1=0;
// draw some lines
vga_line(400,390,500,390,WHITE);
vga_line(500,475,600,375,WHITE);
// draw a filled box
vga_filledbox(450,330,550,360,1);
// draw some more boxes
for (t=10; t<320; t+=5)
vga_box(100+t,440-t/16,110+t,440+t/16,WHITE);
myled1=1;
}
// visual feedback
//DigitalOut myled(LED1);
// define serial port for debug
Serial linktopc(USBTX,USBRX);
int main() {
vga();
wait(10);
rst1 = 0; //Set reset pin to 0
myled = 0;
myled1= 1;
wait_ms(1);
rst1 = 1; //Set reset pin to 1
wait_ms(1);
unsigned char buff[2000];
while(1)
//for (int i=0; i<10000; i++)
{// j++;
if(xbee1.readable())
{
myled1=1;
wait(0.004);
myled1=0;
wait(0.004);
}
}
// init the VGA subsystem (always do this first!)
// all done
while (1){
wait(1);
myled=!myled;
}
}
1 Answer
12 years, 11 months ago.
Could be many things, you can for example find it out yourself by starting to disable stuff from init_vga, until your xbee works again, that way you can narrow down what is exactly causing it.
One issue is that init_vga sets the clock to 100MHz, and standard is 96MHz. That is just the edge of if it is too much difference or not, so that can be the issue. So try setting the baudrate of the xbee serial object to 9600*96/100 = 9216.