Friday, October 9, 2009

How to choose a Microcontroller

article source: http://www.ehow.com/how_2319026_choose-microcontroller.html

There was a time when the microcontroller selection available was pretty much limited. Now there are so many available, it is a task to find the right one. Choosing a microcontroller depends on what you want to accomplish.When choosing a microcontroller, you have to ask yourself the right questions and research the different type of microcontrollers before making your choose.If you don't know what a microcontroller is or what it is used for, you may want to research it before trying to understand the information given in this article.

Answer
  • 1- Ask yourself what your needs are in terms of programmability and reprogrammability. This will help in determining memory requirements of the microcontroller.
  • 2- Decide what peripherals you will be using or wanting to use in the future.
  • 3- Decide on the physical packaging and the limitations that can be associated with it.
  • 4- Decide on memory aspects. More complexed systems will need more memory, and thus, bigger chips.
  • 5- Decide on the architecture of the system you are planning.
  • 6- Think about hardware and software tools that are manufactured with the microcontrollers compared to what you will be needing.
  • 7- Think about costs and what you have budgeted to spend on the microcontroller. Above anything, this will probably sway your decision on which one you will purchase if your are strictly restricted where costs are concerned.


After deciding on steps 1 to 7, choose an appropriate microcontroller. Some that you many want to research are the microchip, Atmel AVR, Intel 8051, Texas Instruments MSP 430, ARM, Cypress PSOC, Renesas H8, Zilog Z8, modules and hidden microcontrollers.
article source :http://www.ehow.com/how_2319026_choose-microcontroller.html

HARVARD ARCHITECTURE vs. VON NEUMANN

HARVARD ARCHITECTURE vs. VON NEUMANN

If you are new to Microcontrollers one of the arguments you are going to
hear bantered about is Harvard Architecture versus the Von Neumann
Architecture.


THE VON NEUMANN ARCHITECTURE

Most computers we are familiar with use an architecture called Von Neumann.
The term arose out of Neumann's 1945 draft report on the ADVAC computer. He
was not, however the original inventor of it.

A Von Neumann machine has one large monolithic RAM structure that contains
both program memory and data memory mixed together. Since both program steps
and data must be loaded from the same place, it can create a problem called
the Von Neumann Bottle-Neck.


THE HARVARD ARCHITECTURE

Most microcontrollers use a different system called Harvard architecture.
The larger program storage and the smaller data memory are separated. The
first such machine, the Harvard Mark I had it's programs hard-coded on
paper-tape and the volatile data was loaded into electric relays.


Harvard style machines allow program steps to be fetched at the same time as
data, thereby creating potentially faster through-put and less of a
bottle-neck. They also have the benefit that run away processes can't damage
the program stored in the non-volatile program area so they're more stable.
Many C programs lack proper boundary checking and a null pointer or an
over-run buffer can overwrite and crash a program that shares RAM with data.
If you are new to this architecture you need to keep this in mind. When
creating a routine that needs a few bytes of storage, I would normally
create that space within the routine itself. On a Harvard machine, those
bytes would not be in volatile RAM but part of the hard coded program memory
stored in ROM (or FlashRAM).

source :http://sci.tech-archive.net/Archive/sci.electronics.misc/2006-04/msg00057.html

Thursday, October 8, 2009

Friday, October 2, 2009

C++ IDEs --> The Most Popular Six IDEs For Developing Software in C/C++

This Article is not mine, The Source Here

Start:

For all the languages getting created these days, a decent IDE seems to be created even before the development of the language reaches the final stage ;) But even after being in the academics and in the industry for more than three decades, there isn’t one consistently released, active C++ IDE project for the Windows platforms. Some names that come to mind when thinking about C++ IDEs for Windows platform are: DevC++, MinGW Studio, Emacs, Microsoft Visual Studio, CodeBlocks, Eclipse etc. Except DevC++, I use all the other C++ IDEs fairly regularly even today whenever I get to work in Windows.

