AS1130 First attempt - working

I'm interested for future reference but not currently using the chips so don't have a lot of input.

the Arduino method of development and debugging.

What is this, and why is a PIC different? Are you referring to the neat-looking PICkit gadgets?


Rob

:grin: No...I don't have any gadgets other than a PicKit3 programmer/debugger.

I'ts mostly because I don't have to stumble every time I want to change something using the MPLAB IDE. I know how it works and am familiar with it.

Also I can set break points and step through code, look at timing cycles etc. etc.

The main thing that got to me this afternoon was I couldn't figure a way of moving the data array into another file and including it in the path of the compiler. I want to get on with programming the chips...not learning to do something that I can do without effort in the CCS C or PIC18 environment and it has frustrated me for a while now that I have to scroll past 380 lines of data to get from the defines to the main loop every minute or so. I can't even move it to the end of the file because the compiler complains... :roll_eyes:

Now that I have 2 chips on the go I will have a data array which is double the size and I don't want to wear out my middle mouse button or waste more of my precious time scrolling up and down like an idiot. :grin:

I will continue to learn the Arduino way...but at the moment I want to get on with my 24x11 LED matrix....

Yeah, learning a new tool set is a real pain, you just want to get on with the job but keep falling over stuff because you aren't familiar with it.

The standard IDE is way too frustrating to use IMO. That said you can split your code into multiple tabs, I've not done so (because I don't use the IDE :)) but that should allow you to move all the crap at the top of the file. Try clicking on the small down arrow at the right of the tab area, that gives a menu with a "New tab" option. I assume you do that and move code across but as I said I haven't done it myself.

I feel your pain re the lack of proper debugging tools. I've been using LPCs for a while now and it's fantastic to have a real debugging environment. Maybe you should try the Visual Micro IDE, that's based on VS2008/10/12 and it's pretty nice. It does have debugging although I've only just downloaded it and haven't got it working yet.

http://www.visualmicro.com/


Rob

Thanks for the comments guys. :smiley:

I've managed to get the data into another file now, so I'll stick with it I think.

Aparently the compiler goes through the files and headers in alphabetical order...so you have to make sure defines and declarations are in the right place!

Oh well...still here for the duration.... :wink:

PS the VS stuff looks useful.

Update:

I haven't given up... :grin:

I now have a board with 2 AS1130s and a 24 x 11 Matrix up and running.
Still waiting for the rest of the LEDs from China.
Sync works fine.

Interrupts now work...I'm currently coding an example.

I'll post a video and the code as soon as I have it in good shape. :wink:

Well...

Here's the video anyway...I've had so much trouble with the I2C on the Arduino, I've given up on it for the duration and written this for the PIC18F4550. :fearful:

My other 500 LEDs arrived today so I'll be getting on with the soldering and finalising the 24 x 22 Matrix code on the PIC, then if I can get it reliably working I'll port it to the AVR.

Sorry it's the usual crappy quality but at least you get the idea. :grin:

This is AS1130 #1 providing the clock for #2 and it works very well. IRQs are still a little strange but I've got a handle on it now I think. ]:slight_smile:

..still working on the code but I'll email it to you as soon as it's ready. :wink:

Hello,

could you please edit your last post and call me binarygod? i don't want that anybody knows my real name...
by the way: how do you know my real name?

done

change your youtube name to something that doesn't include your real name if you want to remain incognito... :roll_eyes:

Are you hiding for some reason? :grin: :stuck_out_tongue:

"AS1130.h" is an included file and not a library and I use it to get it out of my way.

It's just a way of splitting a file into 2 parts so that I don't have to scroll past all the defines etc. while I'm programming.

When you program in C, you create what are called "header" files. They contain all the class definitions for the methods used. You generally split the class definition and the class implementation parts of the class. Its just how it works. You can have the class implementation in the class definition file but it gets annoying to have to scroll past all the definitions.

Sorry I've been absent lately, I've been working on an FPGA and I've slowly been realizing how much more awesome it is.

All true and helpful....except :fearful: you can't have classes in C...that's why they invented the OOP version C++ :stuck_out_tongue:

Nice to see you back mate...what FPGA are you playing with?

Ah, well I'm learning c++ now in my defense! :smiley:

I'm working with a Spartan 6 FPGA on the Nexys-3 board from diligent.

