All Blog Posts (53)

Rant: I know where the bug is, how to fix it, but why?

In one of my define tables, if the table gets to a certain length I get a bug in my code. Just take one character away from that and everything is fine. I have found no significance in regard to... actually, I never counted it until now.

If there are 33 characters, my code bugs out. 32 is okay. Well, 32 is a very important number, but I have longer tables elsewhere. There is also no reason for this to bug out. It's simply absurd!

Added by Ritchie Thai on January 26, 2011 at 12:54am — 1 Comment

Tip: DT Uses Up A LOT of lines.

Each dt (define table) directive uses up a line for each character in your table/string. If you're not careful, your code could get long despite being short.


Here's how the define table directive works. Each character in your string is actually translated into a single retlw (return literal in W).

 

For example:

dt "Hello!"

 

is translated into:

retlw 'H'
retlw 'e'

retlw 'l'
retlw 'l'
retlw 'o'
retlw '!'

Added by Ritchie Thai on January 26, 2011 at 12:00am — No Comments

Tip: The directory of your MPLAB project can cause problems.

If the path size of your MPLAB project's directory is too long, for example:

C:\Users\Main\Desktop\ritchie-thai\current-projects\aer201

then a .hex file will not be created.

 

I am now using a workspace with the much shorter path:

C:\mplab-test\KeyPad_LCD

 

Don't computers suck?

Added by Ritchie Thai on January 25, 2011 at 10:30pm — 1 Comment

Tennis Ball Experiment Results

Tennis%20Ball%20Rolling%20Experiments.xlsx

 

tl;dr

 

I rolled about 1000 tennis balls down an incline. It turns out that you need an angle greater than 7.7* to ensure a column of tennis balls will roll without error.

Added by Calvin Moes on January 23, 2011 at 3:00pm — 2 Comments

Sample codes for stepper motor

list p=16f877                 ; list directive to define processor      

#include <p16f877.inc>        ; processor specific variable definitions    

 __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & _CPD_OFF & _LVP_ON

 

 

cblock 0x20

 COUNTH

  COUNTM

  COUNTL

endc



         ORG       0x0000     ;RESET vector must…

Continue

Added by PML on January 19, 2011 at 10:46pm — No Comments

PCB Design Softwares

Altium and Eagle are great softwares for PCB design. The softwares can be used to generate schematics and this information (all the parts and connections) can be automatically transferred to a PCB design layout where the parts can be manually arranged and then automatically routed (for relatively simple layouts). Altium also has a simulator and a 3D design layout mode that is helpful for complicated design. Eagle does not have these functions. However it is much less expensive than Altium.…

Continue

Added by Thineshan Kathirchelvan (TA) on January 13, 2011 at 11:00pm — No Comments

Introduction to USB Communication

Transactions: A USB transaction has three parts: the token packet, the optional data packet, and the status packet, which represent the header, payload, and data

acknowledge, respectively. Since USB is host-driven, the host initiates

transactions by sending the token packet. It also sends packets to indicate the

start of each frame, every millisecond. Packets on this layer are taken care

of, so the…

Continue

Added by Thineshan Kathirchelvan (TA) on August 17, 2010 at 10:41pm — No Comments

PIC delay code generator

Often times in project coding development, the programmer need to generate some sort of delay. It is hard and tedious to calculate by hand, an alternative way is to use the Pic Delay Code Generator for ASM Programmers made by N Golovchenko.…

Continue

Added by Yifan Wang on August 17, 2010 at 5:30pm — No Comments

Introduction to Inter-Integrated Circuit (I2C)

It is quite clear that the I2C bus can be very confusing for the newcomer. This short article therefore tries to de-mystify the I2C bus, I hope it doesn't have the opposite effect!…





Continue

Added by Shayegan (TA) on August 17, 2010 at 5:00pm — No Comments

Introduction to FPGAs

Modern technology allows the construction of chips that contain configurable circuitry which can be changed in order to implement a wide range of different logic circuits. Two different types of chips fall under this approach – PLDs and ASICs.


The Application-Specific Integrated Circuit (ASIC) is a chip intended for very specific uses within a design. These chips lack the dynamic nature of PLDs and are usually custom-ordered from the vendor. On the other hand,…
Continue

Added by Valentin on August 17, 2010 at 5:00pm — No Comments

Introduction to Serial Communications (RS232)

All IBM PC and compatible computers are typically equipped with two serial ports and one parallel port. Although these two types of ports are used for…

Continue

Added by PML on August 14, 2010 at 2:00pm — No Comments

Converting 2-Digit Hex to Decimal ASCII Code for Display

Some times it is desired to convert a 2-bit hex code into decimal ASCII code.


For example, MCU processes hex number. If the user wishes to display the value code of a counter in a MCU, a conversion to decimal ASCII code will be required. Other wise, when the counter goes up to "11", the actual value in the MCU would be 0x0A, and the corresponding ASCII characters that will be displayed are "0 :"


The following code converts a hex value to decimal…
Continue

Added by PML on July 21, 2010 at 6:00pm — No Comments

Monthly Archives

2018

2016

2015

2014

2013

2012

2011

2010

2009

1999

1991

1990

1989

1988

1987

1986

1985

1984

1983

1982

1981

1980

1979

1978

1977

1976

1975

1974

1973

1972

1971

1970

1969

1968

1967

1966

1965

© 2021   Created by PML.   Powered by

Badges  |  Report an Issue  |  Terms of Service