Robot build using CD-ROM parts including motors, couple screws, mouse as displacement sensor and IR receiver form old TV, L293D H-bridge, 5x R6 (1.2V) batteries and Arduino UNO. This was its first run.
Thursday, November 10, 2011
Saturday, August 20, 2011
Source code optimization tips for Atmel AVR programmers also Arduino and clones
Eighteen Hints to Reduce Code Size
Five Hints to Reduce RAM Requirements
Checklist for Debugging Programs
- Compile with full size optimization.
- Use local variables whenever possible.
- Use the smallest applicable data type. Use unsigned if applicable.
- If a non-local variable is only referenced within one function, it should be declared static.
- Collect non-local data in structures whenever natural. This increases the possibility of indirect addressing without pointer reload.
- Use pointers with offset or declare structures to access memory mapped I/O.
- Use for(;;) { } for eternal loops.
- Use do { } while(expression) if applicable.
- Use descending loop counters and pre-decrement if applicable.
- Access I/O memory directly (i.e., do not use pointers).
- Declare main as C_task if not called from anywhere in the program.
- Use macros instead of functions for tasks that generates less than 2-3 lines assembly code.
- Reduce the size of the Interrupt Vector segment (INTVEC) to what is actually needed by the application. Alternatively, concatenate all the CODE segments into one declaration and it will be done automatically.
- Code reuse is intra-modular. Collect several functions in one module (i.e., in one file) to increase code reuse factor.
- In some cases, full speed optimization results in lower code size than full size optimization. Compile on a module by module basis to investigate what gives the best result.
- Optimize C_startup to not initialize unused segments (i.e., IDATA0 or IDATA1 if all variables are tiny or small). If possible, avoid calling functions from inside the interrupt routine.
- Use the smallest possible memory model.
Five Hints to Reduce RAM Requirements
- All constants and literals should be placed in Flash by using the Flash keyword.
- Avoid using global variables if the variables are local in nature. This also saves code space. Local variables are allocated from the stack dynamically and are removed when the function goes out of scope.
- If using large functions with variables with a limited lifetime within the function, the use of subscopes can be beneficial.
- Get good estimates of the sizes of the software Stack and return Stack (Linker File).
- Do not waste space for the IDATA0 and UDATA0 segments unless you are using tiny variables (Linker File).
Checklist for Debugging Programs
- Ensure that the CSTACK segment is sufficiently large.
- Ensure that the RSTACK segment is sufficiently large.
- Ensure that the external memory interface is enabled if it should be enabled and disabled if it should be disabled.
- If a regular function and an interrupt routine are communicating through a global variable, make sure this variable is declared volatile to ensure that it is reread from RAM each time it is checked.
Sunday, August 7, 2011
Harald Haas: Wireless data from every light bulb
More technical data can be found here.
I will have to try to replicate this using my new Power LEDs and my ATmega microcontroller. Cool stuff.
Sunday, May 8, 2011
ActionScript 3 and Flex 4.5 optimization
Recently I'm spending a lot of time optimizing my face recognition library in ActionScript 3.
Since I've started my adventure with AS couple of years ago FlashPlayer's performance increased a lot, but still it is not enough for calculation intensive tasks. There is also a good news. Many performance issues can by fixed with source code optimizations. Without further ado here are some of my AS3 optimization tips.
Since I've started my adventure with AS couple of years ago FlashPlayer's performance increased a lot, but still it is not enough for calculation intensive tasks. There is also a good news. Many performance issues can by fixed with source code optimizations. Without further ado here are some of my AS3 optimization tips.
-
Use Vectors instead of Arrays if possible.
-
If you know length of Vector before you create one in code pass it to Vector constructor.
-
If you know that length of Vector will be constant then pass true to Vector constructor as second argument making it fixed vector.
-
When you loop through Vector elements use variable of uint type. It is faster than int in FlashPlayer 10.2.
- When you want acces Vector element like that for example vector[i+1] change it to vector[uint(i+1)].
-
If it is possible try to do as small number of operations using 2D Vectors by which I mean Vectors accessible like that vector[i][j] they are at least 2x slower then 1D vectors. If for example you are looping through 2D vector then good practice is to assign every vector[i] to local variable and than access value for every "j". By doing that you should see at least 50% performance increase in data access from 2D Vector.
-
When incrementing value use ++i instead of i++ wherever possible.
-
Remove all nonessential code from loops.
-
When operating on uint or int variables whenever possible use bit operators for example instead i*4 use i<<2. More info about bitwise operators.
-
When you loop through vector elements don't use vector.length in loop condition instead assign this value to local uint variable and use it instead.
-
When using && or || operators don't mix types like that Number && int or uint || int. Instead if possible use that same type like that int && int or uint || uint it is up to 3,5x faster.
-
Using nested if statements is faster than using && operators in single if statement.
-
Assigning variable of type Number to variable of type int or uint is 2x slower than assignments of int to int or uint to uint or even uint to int.
-
When creating empty Array don't do this like that var arr:Array = new Array() instead do it like that var arr:Array = [] it's faster.
-
Using switch is about 15% slower on Windows XP and 10% slower on Mac OS X than if else statements. Beware of switches in performance-critical code!
I hope those tips will help you with you optimizations.
Thursday, May 5, 2011
Friday, January 21, 2011
AIRTrans - friendly translator living on your desktop
If you often find yourself translating text to and from English here is an app for you.
AIRTrans:
1. Works on Windows, Mac OS X and Linux.
2. Supports over 40 languages.
3. Translates to and from any of over 40 languages.
4. Reads English text aloud.
5. Takes small space on your screen.
6. User Interface colors are customizable
7. Can remember last position on screen and app window size so you don't have to move it to that spot where you want it to be every time you start app.
8. AutoStart functionality
9. Can by resized by dragging one of bottom window corners.
You can download it from here.
Mirror 1 -Softpedia
Mirror 2 - download.cnet.com
AIRTrans:
1. Works on Windows, Mac OS X and Linux.
2. Supports over 40 languages.
3. Translates to and from any of over 40 languages.
4. Reads English text aloud.
5. Takes small space on your screen.
6. User Interface colors are customizable
7. Can remember last position on screen and app window size so you don't have to move it to that spot where you want it to be every time you start app.
8. AutoStart functionality
9. Can by resized by dragging one of bottom window corners.
You can download it from here.
Mirror 1 -Softpedia
Mirror 2 - download.cnet.com
Sunday, January 16, 2011
Saturday, November 27, 2010
Saturday, October 30, 2010
Flex error: Unable to transcode swf with embedded fonts
Today I wanted to create swf file in Flash CS5 with embedded fonts and then I wanted to use this file in Flex 4.
After writing the following code in Flex:
[Embed(source="./assets/fonts/fonts.swf", fontName="Minion Pro")]
private var minionProRegular:Class;
I saw this error:
Multiple markers at this line:
-Unable to transcode ./assets/fonts/fonts.swf.
-font 'Minion Pro' with normal weight and regular style not found
The reason of this error message were the text boxes contained within the swf file that contains embedded fonts.
Solution:
Remove visual objects from Flash CS5 file with embedded fonts.
UPDATE:
More information about this problem can be found here
After writing the following code in Flex:
[Embed(source="./assets/fonts/fonts.swf", fontName="Minion Pro")]
private var minionProRegular:Class;
I saw this error:
Multiple markers at this line:
-Unable to transcode ./assets/fonts/fonts.swf.
-font 'Minion Pro' with normal weight and regular style not found
The reason of this error message were the text boxes contained within the swf file that contains embedded fonts.
Solution:
Remove visual objects from Flash CS5 file with embedded fonts.
UPDATE:
More information about this problem can be found here
Wednesday, October 13, 2010
My photo as one of editors picks of photo.net
I just found out that one of my pictures was chosen as one of the best in the year 2009 in the night photography category on the site photo.net :).
Saturday, August 28, 2010
Face Recognition Library in ActionScript 3 for Flex
Now there's a way to identify persone base on face image using Adobe Flex. Open source face recognition library is now available. It is itended for use in Flex applications which are using at least Adobe Flex 3.5 SDK. Library uses Eigenface method of face recognition which can get to 95% recognition rate.
Video of simple example using this library:
Live demo of simple example using this library
Library project page on google code
Video of simple example using this library:
Live demo of simple example using this library
Library project page on google code
Friday, January 22, 2010
Tuesday, December 29, 2009
I won :)
Monday, June 29, 2009
Koncert grupy Lokalne ocieplenie w Opolu
W dniu 27.06.2009 na Opolskim rynku miał miejsce koncert opolskiej grupy Lokalne ocieplenie.
Piosenka pod tytułem "Więcej nic nie zależy ode mnie".
Poniżej kilka fotografii z koncertu:
Po prawej Basia Beuth-wokal, po lewej Justyna Mihułka-chórki i gitara

