Mar 05, 2013
02:37 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Mar 05, 2013
02:37 AM
Hi community
since we just launched our brand new XMC1000 family at the embedded world in Nürnberg we would like to offer this new forum to support you in discovering the features of our ARM® Cortex™-M0 microcontrollers.
thanks for your ongoing support
-chipper-
since we just launched our brand new XMC1000 family at the embedded world in Nürnberg we would like to offer this new forum to support you in discovering the features of our ARM® Cortex™-M0 microcontrollers.
thanks for your ongoing support
-chipper-
12 Replies
Not applicable
Mar 14, 2013
07:56 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Mar 14, 2013
07:56 PM
It is help to let customer engineer to know more XMC1000 place ^^
Mar 19, 2013
09:46 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Mar 19, 2013
09:46 AM
Infineon home page XMC1000:
http://www.infineon.com/XMC1000
Scroll down and click to 'Documents' for reference manuals, data sheets, etc.
Development kits for XMC1000 can be found here.
Web-shop for the development kits is available as well. Have a look at eHitex web-shop.
http://www.infineon.com/XMC1000
Scroll down and click to 'Documents' for reference manuals, data sheets, etc.
Development kits for XMC1000 can be found here.
Web-shop for the development kits is available as well. Have a look at eHitex web-shop.
Not applicable
May 27, 2013
09:21 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 27, 2013
09:21 AM
Hello to all users.
From what I read it appears possible to port the mbed online compiler platform to the XMC development kits.:)
http://mbed.org/handbook/mbed-SDK-porting
The only issue is that the interface microcontroller the 4200 needs to be updated as a mass storage device.
Does anybody worked with the XMC4200 usb stack before?
Thank you.
LE: This could be a great opportunity for Infineon to make their products available also for students and hobbyists.
From what I read it appears possible to port the mbed online compiler platform to the XMC development kits.:)
http://mbed.org/handbook/mbed-SDK-porting
The only issue is that the interface microcontroller the 4200 needs to be updated as a mass storage device.
Does anybody worked with the XMC4200 usb stack before?
Thank you.
LE: This could be a great opportunity for Infineon to make their products available also for students and hobbyists.
Not applicable
Jul 03, 2013
02:07 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 03, 2013
02:07 AM
Hello everybody,
I have just started with the XMC1100 board and DAVE and try to find my way through it. I am a little struggling with the complexity of the USIC. I have installed the UART002 app. Does anybody have a code example for UART communication (e.g. 51200 Baud, no parity, one stopbit) to get started?
thanks in advance,
I have just started with the XMC1100 board and DAVE and try to find my way through it. I am a little struggling with the complexity of the USIC. I have installed the UART002 app. Does anybody have a code example for UART communication (e.g. 51200 Baud, no parity, one stopbit) to get started?
thanks in advance,
Not applicable
Jul 05, 2013
12:17 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 05, 2013
12:17 AM
smktec ,
Are you using RTOS? Why are you using UART002 App?
If you are not using RTOS, you should use UART001 App.
All you need to do is configure your UART requirement on the UI and then generate the code.
rgds,
Rou
Are you using RTOS? Why are you using UART002 App?
If you are not using RTOS, you should use UART001 App.
All you need to do is configure your UART requirement on the UI and then generate the code.
rgds,
Rou
Not applicable
Jul 05, 2013
05:38 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 05, 2013
05:38 AM
Rou wrote:
smktec ,
Are you using RTOS? Why are you using UART002 App?
If you are not using RTOS, you should use UART001 App.
All you need to do is configure your UART requirement on the UI and then generate the code.
rgds,
Rou
Thanks for your advice. It works well. I guess I am gradually getting on board understanding how to work with DAVE.
Not applicable
Jul 08, 2013
01:08 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 08, 2013
01:08 AM
Hi everybody,
I established UART communiction between PC and XMC1100 using UART001/0 by calling UART001_ReadData(UART001_Handle0) in the Main Programm successfully. However, I could not receive the data using the interrupt app NVIC001/0.
Settings: NVIC001/0: Interrupt Enable at Initialization: checked
Premption Priority: 3
User defined event handler 1: UARTInterrupt
Manual Resource Assignment: nvicnode: /cpu/0/nvic/interrupt/24
UART001: 8Bit, 1 stopbit, no parity(also tried with even parity), 52100 Baud
Code:
#include //Declarations from DAVE3 Code Generation (includes SFR declaration)
void UARTInterrupt(void)
{
//the program never arrived here, having set a breakpoint
uint8_t a,b,c,d;
a=UART001_ReadData(UART001_Handle0);
b=UART001_ReadData(UART001_Handle0);
c=UART001_ReadData(UART001_Handle0);
d=UART001_ReadData(UART001_Handle0);
};
int main(void)
{
uint8_t NodeID;
DAVE_Init(); // Initialization of DAVE Apps
// Get the mapped interrupt ID
NodeID = NVIC001_GetInterruptID(&NVIC001_Handle0);
//the following code receives data
uint8_t a,b,c,d;
a=UART001_ReadData(UART001_Handle0);
b=UART001_ReadData(UART001_Handle0);
c=UART001_ReadData(UART001_Handle0);
d=UART001_ReadData(UART001_Handle0);
while(1)
{
}
return 0;
}
Has anybody an idea, how to get it to work?
thanks,
I established UART communiction between PC and XMC1100 using UART001/0 by calling UART001_ReadData(UART001_Handle0) in the Main Programm successfully. However, I could not receive the data using the interrupt app NVIC001/0.
Settings: NVIC001/0: Interrupt Enable at Initialization: checked
Premption Priority: 3
User defined event handler 1: UARTInterrupt
Manual Resource Assignment: nvicnode: /cpu/0/nvic/interrupt/24
UART001: 8Bit, 1 stopbit, no parity(also tried with even parity), 52100 Baud
Code:
#include
void UARTInterrupt(void)
{
//the program never arrived here, having set a breakpoint
uint8_t a,b,c,d;
a=UART001_ReadData(UART001_Handle0);
b=UART001_ReadData(UART001_Handle0);
c=UART001_ReadData(UART001_Handle0);
d=UART001_ReadData(UART001_Handle0);
};
int main(void)
{
uint8_t NodeID;
DAVE_Init(); // Initialization of DAVE Apps
// Get the mapped interrupt ID
NodeID = NVIC001_GetInterruptID(&NVIC001_Handle0);
//the following code receives data
uint8_t a,b,c,d;
a=UART001_ReadData(UART001_Handle0);
b=UART001_ReadData(UART001_Handle0);
c=UART001_ReadData(UART001_Handle0);
d=UART001_ReadData(UART001_Handle0);
while(1)
{
}
return 0;
}
Has anybody an idea, how to get it to work?
thanks,
Not applicable
Jul 11, 2013
01:22 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 11, 2013
01:22 AM
Hi,
I could find the problem. Manual Resource Assignment needs to be set to : /cpu/0/nvic/interrupt/9.
However, if I send more than one byte at a time the Interrupt routine will be entered twice. The data is received in the correct sequence.
I have tried NVIC_ClearPendingIRQ, but it didn't help.
I want to transmit up to 10 bytes within one frame.
Has anybody an idea?
I could find the problem. Manual Resource Assignment needs to be set to : /cpu/0/nvic/interrupt/9.
However, if I send more than one byte at a time the Interrupt routine will be entered twice. The data is received in the correct sequence.
I have tried NVIC_ClearPendingIRQ, but it didn't help.
I want to transmit up to 10 bytes within one frame.
Has anybody an idea?
Not applicable
Jul 24, 2013
08:51 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 24, 2013
08:51 PM
smktec wrote:
Hi,
I could find the problem. Manual Resource Assignment needs to be set to : /cpu/0/nvic/interrupt/9.
However, if I send more than one byte at a time the Interrupt routine will be entered twice. The data is received in the correct sequence.
I have tried NVIC_ClearPendingIRQ, but it didn't help.
I want to transmit up to 10 bytes within one frame.
Has anybody an idea?
Hi smktec,
Which interrupt are u referring? Is it Standard Received Interrupt?
Since you are sending 2 bytes (I assume you send twice and each is 1 byte), then you should receive 2 interrupt. This is the correct behavior.
Perhaps you can tell me what are the behavior you are expecting?
Not applicable
Aug 08, 2013
07:45 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Aug 08, 2013
07:45 AM
Jackson wrote:
Hi smktec,
Which interrupt are u referring? Is it Standard Received Interrupt?
Since you are sending 2 bytes (I assume you send twice and each is 1 byte), then you should receive 2 interrupt. This is the correct behavior.
Perhaps you can tell me what are the behavior you are expecting?
thanks for your note,
meanwhile I could get the desired result after going through all register over and over again learning their function. Chapter 14.2.8.2 of the reference manual was a good guide.
But could you tell me which is the source of fPB which goes into the Baud Rate Generator. Is it MCLK, PCLK coming from the SCU or is it even another source? I could not find a clear explanation in the XMC1100 reference manual.
thanks,
Not applicable
Apr 23, 2014
06:18 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Apr 23, 2014
06:18 AM
Hi to all,
I have try to use dmx app in any way before and after migration. there is not way to play with that on my 1200 demo board with rgb and white kit
I'm really new on Dave and its language so I share with you my ISR on Dallas 8 bit micro to read perfectly from 1 to 512 channels from any kind of tx (tested also with Lighting consolle ... my previus job)
I hope some of you can design a new Dave project with that and post it to use dmx to control rgb led demo board via BCCU
I have all the facility from the DMX side also with RDM (Remote Device Managment) to test.
'crystall 8Mhz
$regfile = "87c520.dat"
'***ISR***
On Serial1 Rec_byte Nosave
'***IE ENABLE***
setb Ie.7 'enable global IE
setb ie.4 'enable serial 0 interrupt
'IE PRIORITY
'setb ip.4'serial0 high
setb Scon.4 'enable serial 0
'***SERIAL1 SETTINGS FOR DMX 512***
setb Wdcon.7 'double clock for serial 1 baud rate
setb Scon1.7 'set serial1 mode 2
'***ISR***
Rec_byte:
$asm
push psw
push acc
push r0
push r1
clr scon1.0
jb scon1.2,rec 'se scon2 è settato non è un breake, si salta a REC per ricevere i dati dmx THIS IS TO VERIFY THE BREAK (bit number 9 )
mov {cur_byte+0},#00h 'è stato ricevuto il breake, si resettano i contatori cur_byte e iaddress BREAK IS RECEIVED SO RESET AL PARAMETER
mov {cur_byte+1},#00h
mov {iaddress+0},{dmx_c+0} IADDRESS IS THE FIRST CHANNEL IN THE FRAME WE NEED TO RETRIVE
mov {iaddress+1},{dmx_c+1} DMX_C IS A COUNTER TO FEEL THE ARRAY
mov {s},#&h09 'conto alla rovescia per i 9 ch del videoproiettore &h09 ARE THE CHANNELLS WILL BE READ IN THE FRAME. S IS THE NUMBER OF CHANNELS TO READ
mov {pp},#&h5c 'sposta p alla locazione di dmx_n(1) ADDRESS LOCATION FOR THE FIRST OF 9 CHANNELS READ VALUE IN THE ARRAY DMX_N(N)
pop r1
Pop r0
Pop Acc
pop psw
reti
Rec:
mov a,{s}
cjne a,#00h,f 'se i canali sono tutti letti si esce dall'interrupt IF ALL 9 CHANNELS ARE READ RETURN FROM INT
pop r1
Pop r0
Pop Acc
pop psw
reti
F:
Mov a ,{cur_byte+1} '
cjne a,#00h,recd1 'se cur_byte è 0 testiamo se sbuf è startbyte cioè 0, altrimnti si va a recd THIS TEST IF START BYTE =0
Mov a ,{cur_byte+0} '
cjne a,#00h,recd1 '
mov a,sbuf1
cjne a,#00h,outi 'se è lo startbyte... IF THIS IS NOT THE START BYTE JUMP TO OUTI
Inc {cur_byte} 'incrementiamo cur_byte per ricevere il primo indirizzo dal dmx INC cur_byte TO WAIT MY FIRST CHANNEL TO READ
pop r1
Pop r0
Pop Acc
pop psw
reti
Recd1:
Mov a,{cur_byte+1} 'controllo se è il primo indirizzo che desidero catturare TEST IF THIS IS THE FIRST CHANNEL I NEED TO READ
cjne a,{iaddress+1},not_a
Mov a,{cur_byte+0}
cjne a,{iaddress+0},not_a
mov a,Sbuf1 IF YES I MOVE SERIAL BUFFER ON THE ADDRESS OF ARRAY (PP)
mov r0,{pp}
mov @r0,a
mov a,{iaddress+0}' Get Low Byte :
add a,#1 ' Add 1 :
mov {iaddress+0},a ' Store Back :incrementa iaddress
mov a,{iaddress+1}' Get High Byte :
addc a,#0 ' Add CY, If Set :
mov {iaddress+1},a ' Store Back :
dec {s} ONE CHANNEL LESS TO READ
inc {pp} NEXT NUMBER OF ARRAY ADDRESS TO FEEL
Not_a:
Mov a,{cur_byte+0}' Get Low Byte :
add a,#1 ' Add 1 :
mov {cur_byte+0},a ' Store Back :incrementa cur_byte INC CUR_BYTE TO CHECK NEXT TIME IF THE CHANNELL IS THE CHANNELL I'M WAIT
Mov a,{cur_byte+1}' Get High Byte :
addc a,#0 ' Add CY, If Set :
mov {cur_byte+1},a ' Store Back :
Outi:
pop r1
Pop r0
Pop Acc
pop psw
reti
$end Asm
this service routin I hope will be use full to have a working APP for Dave
Gino
I have try to use dmx app in any way before and after migration. there is not way to play with that on my 1200 demo board with rgb and white kit
I'm really new on Dave and its language so I share with you my ISR on Dallas 8 bit micro to read perfectly from 1 to 512 channels from any kind of tx (tested also with Lighting consolle ... my previus job)
I hope some of you can design a new Dave project with that and post it to use dmx to control rgb led demo board via BCCU
I have all the facility from the DMX side also with RDM (Remote Device Managment) to test.
'crystall 8Mhz
$regfile = "87c520.dat"
'***ISR***
On Serial1 Rec_byte Nosave
'***IE ENABLE***
setb Ie.7 'enable global IE
setb ie.4 'enable serial 0 interrupt
'IE PRIORITY
'setb ip.4'serial0 high
setb Scon.4 'enable serial 0
'***SERIAL1 SETTINGS FOR DMX 512***
setb Wdcon.7 'double clock for serial 1 baud rate
setb Scon1.7 'set serial1 mode 2
'***ISR***
Rec_byte:
$asm
push psw
push acc
push r0
push r1
clr scon1.0
jb scon1.2,rec 'se scon2 è settato non è un breake, si salta a REC per ricevere i dati dmx THIS IS TO VERIFY THE BREAK (bit number 9 )
mov {cur_byte+0},#00h 'è stato ricevuto il breake, si resettano i contatori cur_byte e iaddress BREAK IS RECEIVED SO RESET AL PARAMETER
mov {cur_byte+1},#00h
mov {iaddress+0},{dmx_c+0} IADDRESS IS THE FIRST CHANNEL IN THE FRAME WE NEED TO RETRIVE
mov {iaddress+1},{dmx_c+1} DMX_C IS A COUNTER TO FEEL THE ARRAY
mov {s},#&h09 'conto alla rovescia per i 9 ch del videoproiettore &h09 ARE THE CHANNELLS WILL BE READ IN THE FRAME. S IS THE NUMBER OF CHANNELS TO READ
mov {pp},#&h5c 'sposta p alla locazione di dmx_n(1) ADDRESS LOCATION FOR THE FIRST OF 9 CHANNELS READ VALUE IN THE ARRAY DMX_N(N)
pop r1
Pop r0
Pop Acc
pop psw
reti
Rec:
mov a,{s}
cjne a,#00h,f 'se i canali sono tutti letti si esce dall'interrupt IF ALL 9 CHANNELS ARE READ RETURN FROM INT
pop r1
Pop r0
Pop Acc
pop psw
reti
F:
Mov a ,{cur_byte+1} '
cjne a,#00h,recd1 'se cur_byte è 0 testiamo se sbuf è startbyte cioè 0, altrimnti si va a recd THIS TEST IF START BYTE =0
Mov a ,{cur_byte+0} '
cjne a,#00h,recd1 '
mov a,sbuf1
cjne a,#00h,outi 'se è lo startbyte... IF THIS IS NOT THE START BYTE JUMP TO OUTI
Inc {cur_byte} 'incrementiamo cur_byte per ricevere il primo indirizzo dal dmx INC cur_byte TO WAIT MY FIRST CHANNEL TO READ
pop r1
Pop r0
Pop Acc
pop psw
reti
Recd1:
Mov a,{cur_byte+1} 'controllo se è il primo indirizzo che desidero catturare TEST IF THIS IS THE FIRST CHANNEL I NEED TO READ
cjne a,{iaddress+1},not_a
Mov a,{cur_byte+0}
cjne a,{iaddress+0},not_a
mov a,Sbuf1 IF YES I MOVE SERIAL BUFFER ON THE ADDRESS OF ARRAY (PP)
mov r0,{pp}
mov @r0,a
mov a,{iaddress+0}' Get Low Byte :
add a,#1 ' Add 1 :
mov {iaddress+0},a ' Store Back :incrementa iaddress
mov a,{iaddress+1}' Get High Byte :
addc a,#0 ' Add CY, If Set :
mov {iaddress+1},a ' Store Back :
dec {s} ONE CHANNEL LESS TO READ
inc {pp} NEXT NUMBER OF ARRAY ADDRESS TO FEEL
Not_a:
Mov a,{cur_byte+0}' Get Low Byte :
add a,#1 ' Add 1 :
mov {cur_byte+0},a ' Store Back :incrementa cur_byte INC CUR_BYTE TO CHECK NEXT TIME IF THE CHANNELL IS THE CHANNELL I'M WAIT
Mov a,{cur_byte+1}' Get High Byte :
addc a,#0 ' Add CY, If Set :
mov {cur_byte+1},a ' Store Back :
Outi:
pop r1
Pop r0
Pop Acc
pop psw
reti
$end Asm
this service routin I hope will be use full to have a working APP for Dave
Gino
Not applicable
Apr 23, 2014
07:33 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Apr 23, 2014
07:33 AM
Hi to all,
I have try to use dmx app in any way before and after migration. there is not way to play with that on my 1200 demo board with rgb and white kit
I'm really new on Dave and its language so I share with you my ISR on Dallas 8 bit micro to read perfectly from 1 to 512 channels from any kind of tx (tested also with Lighting consolle ... my previus job)
I hope some of you can design a new Dave project with that and post it to use dmx to control rgb led demo board via BCCU
I have all the facility from the DMX side also with RDM (Remote Device Managment) to test.
'crystall 8Mhz
$regfile = "87c520.dat"
'***ISR***
On Serial1 Rec_byte Nosave
'***IE ENABLE***
setb Ie.7 'enable global IE
setb ie.4 'enable serial 0 interrupt
'IE PRIORITY
'setb ip.4'serial0 high
setb Scon.4 'enable serial 0
'***SERIAL1 SETTINGS FOR DMX 512***
setb Wdcon.7 'double clock for serial 1 baud rate
setb Scon1.7 'set serial1 mode 2
'***ISR***
Rec_byte:
$asm
push psw
push acc
push r0
push r1
clr scon1.0
jb scon1.2,rec 'se scon2 è settato non è un breake, si salta a REC per ricevere i dati dmx THIS IS TO VERIFY THE BREAK (bit number 9 )
mov {cur_byte+0},#00h 'è stato ricevuto il breake, si resettano i contatori cur_byte e iaddress BREAK IS RECEIVED SO RESET AL PARAMETER
mov {cur_byte+1},#00h
mov {iaddress+0},{dmx_c+0} IADDRESS IS THE FIRST CHANNEL IN THE FRAME WE NEED TO RETRIVE
mov {iaddress+1},{dmx_c+1} DMX_C IS A COUNTER TO FEEL THE ARRAY
mov {s},#&h09 'conto alla rovescia per i 9 ch del videoproiettore &h09 ARE THE CHANNELLS WILL BE READ IN THE FRAME. S IS THE NUMBER OF CHANNELS TO READ
mov {pp},#&h5c 'sposta p alla locazione di dmx_n(1) ADDRESS LOCATION FOR THE FIRST OF 9 CHANNELS READ VALUE IN THE ARRAY DMX_N(N)
pop r1
Pop r0
Pop Acc
pop psw
reti
Rec:
mov a,{s}
cjne a,#00h,f 'se i canali sono tutti letti si esce dall'interrupt IF ALL 9 CHANNELS ARE READ RETURN FROM INT
pop r1
Pop r0
Pop Acc
pop psw
reti
F:
Mov a ,{cur_byte+1} '
cjne a,#00h,recd1 'se cur_byte è 0 testiamo se sbuf è startbyte cioè 0, altrimnti si va a recd THIS TEST IF START BYTE =0
Mov a ,{cur_byte+0} '
cjne a,#00h,recd1 '
mov a,sbuf1
cjne a,#00h,outi 'se è lo startbyte... IF THIS IS NOT THE START BYTE JUMP TO OUTI
Inc {cur_byte} 'incrementiamo cur_byte per ricevere il primo indirizzo dal dmx INC cur_byte TO WAIT MY FIRST CHANNEL TO READ
pop r1
Pop r0
Pop Acc
pop psw
reti
Recd1:
Mov a,{cur_byte+1} 'controllo se è il primo indirizzo che desidero catturare TEST IF THIS IS THE FIRST CHANNEL I NEED TO READ
cjne a,{iaddress+1},not_a
Mov a,{cur_byte+0}
cjne a,{iaddress+0},not_a
mov a,Sbuf1 IF YES I MOVE SERIAL BUFFER ON THE ADDRESS OF ARRAY (PP)
mov r0,{pp}
mov @r0,a
mov a,{iaddress+0}' Get Low Byte :
add a,#1 ' Add 1 :
mov {iaddress+0},a ' Store Back :incrementa iaddress
mov a,{iaddress+1}' Get High Byte :
addc a,#0 ' Add CY, If Set :
mov {iaddress+1},a ' Store Back :
dec {s} ONE CHANNEL LESS TO READ
inc {pp} NEXT NUMBER OF ARRAY ADDRESS TO FEEL
Not_a:
Mov a,{cur_byte+0}' Get Low Byte :
add a,#1 ' Add 1 :
mov {cur_byte+0},a ' Store Back :incrementa cur_byte INC CUR_BYTE TO CHECK NEXT TIME IF THE CHANNELL IS THE CHANNELL I'M WAIT
Mov a,{cur_byte+1}' Get High Byte :
addc a,#0 ' Add CY, If Set :
mov {cur_byte+1},a ' Store Back :
Outi:
pop r1
Pop r0
Pop Acc
pop psw
reti
$end Asm
this service routin I hope will be use full to have a working APP for Dave
Gino
I have try to use dmx app in any way before and after migration. there is not way to play with that on my 1200 demo board with rgb and white kit
I'm really new on Dave and its language so I share with you my ISR on Dallas 8 bit micro to read perfectly from 1 to 512 channels from any kind of tx (tested also with Lighting consolle ... my previus job)
I hope some of you can design a new Dave project with that and post it to use dmx to control rgb led demo board via BCCU
I have all the facility from the DMX side also with RDM (Remote Device Managment) to test.
'crystall 8Mhz
$regfile = "87c520.dat"
'***ISR***
On Serial1 Rec_byte Nosave
'***IE ENABLE***
setb Ie.7 'enable global IE
setb ie.4 'enable serial 0 interrupt
'IE PRIORITY
'setb ip.4'serial0 high
setb Scon.4 'enable serial 0
'***SERIAL1 SETTINGS FOR DMX 512***
setb Wdcon.7 'double clock for serial 1 baud rate
setb Scon1.7 'set serial1 mode 2
'***ISR***
Rec_byte:
$asm
push psw
push acc
push r0
push r1
clr scon1.0
jb scon1.2,rec 'se scon2 è settato non è un breake, si salta a REC per ricevere i dati dmx THIS IS TO VERIFY THE BREAK (bit number 9 )
mov {cur_byte+0},#00h 'è stato ricevuto il breake, si resettano i contatori cur_byte e iaddress BREAK IS RECEIVED SO RESET AL PARAMETER
mov {cur_byte+1},#00h
mov {iaddress+0},{dmx_c+0} IADDRESS IS THE FIRST CHANNEL IN THE FRAME WE NEED TO RETRIVE
mov {iaddress+1},{dmx_c+1} DMX_C IS A COUNTER TO FEEL THE ARRAY
mov {s},#&h09 'conto alla rovescia per i 9 ch del videoproiettore &h09 ARE THE CHANNELLS WILL BE READ IN THE FRAME. S IS THE NUMBER OF CHANNELS TO READ
mov {pp},#&h5c 'sposta p alla locazione di dmx_n(1) ADDRESS LOCATION FOR THE FIRST OF 9 CHANNELS READ VALUE IN THE ARRAY DMX_N(N)
pop r1
Pop r0
Pop Acc
pop psw
reti
Rec:
mov a,{s}
cjne a,#00h,f 'se i canali sono tutti letti si esce dall'interrupt IF ALL 9 CHANNELS ARE READ RETURN FROM INT
pop r1
Pop r0
Pop Acc
pop psw
reti
F:
Mov a ,{cur_byte+1} '
cjne a,#00h,recd1 'se cur_byte è 0 testiamo se sbuf è startbyte cioè 0, altrimnti si va a recd THIS TEST IF START BYTE =0
Mov a ,{cur_byte+0} '
cjne a,#00h,recd1 '
mov a,sbuf1
cjne a,#00h,outi 'se è lo startbyte... IF THIS IS NOT THE START BYTE JUMP TO OUTI
Inc {cur_byte} 'incrementiamo cur_byte per ricevere il primo indirizzo dal dmx INC cur_byte TO WAIT MY FIRST CHANNEL TO READ
pop r1
Pop r0
Pop Acc
pop psw
reti
Recd1:
Mov a,{cur_byte+1} 'controllo se è il primo indirizzo che desidero catturare TEST IF THIS IS THE FIRST CHANNEL I NEED TO READ
cjne a,{iaddress+1},not_a
Mov a,{cur_byte+0}
cjne a,{iaddress+0},not_a
mov a,Sbuf1 IF YES I MOVE SERIAL BUFFER ON THE ADDRESS OF ARRAY (PP)
mov r0,{pp}
mov @r0,a
mov a,{iaddress+0}' Get Low Byte :
add a,#1 ' Add 1 :
mov {iaddress+0},a ' Store Back :incrementa iaddress
mov a,{iaddress+1}' Get High Byte :
addc a,#0 ' Add CY, If Set :
mov {iaddress+1},a ' Store Back :
dec {s} ONE CHANNEL LESS TO READ
inc {pp} NEXT NUMBER OF ARRAY ADDRESS TO FEEL
Not_a:
Mov a,{cur_byte+0}' Get Low Byte :
add a,#1 ' Add 1 :
mov {cur_byte+0},a ' Store Back :incrementa cur_byte INC CUR_BYTE TO CHECK NEXT TIME IF THE CHANNELL IS THE CHANNELL I'M WAIT
Mov a,{cur_byte+1}' Get High Byte :
addc a,#0 ' Add CY, If Set :
mov {cur_byte+1},a ' Store Back :
Outi:
pop r1
Pop r0
Pop Acc
pop psw
reti
$end Asm
this service routin I hope will be use full to have a working APP for Dave
Gino