CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

Interfacing an (AT) 'laptop' keyboard with a PIC
Goto page 1, 2  Next
 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
Christophe



Joined: 10 May 2005
Posts: 323
Location: Belgium

View user's profile Send private message

Interfacing an (AT) 'laptop' keyboard with a PIC
PostPosted: Mon May 07, 2007 1:49 am     Reply with quote

Hello,

we are having a new project. In our existing device ( a notetaker for visual impaired people ) we want to change the existing (braille) keyboard with an AT keyboard. This keyboard has to be as compact as possible. For that reason I'm considering a laptop keyboard.

So in this device:

http://users.[spam].be/chs/Werk/ES20.jpg

we want something like this:

http://img.alibaba.com/photo/11721374/Toshiba___Acer_Laptop_...yboard.jpg

http://www.laptopssales.com/shop/images/KEYBOARD45OSX4.jpg

I have these questions:

* What kind of electronics are there inside of such a keyboard? Or how can I interface that keyboard with my existing PIC16LF877A ? What comes out? Are that matrixlines or is that a PS2 interface? I know there are drivers for a PS2 interface. But what if only the matrixlines are available? Can i use an AT keyboard controller then or do I have to read the matrix in with the PIC?

* How can I obtain such a (custom) keyboard? Does anyone know a company that assembles such keyboards? + interfacing. Are there datasheets available?

* Mostly there is such a plastic flatcable coming out of the device; what is that?

tks
SteveH
Guest







PostPosted: Mon May 07, 2007 8:21 am     Reply with quote

A keyboard for a PC uses an AT (older) or PS2 interface - this electrical interface is the same only the connector is different. Typically a PC keyboard runs on 5 volts and has a 8048 CPU or a keyboard ASIC inside of it to decode the matrix and generate the signals for the PC.

You can read about it here -

computer-engineering.org/ps2keyboard/


For a custom keyboard you can try these folks - I've had them make keyboards since before there was a PC! So they have been at it a long time,

cherrycorp.com/

HTH - Steve H.
Christophe



Joined: 10 May 2005
Posts: 323
Location: Belgium

View user's profile Send private message

PostPosted: Tue May 08, 2007 12:39 am     Reply with quote

One other small problem is that my PIC runs on 3V and the PS2 interface is 5V. Can I solve that with a resistor divider as it is a one way communication?
Steve H
Guest







PostPosted: Tue May 08, 2007 8:09 am     Reply with quote

For a commercial project you should always use a level shifter. For hacking you may get away with a divider. Fairchild and Maxim make fine level shifting products.

My 2 cents worth.

Steve H.
Christophe



Joined: 10 May 2005
Posts: 323
Location: Belgium

View user's profile Send private message

PostPosted: Tue May 08, 2007 8:19 am     Reply with quote

Thanks for your advice.

Just wondering, if the PIC transmits a 3V high to the PS2 keyboard controller, will the kb controller recognize it as a high? Data and clock lines are both open collector...
Steve H.
Guest







PostPosted: Tue May 08, 2007 8:46 am     Reply with quote

Depends - If the keyboard is using TTL levels then > 2.4 volts will be a high. If it is using CMOS levels then no - CMOS levels are typically 0.7 X Vcc or in this case 0.7 * 5 = 3.5 Volts. So 3 or 3.3 volts won't work AND you must have margin to overdrive the minimum logic high level. Typically using TTL level input devices works well with 3 or 3.3 volt CMOS outputs.

It is easy to make bad interfaces - carefully read all the data sheets before AND during the design of mixed voltage circuits.

HTH - Steve H.
Christophe



Joined: 10 May 2005
Posts: 323
Location: Belgium

View user's profile Send private message

PostPosted: Tue May 08, 2007 8:49 am     Reply with quote

Is there an easy way to find that out?

Here I have the tech spec. for a G83-6000 (that is a cherry keyboard I guess). It says that a high should be minimum 2,4V,so that would be TTL voltage levels. Is that always so with AT keyboards? Is it different from PS2 keyboards?
Steve H
Guest







PostPosted: Tue May 08, 2007 11:19 am     Reply with quote

I would not assume that all vendors use the same voltage levels for their keyboards. But having said that the IBM PC keyboard spec probably calls out TTL logic levels.

Steve H.
Christophe



Joined: 10 May 2005
Posts: 323
Location: Belgium

