| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| Neckruin 
 
 
 Joined: 17 Jan 2006
 Posts: 66
 
 
 
			    
 
 | 
			
				| 800KHz routine with PIC18F4550. Possible? |  
				|  Posted: Thu Apr 16, 2009 5:08 am |   |  
				| 
 |  
				| Good morning, I have been asked to evaluate whether it's possible or not to program a PIC according to the following requirements:
 
 - Every 1,25us a timer or similar I should be polling must trigger.
 - Once it has triggered I must do the following before the next iteration (1,25us later) comes:
 1) Set a PIN to high level
 2) Read a byte from an external memory
 3) Increment the pointer to the external memory to the next address
 4) Write one of the byte's nibble (4 bits) to a port
 5) Increment another counter to generate a 28us pulse every 77us
 6) Check the counter to toggle a pin to generate the 28us pulse
 7) Increment another counter to generate 77us pulse every 12550us
 8) Check the counter to toggle a pin to generate the 77us pulse
 9) Set the PIN at step 1) to low level
 10) Check for a new byte from another UC
 11) Read (if applicable) the new byte
 12) Store the byte in an external memory
 13) Update the external address pointer
 14) "Wait" for the next iteration to happen
 
 The PIC should do all this stuff every 1,25us.
 
 In my opinion is pretty difficult even with a 48MHz oscillator, considering the internal operation frequency as 1/4 from the external, which means 12MHz, which means 15 instruction cycles.
 
 It seems to be really hard to do even in assembler code.
 
 What do you think that would be the best option? overclocking? asm code? dsPIC maybe? HW solution? suicide?
 
 In any case... would it be possible with regular CCS C code in some case?
 
 Thanks for any orientation you can give me.
 |  | 
	
		|  | 
	
		| John P 
 
 
 Joined: 17 Sep 2003
 Posts: 331
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Thu Apr 16, 2009 7:18 am |   |  
				| 
 |  
				| I'm all in favor of adventurous programming, but this sounds like "Not even close". 
 Your response should depend on how polite you need to be to the person who's asking.
 
 But if you can get credit by suggesting an alternative--yes, a pile of logic chips should do it, or an FPGA.
 |  | 
	
		|  | 
	
		| treitmey 
 
 
 Joined: 23 Jan 2004
 Posts: 1094
 Location: Appleton,WI   USA
 
 
			      
 
 | 
			
				|  |  
				|  Posted: Thu Apr 16, 2009 7:39 am |   |  
				| 
 |  
				| When ever I have a problem like this I just code it up, and test it. You will see how close you can come.
 You will see where time is wasted.
 And that will point you in a direction to proceed.
 Perhaps several PIC is the answer.
 Master could say do the pulse,.. and the slave does it, and handles when to turn off.
 OR
 Perhaps the propeller chip.http://www.parallax.com/Portals/0/Downloads/docs/prod/prop/PropellerDatasheet-v1.1.pdf
 System Clock Speed = DC to 80 MHz
 And several cores could work together like several PICs I mentioned above
 |  | 
	
		|  | 
	
		| Neckruin 
 
 
 Joined: 17 Jan 2006
 Posts: 66
 
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Thu Apr 16, 2009 10:08 am |   |  
				| 
 |  
				| Well, I just would rather not feeling  I'm wasting the time trying an impossible thing. I think that the usage of more than one PIC may give better result but does not guarantee anything and generates new synchronization problems that had not been considered.
 I'll try to gather aditional information to define the problem better.
 Thanks.
 |  | 
	
		|  | 
	
		| FvM 
 
 
 Joined: 27 Aug 2008
 Posts: 2337
 Location: Germany
 
 
			    
 
 | 
			
				|  |  
				|  Posted: Thu Apr 16, 2009 11:26 am |   |  
				| 
 |  
				| The intended functionality seems to fit a complex programmable logic device (CPLD), e.g. an Altera MAX II. |  | 
	
		|  | 
	
		| Neckruin 
 
 
 Joined: 17 Jan 2006
 Posts: 66
 
 
 
			    
 
 | 
			
				| Graphic Display Controller |  
				|  Posted: Mon Apr 20, 2009 5:17 am |   |  
				| 
 |  
				| Hi all, Gathering more information I was said that the purpose of this code would be to implement a graphic display controller for a 160x160 LCD display with a refresh rate of 80Hz that receives the data "on the flow" but stores it to be able to draw full screens.
 
 That means that the display has no controller and the PIC must generate Vertical and Horizontal syncs and all that stuff.
 
 I have been looking in the web but I haven't found anybody who have done that.
 
 Maybe the best solution would be buying a COTS controller, wouldn't it?
 
 Any suggestions? :S
 |  | 
	
		|  | 
	
		| asmboy 
 
 
 Joined: 20 Nov 2007
 Posts: 2128
 Location: albany ny
 
 
			      
 
 | 
			
				| very close but--- |  
				|  Posted: Mon Apr 20, 2009 11:03 am |   |  
				| 
 |  
				| you would HAVE to get ALL the timer based/retriggerable monostable stuff OUTSIDE the pic - IE a hardware  based interconnected bunch of logic and  timer/counter chips - where the PIC monitors and adjusts as needed  using flag bits etc .
 
 to have ANY hope of success that 1.25Us repeat trigger has to be MONITORED , POST CHANGE - for a pin state change , and retrigger itself automatically perhaps.
 
 kinda the way the TOIF flag works on an internal timer0
 
 that 15 instrux limit is what you HAVE to break to make it fly.
 
 INTS sure wont do it here - the overhead alone will crush you.
 
 in short the 1.25us 'polling' interval is way to short to make use of a pic 18
 and get anything else done.
 
 i've managed things like an A/D with a 300 ns maximum trigger pulse requirement using a slow 16F   8 mhz pic ( .5 us instrux cycle ) - but an external fast one shot   - added do the dirty work that is too fast for even a pin toggle at the pics native clock rate.
 
 you need to be very hardware capable, or find somebody who is -  if you want to pursue this with a pic
 |  | 
	
		|  | 
	
		|  |