1. DevC++

DevC++ C++ Programming IDE Screenshot
DevC++ is one of the most popular C++ IDEs amongst the student community as I was able to see during my visits to a few C++ forums on the Internet - 8 out of 10 people on such forums stated that they use DevC++ IDE and whole-heartedly recommend it to the others. I have heard very few complaints from such DevC++ fans, which makes me wonder why I was never able to make myself to like this development tool, DevC++ always looked ugly and unintuitive to me. Most of the C++ programmers from the student community have exactly the opposite to say about it though and it is the first choice for those who want to develop Windows applications using SDL, wxWidgets or DirectX SDK. DevC++ IDE uses MinGW port of gcc as the compiler. It is also an actively developed product though the rate at which it is developed seems to be a bit low. I have read that it is now supported on gnu/linux platform too though I have never tried it myself outside of Windows platform.

More Information & Download

2. MinGW Studio

MinGW Studio C++ IDE Screenshot
MinGW Studio is my answer to all the DevC++ fans. I like the interface of the MinGW Studio IDE very much, and it loads fast and runs fast. MinGW Studio also uses MinGW port of gcc as the back-end compiler and has good integration with wxWidgets SDK. Both DevC++ and MinGW support slightly older versions of gcc, which forces the users to compile gcc from the source if they want to use a more later version of it. The biggest factor that goes against this IDE is that the development of MinGW Studio is almost like having stopped. It seems like ages since the last useful feature was added to this product, though it is still good enough for light-weight C++ development. I have used it on both Windows and GNU/Linux and it works the same way on both the platforms(though it remains a secret why someone would use it on GNU/Linux platform).

More Information
Download
Screenshots: Windows and GNU/Linux

3. GNU Emacs and XEmacs

Emacs-GTK.png
Using Emacs as an IDE for C++ development is only for those who already know how to use emacs; otherwise it entails considerable investment in learning how to use the emacs editor(the effort will more than get paid off in the end). People coming from *nix background feel right at home using emacs for C++ development, but it is not a natural choice for those who have only Windows background with them. Remember that the achievable productivity levels with the emacs editor(for development with standard C++, not platform specific extensions) is comparable to that of Visual Studio and Eclipse IDEs, if not higher. XEmacs is a variant of GNU Emacs that is very popular on Windows.

More Information: GNU Emacs & XEmacs
Download GNU Emacs
Download XEmacs

4. Microsoft Visual C++ 2005

Visual C++ 2005 Express Edition Screenshot
Microsoft has come a long way with its support for C++ Standard since the Visual C++ 6.0 version of its popular IDE. Visual Studio 2005/Visual C++ 2005 Express Edition support the C++ Standard as good as any other popular C++ compiler and allows, to a large extent, developing pure C++ applications without bothering with Windows specific extensions. The new versions of the IDE also support keyboard commands for most of the operations, which means the usage of the mouse can be minimized by those seeking to be productive. The cost of the IDE has also come down for those who need a basic C++ IDE with no extra support for Windows specific extensions - the Express Edition is totally free of cost and Microsoft claims that it will remain to be free forever.

Visual C++ 2005 Express Edition:
Feature Tour
Download

5. Eclipse for C++ with CDT

Eclipse for C++ IDE is becoming the #1 choice for the C++ programmers as the support for this language keeps on increasing with improvements in the CDT plugin. Eclipse can be used on GNU/Linux platform too; on Windows, one needs to have gcc already installed on the system(say, MingW gcc port). Then installing Eclipse along with CDT plugin will get you ready to go. The only glitch here is that the integration between the installed gcc package and Eclipse doesn’t go smoothly for everyone(in my observation). An integrated package of [gcc port + Eclipse + CDT] should be very helpful in this case. Programmers need to write their own build scripts(eg. Makefile) to build the C++ programs in Eclipse for C++. In the long term, Eclipse for C++ should become increasingly appealing for C++ development on Windows.