Looks like anice bit of kit...did your Uni supply it or are you rich? :grin: :grin:

but I still have to scroll past all the defines because I'm using Dev-C++.

Are you saying that it doesn't allow include files? Yikes, what sort of compiler is that?


Rob

@binarygod

Yikes, yea, you should put those in a separate file and just include it. Just like how you do with the wire library.

@Hexadec

I wish I was rich. Then I could get touchscreen lcds all up in this uni. No my uni has them. My semester ends here soon so I think i'll just check on out over winter break.

To be honest mate...if you insist on using your own compiler, then you are going to run into problems as I said earlier.

I don't know how long the Mods or Admin will allow the discussion of porting code to another system.... :astonished:

Having said that...I would look up how YOUR compiler works with the I2C bus and concentrate on that. The Wire library is a wrapper for I2C and as such will just confuse you if you don't know the I2C protocol.

Here is some of my code for the CCS C compiler...I hope I don't get banned or repremanded for posting it here.

It may help because it looks like it is closer to your compiler....

/*****************************************************************************/
/*                      COMMUNICATIONS FUNCTIONS                             */
/*****************************************************************************/

/***** Function to write configuration settings to I2C bus *******************/
void AS1130_config(char AS_addr, char ram_reg, char command, char data)
{
	i2c_start();
	i2c_write(AS_addr);
	i2c_write(REGISTERSELECTION);
  	i2c_write(ram_reg);
	i2c_stop();
	
	i2c_start();
	i2c_write(AS_addr);
  	i2c_write(command);
	i2c_write(data);
	i2c_stop();
}
/*****************************************************************************/
/*                 EXT EEPROM COMMUNICATIONS FUNCTIONS                       */
/*****************************************************************************/

/***** Function to write data to external EEPROM *****************************/
//Standard I2C Protocol (see datasheet)
void write_ext_EEPROM(long int address, BYTE data)
{
   short int status;
   i2c_start();
   i2c_write(EEPROM_WRITE_ADDR);
   i2c_write(address>>8);
   i2c_write(address);
   i2c_write(data);
   i2c_stop();
   i2c_start();
   status=i2c_write(EEPROM_WRITE_ADDR);
   while(status==1)
   {
      i2c_start();
      status=i2c_write(EEPROM_WRITE_ADDR);
	//	delay_cycles(200);
   }
   i2c_stop();
}
/***** Function to read data from external EEPROM ****************************/
//Standard I2C Protocol (see datasheet)
BYTE read_ext_EEPROM(long int address)
 {
   BYTE data;
   i2c_start();
   i2c_write(EEPROM_WRITE_ADDR);
   i2c_write(address>>8);
   i2c_write(address);
   i2c_start();
   i2c_write(EEPROM_READ_ADDR);
   data=i2c_read(0);
   i2c_stop();
   return(data);
 }

Seriously, you need to understand the I2C protocol fully before Wire or bit banged (or anything in between) I2C will make any sense.

Here is a link to the EEprom's datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/21754M.pdf
Sections 4, 5 and 6 are pretty revealing as is the I2C description in the AS1130 datasheet.

This is a discussion that should be open for all. The only issue I can see is that it is programmed on a PIC. Anything other than that is needless problems. Please develop in proper IDEs. If you have problems with I2C, understanding it and all. I can write something up if you like.

It's arduino code so there can nobody tell me I'm in the wrong topic

ROFLMAO :grin: :grin:

I did post at the beginning somewhere that this is my first attempt at using the Arduino system and the AtMega chips....before I started this project I'd never heard of the Wire library... :stuck_out_tongue:

I can read though...and have a background in electronics and computer science. ]:smiley:

The code is not optimised or elegant...I just posted it to show how I got the AS1130 working with an Arduino.

Anyway....

I now have the 24 x 11 version working and am starting this weekend to solder up the other 2 chips and 264 LEDs which will give me 24 x 22. My plan then is to look into optimising the code and porting it to the Arduino...then I'll look at RGB, but I haven't found any RGB LEDs that I can solder in a very tight matrix.... :frowning:

Until the code is optimised and debugged I don't really want to share it because I am changing it all the time...and I haven't even started to include blinking and dot correction yet :fearful:

To answer your question...the begin method initialises the I2C bus and sets the internal pullups on SDA and SCL. The beginTransmission method does exactly what it says.... :smiley: