some problems with spi data transmission
Moderator: Benj
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good evening! So it is, of course, but no one assumed that two controllers would send CLK and MOSI pulses, because we assumed that only the transmitting controller would do this!
Now I have looked at how the program for receiving data over the spi bus will work without using a loop. It will not work-or rather, it will work for 0.1 seconds and stop.
Tomorrow is the last day of the year, happy New Year!
Now I have looked at how the program for receiving data over the spi bus will work without using a loop. It will not work-or rather, it will work for 0.1 seconds and stop.
Tomorrow is the last day of the year, happy New Year!
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
With SPI there can only ever be one Master but as many slaves as you wish. Usually MOSI/MISO are connected to each slave with unique CS/SS pins that let each slave know it by itself is being addressed.
MOSI is Master Out Slave In and is unidirectional from master to slave device
MISO is Master In Slave Out and is unidirectional from slave device to master
The slave device can be anything from a sensor to a display, or even another microcontroller.
However the Master controls ALL communications. It is impossible for a Slave to instigate communications.
Although MOSI/MISO are unidirectional, it is quite possible to have simultaneous bi-directional communications as when the Master "clocks", data is clocked in at both ends.
Do note however that the Master must know how many bytes in advance to send/receive as it needs to know to clock them in/out. That's why I was asking about your intention. SPI isn't good for random data lengths.
Regards
PS
This link is quite informative https://learn.sparkfun.com/tutorials/se ... ce-spi/all
With SPI there can only ever be one Master but as many slaves as you wish. Usually MOSI/MISO are connected to each slave with unique CS/SS pins that let each slave know it by itself is being addressed.
MOSI is Master Out Slave In and is unidirectional from master to slave device
MISO is Master In Slave Out and is unidirectional from slave device to master
The slave device can be anything from a sensor to a display, or even another microcontroller.
However the Master controls ALL communications. It is impossible for a Slave to instigate communications.
Although MOSI/MISO are unidirectional, it is quite possible to have simultaneous bi-directional communications as when the Master "clocks", data is clocked in at both ends.
Do note however that the Master must know how many bytes in advance to send/receive as it needs to know to clock them in/out. That's why I was asking about your intention. SPI isn't good for random data lengths.
Regards
PS
This link is quite informative https://learn.sparkfun.com/tutorials/se ... ce-spi/all
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good evening! Thanks for the clarification. Otherwise, I was "close to creating an interface similar to the spi bus."..- but my CS pulse length is not proportional to the data, and maybe 1.5-2 times longer than necessary.
In classical theory, it turns out that the length of the CS pulse from the master has a length proportional to the number of synchronization pulses and MOSI output data pulses.
But we are working in the flowcode program where the spi bus slave module does not work everywhere. Instead of the slave module, we use another master. Since the master module can transmit and receive data. Maybe it is necessary to output the MOSI of the master (transmitting)connect not with the MOSI of the master (receiving), but with the MISO of the master (receiving)?
If my suggestions and in general all correspondence about the spi bus had been read by the creator of this interface, he probably would have called the exorcist monks...
In classical theory, it turns out that the length of the CS pulse from the master has a length proportional to the number of synchronization pulses and MOSI output data pulses.
But we are working in the flowcode program where the spi bus slave module does not work everywhere. Instead of the slave module, we use another master. Since the master module can transmit and receive data. Maybe it is necessary to output the MOSI of the master (transmitting)connect not with the MOSI of the master (receiving), but with the MISO of the master (receiving)?
If my suggestions and in general all correspondence about the spi bus had been read by the creator of this interface, he probably would have called the exorcist monks...
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
SPI can be a very fast communications protocol ideal for relatively short distances. However the protocol does stipulate a Master / Slave(s) relationship in that there is only one Master and it controls ALL communications.
If you have a scenario where you have slave devices, which could be anything really, that need to send data to the Master at random intervals, then SPI may not be the best solution.
Having the Master poll each device whenever it wants an update is certainly possible. Is that an option for you? This could be done using Timer Interrupts or polling within loops or the like. Point being that the Master will instigate ALL communications, the Slaves can never.
Have you thought about other ways such as the UARTs? Using them would allow you to send data each way at random (and random length).
Regards
Hahahahahe probably would have called the exorcist monks...
SPI can be a very fast communications protocol ideal for relatively short distances. However the protocol does stipulate a Master / Slave(s) relationship in that there is only one Master and it controls ALL communications.
If you have a scenario where you have slave devices, which could be anything really, that need to send data to the Master at random intervals, then SPI may not be the best solution.
Having the Master poll each device whenever it wants an update is certainly possible. Is that an option for you? This could be done using Timer Interrupts or polling within loops or the like. Point being that the Master will instigate ALL communications, the Slaves can never.
Have you thought about other ways such as the UARTs? Using them would allow you to send data each way at random (and random length).
Regards
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good evening! So far, my research in the field of receiving data over the spi bus has had no positive results. It wasn't me who chose the spi bus, it was me...When the creative idea arose, there was a need for a small controller with a large memory. I came across the ATtiny series-and there's only the spi bus.
It seemed easier-take the data bit by bit and form bytes or strings from them. Probably this process could be described in C, but you need to know it.
There's not much left to dig around. Moreover, you can see for yourself that the program has such a problem with the spi bus.Recently, an idea came to me on this topic , but what if the developers of all kinds of interfaces or buses demand their margin for using them. And the creators of the flowcode program faced this and there turned out to be unaffordable amounts.
As for your question, am I going to receive data from the slave device - in principle, no, I just need to write variables to the slave controller so that the program then works according to these variables. Maybe if nothing happens with the data reception, or rather with the display of information about the received data on the lcd1602 type indicator, you can try to send some information from the slave device confirming the data reception-let's say data came at a certain pin, logical 1 appeared, data was not received-logical 0 appeared. And the receiving controller will work without an indicator, so I'm trying to guarantee to send the data (we've already succeeded) and accept it as well.
It seemed easier-take the data bit by bit and form bytes or strings from them. Probably this process could be described in C, but you need to know it.
There's not much left to dig around. Moreover, you can see for yourself that the program has such a problem with the spi bus.Recently, an idea came to me on this topic , but what if the developers of all kinds of interfaces or buses demand their margin for using them. And the creators of the flowcode program faced this and there turned out to be unaffordable amounts.
As for your question, am I going to receive data from the slave device - in principle, no, I just need to write variables to the slave controller so that the program then works according to these variables. Maybe if nothing happens with the data reception, or rather with the display of information about the received data on the lcd1602 type indicator, you can try to send some information from the slave device confirming the data reception-let's say data came at a certain pin, logical 1 appeared, data was not received-logical 0 appeared. And the receiving controller will work without an indicator, so I'm trying to guarantee to send the data (we've already succeeded) and accept it as well.
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
However I think it would be good for you to define the format of what you will be sending / receiving. By that I mean for each slave, what information will it need and how many bytes etc. Each slave can differ in need, but if you can predefine such it makes communications easier. Note that this also applies for any information the slave needs to return to the master, and that the master will collect this data when it requires it.
Regards
Okay, then SPI is a good way to do it.As for your question, am I going to receive data from the slave device - in principle, no, I just need to write variables to the slave controller so that the program then works according to these variables
However I think it would be good for you to define the format of what you will be sending / receiving. By that I mean for each slave, what information will it need and how many bytes etc. Each slave can differ in need, but if you can predefine such it makes communications easier. Note that this also applies for any information the slave needs to return to the master, and that the master will collect this data when it requires it.
Regards
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
I was in my Evil Lab today and created a circuit in hardware with one uC acting as a Master and another uC acting as a Slave, based on the WiKi examples.
My charts however use PIC16F1939 as the uC, simply because they are already in my programmer boards.
The Master simply counts up and transmits the byte over SPI.
The Slave receives this byte and displays it on a LCD. It also transmits a character back to the Master.
I put my logic analyser on the wires and it clearly captures all activity.
I had to leave before finishing, so as I should be back in tomorrow I'll forward my charts and traces then.
Regards
I was in my Evil Lab today and created a circuit in hardware with one uC acting as a Master and another uC acting as a Slave, based on the WiKi examples.
My charts however use PIC16F1939 as the uC, simply because they are already in my programmer boards.
The Master simply counts up and transmits the byte over SPI.
The Slave receives this byte and displays it on a LCD. It also transmits a character back to the Master.
I put my logic analyser on the wires and it clearly captures all activity.
I had to leave before finishing, so as I should be back in tomorrow I'll forward my charts and traces then.
Regards
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good evening! Oh, it's just super what you did and what was displayed on the lcd 1602 indicator. So, in principle, we are moving correctly, but something is not working properly for us. This is a great success!
I was sent programs in .hex files for receiving data over the spi bus in versions 5 and 6 of the program, I tried them on real hardware. There was nothing on the lcd1602 indicator in both cases. Only when the program was written in version 6 of flowcode, since the CS leg was connected to the minus, for some reason the chip sent some of its data on MOSI and CLK with a certain frequency.
As for data transfer from one master to other controllers, it is planned to use one master for several separate devices with a controller for reception. Everywhere the data will be approximately the same -byte type, let's say the variable n is tens of hours,m is units of hours, t is tens of minutes, d is units of minutes. Well, this is an example.
I was sent programs in .hex files for receiving data over the spi bus in versions 5 and 6 of the program, I tried them on real hardware. There was nothing on the lcd1602 indicator in both cases. Only when the program was written in version 6 of flowcode, since the CS leg was connected to the minus, for some reason the chip sent some of its data on MOSI and CLK with a certain frequency.
As for data transfer from one master to other controllers, it is planned to use one master for several separate devices with a controller for reception. Everywhere the data will be approximately the same -byte type, let's say the variable n is tens of hours,m is units of hours, t is tens of minutes, d is units of minutes. Well, this is an example.
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
Based on the WiKi examples, but chips changed to PIC16F1939.
Created a Master chart which simply counts from 0-255 sending out the value on the SPI. At the Slave end it receives the value, displays it on the LCD and "echoes" the value back out on the SPI.
Logic analyser captures the traces.
You will see that although I'm echoing the received value back out, the value on the MISO line is one value below that received. This is because although the SPI is duplex, data is only clocked in/out under Master control. When the Slave receives a byte (e.g. 1) this is then passed to the buffer ready to be sent back to the Master. However transmission only takes places as the Master "clocks". The Master clocks data in and out so in the examples, the Master will receive the "echo" only when it clocks out the next value.
In the above examples the Slave has an interrupt set to trigger on SSP1, but not every chp has this feature (your intended targets do not).
In the next chart, we don't use the SSP interrupt, instead we interrupt on INT0 (falling edge) and this should also work on any interrupt pin. If you send this to hardware you will see that if you disconnect the SS/CS pin then the Slave count is suspended until reconnected.
As mentioned, the above have been tested on hardware so if they don't work on your Proteus then the problem may lie there.
Regards
Based on the WiKi examples, but chips changed to PIC16F1939.
Created a Master chart which simply counts from 0-255 sending out the value on the SPI. At the Slave end it receives the value, displays it on the LCD and "echoes" the value back out on the SPI.
Logic analyser captures the traces.
You will see that although I'm echoing the received value back out, the value on the MISO line is one value below that received. This is because although the SPI is duplex, data is only clocked in/out under Master control. When the Slave receives a byte (e.g. 1) this is then passed to the buffer ready to be sent back to the Master. However transmission only takes places as the Master "clocks". The Master clocks data in and out so in the examples, the Master will receive the "echo" only when it clocks out the next value.
In the above examples the Slave has an interrupt set to trigger on SSP1, but not every chp has this feature (your intended targets do not).
In the next chart, we don't use the SSP interrupt, instead we interrupt on INT0 (falling edge) and this should also work on any interrupt pin. If you send this to hardware you will see that if you disconnect the SS/CS pin then the Slave count is suspended until reconnected.
As mentioned, the above have been tested on hardware so if they don't work on your Proteus then the problem may lie there.
Regards
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good evening! Last night I dreamed about how to simplify the procedure for receiving byte numbers over the spi bus and end the hegemony of the flowcode program for receiving data .
The solution looks very simple, but to tell the truth, I haven't tried it yet. In general terms, the slave spi element looks like a logical "and" element. You remember that 1*0=0 and 1*1=1. Synchronization signals come to one input of this element -this is always a logical 1. Pulses come to the other input, the duration and shape of which correspond to ( 2^0 -means 2 to 0 degrees, 2^3-means 2 to 3 degrees = 8 and so on).
Next, we multiply these numbers in the controller and add them up - we get a byte number. It remains a small matter... how to do it? But this can already be done in any version of flowcode, there is arithmetic here. It will probably be more understandable from the drawings of the signals that appear when transmitting byte numbers over the spi bus.
The solution looks very simple, but to tell the truth, I haven't tried it yet. In general terms, the slave spi element looks like a logical "and" element. You remember that 1*0=0 and 1*1=1. Synchronization signals come to one input of this element -this is always a logical 1. Pulses come to the other input, the duration and shape of which correspond to ( 2^0 -means 2 to 0 degrees, 2^3-means 2 to 3 degrees = 8 and so on).
Next, we multiply these numbers in the controller and add them up - we get a byte number. It remains a small matter... how to do it? But this can already be done in any version of flowcode, there is arithmetic here. It will probably be more understandable from the drawings of the signals that appear when transmitting byte numbers over the spi bus.
- Attachments
-
- send 3.JPG (32.58 KiB) Viewed 2435368 times
-
- send 2.JPG (31.43 KiB) Viewed 2435368 times
-
- send 1.JPG (29.04 KiB) Viewed 2435368 times
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Continuation . It will probably be more understandable from the drawings of the signals that appear when transmitting byte numbers over the spi bus.
- Attachments
-
- send13.JPG (33.93 KiB) Viewed 2435368 times
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good evening! I have some positive news. I found an error in the program that caused the receiving controller to send pulses. View in the attached file.
The second news. The receiving controller started showing the receiving number. Just not the right thing. I sent the number 6, and he writes that he accepts 0, 25, less often 85, and a couple of times the numbers 1 and 95. Moreover, it receives constantly, but I do not press the button to send data. On the schematic diagram, I tried two options-the terminals of the "CS" controllers are connected to each other and the output of the "CS" of the receiving controller is connected to the minus, and nothing comes from the output of the "CS" of the sending controller. The results of receiving the data have not changed.
The second news. The receiving controller started showing the receiving number. Just not the right thing. I sent the number 6, and he writes that he accepts 0, 25, less often 85, and a couple of times the numbers 1 and 95. Moreover, it receives constantly, but I do not press the button to send data. On the schematic diagram, I tried two options-the terminals of the "CS" controllers are connected to each other and the output of the "CS" of the receiving controller is connected to the minus, and nothing comes from the output of the "CS" of the sending controller. The results of receiving the data have not changed.
- Attachments
-
- 1.jpg (38.26 KiB) Viewed 2433740 times
-
- Is that all right.JPG (53.25 KiB) Viewed 2433740 times
-
- error!.JPG (54.6 KiB) Viewed 2433740 times
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
I'm not sure why you seem to be trying to "reinvent the wheel".
In the above posts I provided an example of a Master sending out data, and two examples of Slaves receiving. One Slave used SSP (a feature not all chips have) and the other used an Interrupt. The interrupt example should work on any chip providing the pins are modified to suit. Your chip has inbuilt SPI capabilities so there really is no need to try and write your own.
Although written in v10 if it helps I can modify for v8?
SPI connections were as expected between the two chips in my examples, with the inclusion of an additional wire connecting the chip grounds.
Did you try the examples?
Regards
I'm not sure why you seem to be trying to "reinvent the wheel".
In the above posts I provided an example of a Master sending out data, and two examples of Slaves receiving. One Slave used SSP (a feature not all chips have) and the other used an Interrupt. The interrupt example should work on any chip providing the pins are modified to suit. Your chip has inbuilt SPI capabilities so there really is no need to try and write your own.
Although written in v10 if it helps I can modify for v8?
SPI connections were as expected between the two chips in my examples, with the inclusion of an additional wire connecting the chip grounds.
Did you try the examples?
Regards
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good afternoon! I received and tried your examples, but they did not display very correctly on the 2d panel in the program. And there was also an element that I've never used and I don't know what it's "circularbuffer" for? and where do you get it in the flowcode program. Yes, you're right about "reinvent the wheel" and I've already started doing it. Remember in the last letter I wrote that the numbers 0.25.85 (mostly) began to appear on the screen of the receiving controller. I tried it today-I removed the transmitting controller and these numbers were also displayed. So this is a problem in the program of the receiving controller.
Now I'm going to try the atmega8 program that you sent on the forum.
Now I'm going to try the atmega8 program that you sent on the forum.
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good afternoon! You asked if the program written in version 10 is suitable for 8. No, it is displayed with errors and may not work correctly, but seeing the composition of the program, I can repeat it already in version 8. You can repeat the programs for the pic16f1939 chip, but what's the point-I don't have such a chip in reality and there is no programmer for it. That's why I'm trying to do something on atmega8.
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
Bit busy just now but later I'll explain circular buffer and uses, but my last post was written in v8 and if you look under Project Options it is for a Mega8. If that isn't your chip just change to suit (you may need to alter pins).
However as you say, you can see the steps so can create from scratch.
Regards
Bit busy just now but later I'll explain circular buffer and uses, but my last post was written in v8 and if you look under Project Options it is for a Mega8. If that isn't your chip just change to suit (you may need to alter pins).
However as you say, you can see the steps so can create from scratch.
Regards
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
When using any form of communications the receiver needs to know exactly when the incoming data is present. If we were to just rely on a loop for example, then how can we be sure it is looking at the correct time the data is present at the pin to say nothing of actual sampling? If that works then pick me next weeks lottery numbers as whomever does this successfully is the luckiest guy around...
A better way is to use an interrupt. This way the processor can be busy doing something useful and when data arrives it will automatically branch to handle. Many types of interrupts are available including on specific pins and they can be defined further to trigger on leading / falling edge.
OK, so now by using an interrupt we know we have incoming data to collect. What to do with it now? Interrupts should be as short a routine as possible and shouldn't be interrupted themselves. A good way to store the data, for processing later (outside the interrupt) is to use the Circular Buffer component. The WiKi has good explanations / examples.
Basically the CB is a First in First out (FiFo) buffer. It's a great component. In the example when the interrupt is called it captures the incoming byte and then stores it in the CB before exiting. Now we won't miss any incoming data.
Within Main we can test the CB to see if it contains any data and if so extract it byte at a time, or we could look for a specific value or sequence held within and act if present. It really is a very useful component.
Hope this helps explain its use in the example.
Regards
When using any form of communications the receiver needs to know exactly when the incoming data is present. If we were to just rely on a loop for example, then how can we be sure it is looking at the correct time the data is present at the pin to say nothing of actual sampling? If that works then pick me next weeks lottery numbers as whomever does this successfully is the luckiest guy around...
A better way is to use an interrupt. This way the processor can be busy doing something useful and when data arrives it will automatically branch to handle. Many types of interrupts are available including on specific pins and they can be defined further to trigger on leading / falling edge.
OK, so now by using an interrupt we know we have incoming data to collect. What to do with it now? Interrupts should be as short a routine as possible and shouldn't be interrupted themselves. A good way to store the data, for processing later (outside the interrupt) is to use the Circular Buffer component. The WiKi has good explanations / examples.
Basically the CB is a First in First out (FiFo) buffer. It's a great component. In the example when the interrupt is called it captures the incoming byte and then stores it in the CB before exiting. Now we won't miss any incoming data.
Within Main we can test the CB to see if it contains any data and if so extract it byte at a time, or we could look for a specific value or sequence held within and act if present. It really is a very useful component.
Hope this helps explain its use in the example.
Regards
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good evening! Yes, you are right to guess which pulse will be read, and which one cannot be missed, especially since it is assumed that the data will be displayed on the indicator, and there a delay of 100-200 ms is needed so that the inscription does not blink. I tried the program, installed my lcd 1602, but the program does not compile with the "slave spi" module, I send a screenshot from the screen. I've had this before when I tried to use this module.
- Attachments
-
- error.JPG (111 KiB) Viewed 2385634 times
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
I compiled to Hex and got different results. For me
SPI_Slave_MEGA8_INT_v8.c:(.text.FCM_SPI_Slave+0x2): undefined reference to `FC_CAL_SPI_Slave_RxByte_1'
SPI_Slave_MEGA8_INT_v8.c:(.text.FCM_SPI_Slave+0xc): undefined reference to `FC_CAL_SPI_Slave_TxByte_1'
seem to be the problem.
Not sure why though. I'll redo. My database is fully up to date is yours?
Regards
I compiled to Hex and got different results. For me
SPI_Slave_MEGA8_INT_v8.c:(.text.FCM_SPI_Slave+0x2): undefined reference to `FC_CAL_SPI_Slave_RxByte_1'
SPI_Slave_MEGA8_INT_v8.c:(.text.FCM_SPI_Slave+0xc): undefined reference to `FC_CAL_SPI_Slave_TxByte_1'
seem to be the problem.
Not sure why though. I'll redo. My database is fully up to date is yours?
Regards
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
I started to create a chart from scratch, testing as I went (saving to Hex).
All went well until I used the SPI_GetChar component macro. This then failed to compile with
C:\Users\user\AppData\Local\Temp/ccftAoPc.o: In function `__vector_1':
v8_SPI.c:(.text.__vector_1+0x22): undefined reference to `FC_CAL_SPI_Slave_RxByte_1'
Regards
I started to create a chart from scratch, testing as I went (saving to Hex).
All went well until I used the SPI_GetChar component macro. This then failed to compile with
C:\Users\user\AppData\Local\Temp/ccftAoPc.o: In function `__vector_1':
v8_SPI.c:(.text.__vector_1+0x22): undefined reference to `FC_CAL_SPI_Slave_RxByte_1'
Regards
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
In the pervious chart I posted, the one using interrupt INT0 on the PIC1939, I changed the target to a Mega8, moved display to PortC and successfully compiled to Hex.
This suggests a possible issue with the v8 Slave Component. Unfortunately as v8 is a bit old now it may no longer be officially supported.
Have you thought on upgrading to v10? All components are free as are many chips.
Regards
In the pervious chart I posted, the one using interrupt INT0 on the PIC1939, I changed the target to a Mega8, moved display to PortC and successfully compiled to Hex.
This suggests a possible issue with the v8 Slave Component. Unfortunately as v8 is a bit old now it may no longer be officially supported.
Have you thought on upgrading to v10? All components are free as are many chips.
Regards
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Good afternoon! Yes, I was updated about 1-2 months ago. To upgrade to version 10, is it necessary to pay 75% of the cost of the program, or are there options for a free upgrade to version 10? And about the problems with the "spi slave" module, I wrote at the beginning of the discussion. Could you write down which variables and how they are called you used in your recent examples? I will try to make a program for receiving data over spi using the "master" and "CircularBuffer" modules. I'm asking because I imagine the "CircularBuffer" module very roughly, so I'll have to make a program based on yours-add code to display data on the lcd, maybe it will work.
-
- Valued Contributor
- Posts: 784
- Joined: Fri Jun 06, 2014 3:53 pm
- Has thanked: 186 times
- Been thanked: 205 times
Re: some problems with spi data transmission
Hi
I'll reply in more detail later, but regarding FC v10 this link will explain things further
https://www.flowcode.co.uk/
All components are now free as are certain chips, and I believe there is a discount too for existing users, but you would be best to contact Matrix directly for specifics.
Regards
I'll reply in more detail later, but regarding FC v10 this link will explain things further
https://www.flowcode.co.uk/
All components are now free as are certain chips, and I believe there is a discount too for existing users, but you would be best to contact Matrix directly for specifics.
Regards
-
- Posts: 268
- Joined: Thu Jul 30, 2020 2:01 pm
- Has thanked: 7 times
- Been thanked: 1 time
Re: some problems with spi data transmission
Thanks, I followed the link, but it says "try it for free". It's like everything will work visually, but if you make a program, it won't work in real life or in a simulator. I don't have the opportunity to purchase it yet. Then maybe sometime. Although there are interesting modules there that I don't have.