More Information
Download EasyEclipse for C++

6. Code::Blocks

Code::Blocks C++ IDE Screenshot
My first choice for a light-weight C++ development environment has changed from MinGW Studio to Code::Blocks IDE in the last year. Like MinGW Studio, Code::Blocks IDE also loads and runs at good speed, uses MinGW as back-end compiler and its interface is also to my liking. Where Code::Blocks scores over MinGW Studio is the amount of development that is taking for this product: new code is added almost on a daily basis. Code::Blocks can also be used under GNU/Linux operating system.

More Information
Download
Screenshots

There are other excellent editors available that allow developing software in C++ language - like SciTE, notepad2, notepad++ etc. - but none of them support direct support to build the entire application from one place. Drop in a word if you have some other development environment for developing C++ applications that is not listed here as your favourite one under the Windows operating system.


Comments:
  1. NetBeans with C/C++ pack (Runs on Windows, MacOS, Linux, Solaris):

    http://www.netbeans.org/products/cplusplus/

    Screenshot: http://www.netbeans.org/images/v5/product-pages/nb-cc.png

    Quote

    Comment by Jose — January 2, 2007 @ 11:33 pm

  2. Thanks for reminding me about the C++ support added recently to the NetBeans IDE. I will try to make a separate post on development with C++ language using the NetBeans IDE.

    Quote

    Comment by tabrez — January 3, 2007 @ 8:53 pm

  3. Borland Developer Studio 2006 and Turbo C++ (2006) are also viable alternatives

    see http://www.codegear.com/

    Quote

    Comment by Delphite — January 4, 2007 @ 2:43 pm

  4. And soon my favourite IDE - KDevelop - will also be available not only on Linux but also on Mac OS X and Windows.
    http://www.kdevelop.org/

    Quote

    Comment by Tsiolkovsky — September 19, 2007 @ 7:47 pm

  5. A port of KDevelop to the Windows and Mac OS will be very helpful in developing Qt based applications on these platforms. But I have never been a big fan of KDevelop even on GNU/Linux for writing non-QT C++ code. Instead of trying to make the life of C++ programmers more and more easy(e.g. better integration with build tools), the KDevelop developers keep working on new language extensions. Who would want to do serious Java development in KDevelop and MonoDevelop? After the success of Eclipse, everybody now wants to support every language created on the planet: Netbeans, IntelliJ IDEA, KDevelop - you name it.

    Quote

    Artice Source Here

Monday, August 17, 2009

CSys Electronics Recommended Books

Salam 3lykom w ra7mat Allah,

If you are interested in hardware and want to work in the hardware or embedded systems field, you have to study electronics well.C and C++ is a must,
and you may also Study JAVA to be qulaified for work positions related to CSYS dept.

Recommended Books to help you in Studying Electronics:

Book1: Electronics Fundamentals, Floyd

Book2: Electronic Devices , Floyd

CLick on the Book name and in the page Click TOC in the upper left corner for the content.

other useful web pages in this post

see this Ad:


In shaa Allah I will post the useful things related to CSys department in this blog in non-regular basis.

Wednesday, July 29, 2009

about CSys Department

Salam 3lykom W ra7mat Allah,
Here I will talk little about CSys department for whom want to join it or still thinking...

Simply, CSys is about the integration between programming and hardware, how computer systems are built and building computer networks.

Computer System : means a system contains Processor, some sort of memory and some peripherals built and programmed to do a specific task.

What task ?

Tasks are mainly control tasks like controlling a production line, controlling some motors doing some jobs, reading data from sensors in an environment and pass it to other equipments or taking decisions based on this data.

you may also build systems that utilize your PC to control other systems; you job here will be the interfacing between the PC and those equipments, how to control them, send data to them or read from.

What will you learn inside CSys department courses ?


First Semester :