by Oskar Wicha
Jarek Korzonek-perkusja

by Oskar Wicha
Justyna Mihułka-chórki i gitara akustyczna

by Oskar Wicha
Po lewej Paweł Kaliciński-gitara akustyczna, po prawej Paweł Apollo -gitara basowa

by Oskar Wicha
Łukasz Fulneczek-pianino

by Oskar Wicha
Piosenka pod tytułem "Więcej nic nie zależy ode mnie".
Poniżej kilka fotografii z koncertu:
Po prawej Basia Beuth-wokal, po lewej Justyna Mihułka-chórki i gitara
by Oskar Wicha
Jarek Korzonek-perkusja
by Oskar Wicha
Justyna Mihułka-chórki i gitara akustyczna
by Oskar Wicha
Po lewej Paweł Kaliciński-gitara akustyczna, po prawej Paweł Apollo -gitara basowa
by Oskar Wicha
Łukasz Fulneczek-pianino
by Oskar Wicha
Saturday, May 9, 2009
Sunday, May 3, 2009
Tuesday, March 31, 2009
Sunday, October 19, 2008
Sunday, August 31, 2008
Friday, June 27, 2008
SanDisk Extreme III USB 2.0 Reader vs. SanDisk ImageMate CompactFlash Reader/Writer
Kupiwszy nowa karte Sandisk Extreme III myślalem, że zmuszony będe chcąc wykorzystać możliwości karty jeśli chodzi o szybkość odczytu do zakupu czytnika SanDisk Extreme III USB 2.0 Reader mimo iż posiadam już SanDisk ImageMate CompactFlash Reader/Writer po moich testch okazalo sie, że predkość kopiowania zdjeć przy użyciu tych dwóch czytnikow prawie sie nie rózni.Dla SanDisk ImageMate CompactFlash Reader/Writer wynosi ona 16MB/s podczas gdy używając SanDisk Extreme III USB 2.0 Reader 17MB/s.
Tak wiec jesli posiadacie juz czytnik obslugujacy PIO 6 tak jak te dwa opisane powyżej nie musicie kupować SanDisk Extreme III USB 2.0 Reader ponieważ on i tak nie zwiekszy waszych transferów.
Subscribe to:
Posts (Atom)

