Documentation and proper communication is crucial point.
Some team members can work remotely or on other part of the world!
clarifying even small issues can be a challenge when working hours are different.
It is worth in such cases to schedule regular meetings, in order to assure continuously information exchange process
Very important is to create a team which puts stress on transparency and sharing which activities are done by each team member.
Agile methodologies like SCRUM are supporting such processes very well; Inside SCRUM there are special meetings for it like daily SCRUM, Sprint review, Sprint planning.
Documentation is a key feature
Especially with long lasting project with many team members.
Some employee can be ill/change company/ etc. and this will mean that knowledge collected by them can be suddenly unavailable.
Docs will help to introduce new team members – this will require less time to put him on current track.
Usage of coding standards
Bigger projects with a lot of code (many thousands lines) are easier to read and maintain where the code was written conform with special standard.
Coding standards are expressing the way:
variables and functions naming;
a way of structuring the code (especially in C or Java);
Examples of such standards: clang-format, MISRA, PEP8 (for Python);
It is worth to use automated tools to check instantly the code standard inside IDE – like cppcheck, pc-lint, or pylint, flake8 (both last ones for python);
Usage of code-review processes
Automated checking tools (for coding standards ) are not assuring that the logic of implementation was done in a right way. To assure it there are processes where other team members are reviewing created code. This spreads good practices and knowledge across whole team.
Usage of version control system – for instance Git
Very important is also to create processes of working with such tool, for example “git-flow”. More info you can find here.
Build processes independent from IDE
To establish continuous integration processes
Allows that team members are using different IDEs
Example of such tool is CMake
Testing and debugging methods
Platform dependent parts should be splittet from remaining parts.
In such way most of code can run on the PC instead on target HW.
In this way it is possible to introduce unit-tests which can run in continuous integration process;
Continuous integration is automated building and testing process executed in a scheduled way. For example every night to obtain instant info about nr of bugs in the code.
As you can see there is a bit of points which are describing professional way of creating code. Of course it is not recommended to preform instant revolution inside your project. It is much better to perform evolution and make step by step improvement to achieve very efficient way of developing your application.
Feel free to share your opinion in the comment section.
Infos collected in this articles are based on my own experience and also on points posted here;
Introduction and potential use cases for Logic Analyzers;
How to handle logic analyzer
from HW side
from SW side
Introduction and use cases
Logic Analyzer is a tool which is extremely useful (almost necessary) during debugging of digital communication. With this component we are able to decode what happens during message exchanging between two IC’s.
You can imagine that you are implementing inside your project handling of a new protocol to your new chip, but you are observing that your device is not working in a proper way. First what to you will do is starting to analyze what your code is doing. Unfortunately it may be insufficient. Especially in cases that you can’t find any bug in the code.
In such situations the best idea is to connect logic analyzer between your two devices and listen in (overhear) the communication process. This way you can assure that your microcontroller (or any kind other device) is sending proper messages. In similar way you can check that other communication member is responding in a proper way.
Generally logic analyzer is a method to check on HW side that communication works ok.
Disadvantages of Logic Analyzer
Logic analyzer is not able to measure analog signals
for such purposes you should use oscilloscope;
Logic Analyzers are designed to operate with specified maximal frequency
if your communication uses higher frequency signals you have to buy another (most expensive also) logic analyzer
Presentation usage of Logic Analyzer
In this article I want to present clone of Salae Logic analyzer.
Key features of presented logic analyzer:
price – about 10$
number of channels: 8 inputs
24MHz sampling frequency
it is possible to reduce sampling frequency (between 25kHz and 24MHz)
2 LEDs (red for power indication, green for connected CH1)