1- Microprocessor-based Systems :
----> The proposed target for this course is to be able to design a computer system by choosing your microprocessor, your memory, your output devices, connecting them together and programming them to do some task. note: Try to reach this target by your self if your instructor didnt help you to do so.
  • you will study the architecture of the micropreocessor (internal registers, buses, interrupts, direct memory access (DMA),
  • how to interface a microprocessor with memory
  • how interface a microprocessor with input/output devices
  • how to program the microprocessor ( in assembly)
In Lab: you will see the hardware componnets and learn how to connect them

2- Computer Networks
you will learn the basic of computer networks, how to build a computer network and programming application to work over network (say chat application)

In Lab
:you will study the CCNA certificate topics which include how to build and configure a small - to - medium computer network.by the way , it isn't just connecting the cables and configuring the pc ip address, there are many and many to do in network.

3-Digital Signal Processing
you will study Signals from the mathematics prospective. signals are functions having some paramters and by changing the parameters you may affect the signal and so doing the magic with just a few numbers. note : Try to have this point in your mind as you may not feel it during the course lectures.

In Lab
: you will study practical examples for applying this mathematics and will solve some problems.
one project we made was Sound and Image effects Package.you choose image and apply effects on it also the sound (echo - multi echo ... etc.) and it was very interesting .

4- Data Communcation

you will study how data are tansmitted via a medium. what are these mediums, how data are encoded and decoded to be transmitted and how to control the transmission errors.

In Lab
: you will solve some problems from the subject book.

5- Selected Topic: (High Performance Computing - HPC)
Imagine if you have a computationaly intensive problem (problem with huge number of computaions required) , If you tried to solve it using your PC , it may take days.How to overcome this problem by studying the concept of parallel computing is the target of this course.
Course link here

In Lab:
you will study how to program a parallel application in c++ using a library called MPI-CH. This targets the following: if you have a problem and want to solve it in parallel then you designed its parallel solution and want to prgram it .. how to write the code utilizing this library (MPI-CH)
Also there was an interesting project for designing and implemeting a real hardware circuit for 1-bit pattern matching (you will learn about it in the course) but we designed the circuit in a software called Eagle and made its PCB (printed circuit board) like this and this , you will learn how to make a circuit like this and will make it in shaa Allah.

========================================================================
Second Term:

1- Embedded Systems
---> in Microprocessor-based system, you will not have the chance to build a real system or even see or know about. here in Embedded System, it's totally diffrent. You have a real systems, have a real component, programming a real Microcontroller and see actual runing systems.
read this post to know what's an embedded system

Topics:
- Microcontroller concepts and Archittecture (microcontroller is a simple processor with memory and i/o pins included in the same chip).you will study the 8051 microcontroller
- Interface this microcontroller with LCDs , Motors , sensors ..etc
Complete Lab Syllabus here and projects you can make in this course here and other projects here

2- Computer Peripherals
interesting easy subject teaches you how to interface your pc with the outside world.

Topics:
- Parallel Port Interfacing ( means how to use your PC parallel port to control some device such as a lamp or motor ) . you can see here a description for parallel port and here a project build using parallel port

- Serial Port Interfacing
- USB interfacing (not in deep)
- Interfacing motors and LCDs using these ports

ther is also a project here utilizing the serial port

In Lab:
you may apply this concepts and make a real implemetation utilizing the usage of this ports like controlling LCD from parallel port or moving a motor.

3- Parallel Architecture
beside the topics of the high perfomance computing in the first term add to them the study of the architecture of parallel machines and parallel search and graph algorithms.
Course Link here

In Lab: you will study many things
1- VHDL
2- MPI again
3- some Computer Vision concepts

4- Computer Security
studying the Encryption and Decryption techniques used to encrypt/decrypt data during their transmission. you will study and implement this techniques in the course
In Lab : solving some problems of the book and explaining some others

5-Selected Topics
some different copmanies teach us some new technologies and tools to make you little close to the market. This offer is by the ITI

Just Choose the department you like and want to study its subjects.