View user's profile Send private message

PostPosted: Fri May 11, 2007 12:47 am     Reply with quote

Steve H wrote:
I would not assume that all vendors use the same voltage levels for their keyboards. But having said that the IBM PC keyboard spec probably calls out TTL logic levels.

Steve H.


In that case I would not need a level convertor. Tks for your advice..
Christophe



Joined: 10 May 2005
Posts: 323
Location: Belgium

View user's profile Send private message

PostPosted: Fri May 11, 2007 1:28 am     Reply with quote

Another AT keyboard question; I'm having a BENQ mini AT keyboard here that has a USB connector. There is also a USB to PS2 converter. However when I open the convertor, I see that only the wires are transferred from the USB connector to the PS2 connector, there is no electrical conversion, no logic.
How is that possible? The USB and PS2 protocol are completely different!
Steve H.
Guest







PostPosted: Sat May 12, 2007 9:29 am     Reply with quote

Yes that is how it is done - frankly I have never looked at the specifics of this. I did a Google search and found this page though,

computer-engineering.org/ps2protocol/

Here is a link to a Patent that Cypress semi has on this method,

patentstorm.us/patents/6691201-fulltext.html

(put a www. in front of the address).

You might look at what application notes Cypress has on this method of interface.

HTH - Steve H.
Ttelmah
Guest







PostPosted: Sat May 12, 2007 9:59 am     Reply with quote

The PS/2/AT spec, requires that the interface to the keyboard is 'enabled', by drawing both clock and data lines high. The keyboard replies with a completion code. This is sufficiently different from the initialisation used in USB, that the chip in the keyboard can tell them apart, and switch modes.
The 2.4v level, is in the original IBM PC documentation for the AT keyboard interface, so keyboards should be pretty reliable at accepting this.

Best Wishes
Christophe



Joined: 10 May 2005
Posts: 323
Location: Belgium

View user's profile Send private message

PostPosted: Mon May 14, 2007 7:53 am     Reply with quote

I've succesfully implemented some PS2 library from the forum:

http://www.ccsinfo.com/forum/viewtopic.php?t=25673

Now this code is not working @4Mhz. It's working @12Mhz.

My application is working @4Mhz but has a lot of interrupts, a serial parser,... So now there are some things I can do:

1. My application has to run @20Mhz. Then I should try to get the keyboard routine to work with all other interrupts + my main program is relatively large + slow. I have to modify all timer settings and other to run @20Mhz.

2. I use a seperate small 8-pin PIC _only_ for reading the keyboard and serially communicating (sending the keycodes) with the main PIC16LF877A.
In my main app. I will have to use software UART to communicate with the PS2-PIC.

To me solution 2 is the easiestn but more expensive. however solution 1 would ask more software adaptation. Not sure if it's going to work as timing is critical to read the PS2 packet.


What would you advice to do?
Christophe



Joined: 10 May 2005
Posts: 323
Location: Belgium

View user's profile Send private message

PostPosted: Mon May 21, 2007 8:32 am     Reply with quote

Ttelmah wrote:
The PS/2/AT spec, requires that the interface to the keyboard is 'enabled', by drawing both clock and data lines high. The keyboard replies with a completion code. This is sufficiently different from the initialisation used in USB, that the chip in the keyboard can tell them apart, and switch modes.
The 2.4v level, is in the original IBM PC documentation for the AT keyboard interface, so keyboards should be pretty reliable at accepting this.

Best Wishes


Here I have such a keyboard:

BENQ mini AT keyboard: http://www.benq.nl/products/preview.cfm?id=66078

When I open the housing, I have a small PCB with V+, GND, D+ and D-
When I connect this interface to my PIC interface; It won't send characters.. ( a normal AT keyboard does ) Is there something you have to do to enable PS2 mode? What could be wrong?
Guest








PostPosted: Mon May 21, 2007 9:10 am     Reply with quote

Have you got the pull-up resistors on the lines?. The PC, normally has a 10K pullup on each line. This is what makes the lines go 'high', when they are set as inputs in the Init code. I'd guess that your other keyboard, has TTL inputs, which just happen to float high, while the CMOS inputs on the latter keyboard, need the pullups present. The normal PC circuit, also has a 47pF on each line to GND, to just help smooth the edges slightly.

Best Wishes
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group