Comments (9)
Hi! Thanks for bringing this up. It does look strange.. Could I verify that the settings you used to capture those signals are as follows:
SDRSharp, under the Recording pane
- Sample format is set to to
8 Bit PCM
- Audio is
unchecked
- Baseband is
checked
from ccmanager.
Thanks for your quick reply. Yes I can confirm these settings. Two more things to mention. First I forgot yesterday to wrote that I connected the EXP430G2 with MSP430G2553 and CC1101 once (between OOK signals as expected and my weired OOK signals) without non-rotated TXD and RXD jumpers. Could this have damaged something?
Furthermore I notice that I hve to reconnect the board each time twice before it CCManger can find it on COM3. This was also not the case previously.
Is there anything I can try to reset EXP430G2 with MSP430G2553 and CC1101 entirely and start from scratch? I tried alread to reload the firmware without success.
Below again more full screenshots from my attemtp today. Still same issue:
from ccmanager.
Thanks for the details - I've tried to replicate your transmission and the results are below:
The first bit near 1,7230 seconds
and 1,7240 seconds
is a known issue where the CC1101 module tries to add a preamble before sending the data. It "should have been fixed" but still appears sometimes and it can usually be ignored or worked around by padding the start with 0x00
.
At 868.25 MHz, the OOK pattern in your data appears to align with mine, indicating that the data and baud rate are also accurate. This indicates that your hardware is most likely perfectly healthy 😄
I believe the issue might be that the signal is too strong to your receiver as the amplitude on your recording (as displayed in Audacity) appears to be clipping the boundary. Maybe reducing the gain on your RTL-SDR or moving the devices further apart from each other will be of help.
Unfortunately I am not sure about the serial port visibility issue, as CCManager uses the OS's port listing.
from ccmanager.
Hi,
Thanks a lot! Your gain hint solved the first issue! Now I can reproduce my actuall problem with mixed/wrong values.
I send this for instance:
0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA
First of all I'm not sure if the only different pattern really is 0xFF (=11111111) as it looks to me like 0xCC (=11001100). (see red comment in my screenshot)
Second, as one 0xAA (=10101010) equals four times on and off in rotation I expected after 0xFF 164 (= 41 * 4) on and 164 off in rotation. But after 0xFF (or 0xCC) I count 83 on and 83 off in rotation. Furthermore I count 32 at the beginning and another 3 before 0xFF (or 0xCC).
Do you have a clue what's happening here?
Compared to all this if I send a shorter sentence ilke this one:
0xAA, 0xCC, 0xFF, 0x00, 0xAA, 0xCC, 0xFF, 0x00
I get the result as expected (including preamble of CC1101)
from ccmanager.
Hey,
Just an update: I've managed to replicate and confirm the issue but I haven't found a solution yet 🤔
from ccmanager.
Do you get the same wrong data or something different?
I was not able to open your project and do some debugging on this as visual studio prompts an error for missing .NET 4.0 components which I can't find for download and should actually be already included in visual studio/win10.
However I'm not very familiar with visual studio (with cc1101 even less), but in general i believe I understand your code more or less.
So in your RF class you've the following function which I understood transfers the data to the CC1101 TXFIFO register. Does this already contain the mixed data or is it scrambled later within CC1101?
public void Transmit(byte[] dataToTransmit)
{
List<byte> dataToTransmitInverted = new List<byte>();
for (int i = 0; i < dataToTransmit.Length; i++)
{
dataToTransmitInverted.Add(FlipByte(dataToTransmit[i]));
}
Log.Info("Writing TXFIFO", 2);
SPI.WriteRegister(sp, CCRegister.CC1101_TXFIFO, (byte)dataToTransmit.Length);
SPI.WriteBurstRegister(sp, CCRegister.CC1101_TXFIFO, dataToTransmit);
EnterTransmitState();
ShortWait();
EnterIdleState();
Log.Success("Transmit Completed");
}
BTW: Are you transferring the non-inverted data?
from ccmanager.
The wrong data is different: I've followed your configuration as in your screenshot and this is the result
The inverted data dataToTransmitInverted
is not used (vestigial code during development). The CCManager client sends the unmodified transmission data via serial to the hardware, which then writes the same unmodified data to the CC1101 via SPI. Hopefully this screenshot of the debugged client may help you:
It seems that either the CC1101 is unexpectedly messing up the data or the CC1101's registers are misconfigured. Either way it is quite a serious bug that has gone unnoticed for a long time (almost 4 years!). I plan to try different data sizes and registers to attempt to identify the issue at a later date as I am unfortunately occupied now. A (very hacky) workaround would probably be to further limit the transmission size.
Thanks for trying to debug the issue too! If you are using VS, maybe selecting "Windows Forms" (different from UWP) development in the installer might add the missing dependencies.
from ccmanager.
Would it make sense to post in TI board/forum?
from ccmanager.
At this point of time I still have not found out enough about the issue, such as the transmission sizes that start triggering the bug. It might still be worth a shot - if you decide to do so, I believe the data in "View/Edit Registers" (which indicate the state of registers when transmitting) may assist in the diagnosis.
Really appreciate how much time you have already spent looking through and improving CCManager ^_^
from ccmanager.
Related Issues (8)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ccmanager.