<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- generator="FeedCreator 1.7.2" -->
<rss version="2.0">
    <channel>
        <title>Lowyat.NET: Latest topics by slacx</title>
        <description></description>
        <link>http://forum.lowyat.net/</link>
        <lastBuildDate>Wed, 25 Nov 2009 02:12:29 +0800</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <item>
            <title>Switches debounce and output to LCD in gcc</title>
            <link>http://forum.lowyat.net/topic/609910</link>
            <description>Hi all&lt;br /&gt;&lt;br /&gt;I&amp;#39;m using this board from Atmel with proc ATMEGA169 and try to program the debouncing switch and output it to LCD but still no luck. I got blank screen on the LCD.&lt;br /&gt;&lt;br /&gt;The program is simple:&lt;br /&gt;&lt;br /&gt;Switch 1 - increase the number&lt;br /&gt;Switch 2 - decrease the number&lt;br /&gt;Switch 3 - switch 1 digit to the right&lt;br /&gt;&lt;br /&gt;The program is like below:&lt;br /&gt;&lt;br /&gt;&lt;!--c1--&gt;&lt;div class='codetop'&gt;CODE&lt;/div&gt;&lt;div class='codemain'&gt;&lt;!--ec1--&gt;&lt;br /&gt;&lt;br /&gt;&amp;#91;FONT=Courier&amp;#93;#include &amp;#60;avr/io.h&amp;#62; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	&lt;br /&gt;#include &amp;#60;stdbool.h&amp;#62;&lt;br /&gt;#include &amp;#60;avr/interrupt.h&amp;#62;&lt;br /&gt;#include &amp;#34;LCD_Driver.h&amp;#34;&lt;br /&gt;bool sw1_neu = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//actual switch values&lt;br /&gt;bool sw2_neu = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//&lt;br /&gt;bool sw3_neu = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//&lt;br /&gt;bool sw4_neu = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//&lt;br /&gt;bool sw1_alt = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//old switch values&lt;br /&gt;bool sw2_alt = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//	&lt;br /&gt;bool sw3_alt = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	// &amp;nbsp;&lt;br /&gt;bool sw4_alt = true;	&lt;br /&gt;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;void anzeigemodul&amp;#40;&amp;#41;;&lt;br /&gt;void LCD_Init&amp;#40;&amp;#41;;&lt;br /&gt;&lt;br /&gt;unsigned char menuanzeige=0; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //variable for the menu display&lt;br /&gt;unsigned char	xn = 0; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//input-code&amp;#91;xn&amp;#93;&lt;br /&gt;#define CN &amp;nbsp;10&lt;br /&gt;signed char Eingabecode&amp;#91;CN&amp;#93;={5,1,1,1,1,1,1,1,1,1};	&lt;br /&gt;&lt;br /&gt;int main&amp;#40;void&amp;#41;&lt;br /&gt;{&lt;br /&gt;	LCD_Init&amp;#40;&amp;#41;;&lt;br /&gt;	sei&amp;#40;&amp;#41;;&lt;br /&gt;&lt;br /&gt;	DDRC = 0xFF; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//PORTC auf Ausgang schalten&lt;br /&gt;	PORTC = 0x00; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//Alle Pins von PORTC auf null setzen&lt;br /&gt;&lt;br /&gt;	DDRA = 0xFF; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//PORTA auf Ausgang schalten&lt;br /&gt;	PORTA = 0x00; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//Alle Pins von PORTA auf null setzen&lt;br /&gt;&lt;br /&gt;	DDRD = 0xFF; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//PORTD auf Ausgang schalten&lt;br /&gt;	PORTD = 0x00; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//Alle Pins von PORTD auf null setzen&lt;br /&gt;&lt;br /&gt;	DDRG = 0xFF; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//PORTG auf Ausgang schalten&lt;br /&gt;	PORTG = 0x00; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//Alle Pins von PORTG auf null setzen&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	DDRE = 0x00; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//PORTA auf Eingang schalten&lt;br /&gt;	PORTE = 0x00; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//interne Pull-Up-Widerstände von PORTA deaktivieren&lt;br /&gt;	&lt;br /&gt;	&lt;br /&gt;	//Hauptprogramm &amp;#40;Endlosschleife&amp;#41;&lt;br /&gt;	while&amp;#40;1&amp;#41;&lt;br /&gt;	{&lt;br /&gt;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;	&lt;br /&gt; &amp;nbsp;sw1_neu= PINE &amp;amp; &amp;#40;1&amp;#60;&amp;#60;7&amp;#41;; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//read PC0&lt;br /&gt; &amp;nbsp;sw2_neu= PINE &amp;amp; &amp;#40;1&amp;#60;&amp;#60;6&amp;#41;; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//read PC1&lt;br /&gt; &amp;nbsp;sw3_neu= PINE &amp;amp; &amp;#40;1&amp;#60;&amp;#60;5&amp;#41;; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//read PC2&lt;br /&gt; &amp;nbsp;sw4_neu= PINE &amp;amp; &amp;#40;1&amp;#60;&amp;#60;4&amp;#41;; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//read PC3&lt;br /&gt;&lt;br /&gt; &amp;nbsp;if&amp;#40;&amp;#40;sw1_neu==0&amp;#41; &amp;amp;&amp;amp; &amp;#40;sw1_alt==1&amp;#41;&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//flank at s1 from 1 to 0?&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp;	&lt;br /&gt; &amp;nbsp;	Eingabecode&amp;#91;xn&amp;#93;++; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//increment numerical value&lt;br /&gt; &amp;nbsp;	if &amp;#40;Eingabecode&amp;#91;xn&amp;#93;&amp;#62;9&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//bigger than 9?	&lt;br /&gt; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp;Eingabecode&amp;#91;xn&amp;#93;=0; &amp;nbsp; &amp;nbsp; &amp;nbsp;//set zero	&lt;br /&gt; &amp;nbsp;	}&lt;br /&gt; &amp;nbsp; &amp;nbsp;anzeigemodul&amp;#40;&amp;#41;; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//refresh display&lt;br /&gt; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;if&amp;#40;&amp;#40;sw2_neu==0&amp;#41; &amp;amp;&amp;amp; &amp;#40;sw2_alt==1&amp;#41;&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//flank at s2 from 1 to 0?&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp;	Eingabecode&amp;#91;xn&amp;#93;--; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//decrement numerical value&lt;br /&gt; &amp;nbsp;	if &amp;#40;Eingabecode&amp;#91;xn&amp;#93;&amp;#60;0&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//smaller than 0?	&lt;br /&gt; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp;Eingabecode&amp;#91;xn&amp;#93;=9; &amp;nbsp; &amp;nbsp; &amp;nbsp;//set zero	&lt;br /&gt; &amp;nbsp;	}&lt;br /&gt; &amp;nbsp; &amp;nbsp;anzeigemodul&amp;#40;&amp;#41;; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//refresh display&lt;br /&gt; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;if&amp;#40;&amp;#40;sw3_neu==0&amp;#41; &amp;amp;&amp;amp; &amp;#40;sw3_alt==1&amp;#41;&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//flank at s3 from 1 to 0?&lt;br /&gt; &amp;nbsp;{&lt;br /&gt; &amp;nbsp; &amp;nbsp;xn++; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//switch 1 digit to the right&lt;br /&gt; &amp;nbsp;	if &amp;#40;xn&amp;#62;&amp;#40;CN-1&amp;#41;&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//bigger than CN-1?&lt;br /&gt; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp;xn=0; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//set zero&lt;br /&gt; &amp;nbsp;	}&lt;br /&gt; &amp;nbsp; &amp;nbsp;anzeigemodul&amp;#40;&amp;#41;; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//refresh display&lt;br /&gt; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sw1_alt = sw1_neu; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//&amp;#34;new data&amp;#34; gets written into &amp;#34;old data&amp;#34;&lt;br /&gt; &amp;nbsp;sw2_alt = sw2_neu;&lt;br /&gt; &amp;nbsp;sw3_alt = sw3_neu;&lt;br /&gt; &amp;nbsp;sw4_alt = sw4_neu;&lt;br /&gt;	}&lt;br /&gt; &amp;nbsp;&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void anzeigemodul&amp;#40;&amp;#41;&lt;br /&gt;{&lt;br /&gt; &amp;nbsp;PORTG &amp;amp;= ~&amp;#40; &amp;#40;1&amp;#60;&amp;#60;PG0&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PG1&amp;#41; | &amp;#40;1&amp;#60;&amp;#60; PG2&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PG3&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PG4&amp;#41;&amp;#41;;//Intern pullUps lOW&lt;br /&gt; &amp;nbsp;DDRG |= &amp;#40;1&amp;#60;&amp;#60;DDG0&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDG1&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDG2&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDG3&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDG4&amp;#41;;	//PortG as Output &amp;#40;1&amp;#41;&lt;br /&gt;	&lt;br /&gt; &amp;nbsp;PORTA &amp;amp;= ~&amp;#40; &amp;#40;1&amp;#60;&amp;#60;PA0&amp;#41; |&amp;#40;1&amp;#60;&amp;#60;PA1&amp;#41; |&amp;#40;1&amp;#60;&amp;#60;PA2&amp;#41; |&amp;#40;1&amp;#60;&amp;#60;PA3&amp;#41; |&amp;#40;1&amp;#60;&amp;#60;PA4&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PA5&amp;#41; | &amp;#40;1&amp;#60;&amp;#60; PA6&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PA7&amp;#41;&amp;#41;;//Intern pullUps lOW&lt;br /&gt; &amp;nbsp;DDRA |= &amp;#40;1&amp;#60;&amp;#60;DDA0&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDA1&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDA2&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDA3&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDA4&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDA5&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDA6&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDA7&amp;#41;;&lt;br /&gt;&lt;br /&gt; &amp;nbsp;PORTC &amp;amp;= ~&amp;#40; &amp;#40;1&amp;#60;&amp;#60;PC0&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PC1&amp;#41; | &amp;#40;1&amp;#60;&amp;#60; PC2&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PC3&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PC4&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PC5&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PC6&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PC7&amp;#41;&amp;#41;;//Intern pullUps lOW&lt;br /&gt; &amp;nbsp;DDRC |= &amp;#40;1&amp;#60;&amp;#60;DDC0&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDC1&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDC2&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDC3&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDC4&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDC5&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDC6&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDC7&amp;#41;;&lt;br /&gt;&lt;br /&gt; &amp;nbsp;PORTD &amp;amp;= ~&amp;#40; &amp;#40;1&amp;#60;&amp;#60;PD0&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PD1&amp;#41; | &amp;#40;1&amp;#60;&amp;#60; PD2&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PD3&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PD4&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PD5&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PD6&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;PD7&amp;#41;&amp;#41;;//Intern pullUps lOW&lt;br /&gt; &amp;nbsp;DDRD |= &amp;#40;1&amp;#60;&amp;#60;DDD0&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDD1&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDD2&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDD3&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDD4&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDD5&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDD6&amp;#41; | &amp;#40;1&amp;#60;&amp;#60;DDD7&amp;#41;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;nbsp; &amp;nbsp;&lt;br /&gt; &amp;nbsp; &amp;nbsp;unsigned char j; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//local variable for for-loop&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&lt;br /&gt;&lt;br /&gt; &amp;nbsp; &amp;nbsp; for&amp;#40;j=0;j&amp;#60;CN;j++&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp;	//writing the code on lcd&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;	LCD_puts_f&amp;#40;Eingabecode&amp;#91;j&amp;#93;&amp;#41;;&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;	if&amp;#40;curser==0&amp;#41; &amp;nbsp; &amp;nbsp; &amp;nbsp;	&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;	{&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Eingabecode&amp;#91;xn&amp;#93;=curserwert; &amp;nbsp; &amp;nbsp;	//return of the buffered value&lt;br /&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;	}&lt;br /&gt;}&lt;!--c2--&gt;&lt;/div&gt;&lt;!--ec2--&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The manual of this proc can get it here &lt;a href='http://www.atmel.com/dyn/products/product_card.asp?part_id=3012' target='_blank'&gt;ATMEL &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Anyone can help me??</description>
            <author>slacx</author>
            <category>Codemasters</category>
            <pubDate>Sat, 12 Jan 2008 04:16:10 +0800</pubDate>
        </item>
        <item>
            <title>Interrupt Service Routine</title>
            <link>http://forum.lowyat.net/topic/551227</link>
            <description>Hi all,&lt;br /&gt;&lt;br /&gt;i want to add one interrupt in my program but i stuck with it using microproc 80535. Currently my program run smoothly with one interrupt timer(with 6 LEDs blinking at specific time). But i want to add one more condition in it so that if i push one button all the lights will go off but just one light will blinking(but still using the same timing with the main program). What interrupt should i choose? and where can I put it? &lt;br /&gt;&lt;br /&gt;Thanks for any help. &lt;!--emo&amp;:respect:--&gt;&lt;img src='http://static.lowyat.net/style_emoticons/default/notworthy.gif' border='0' style='vertical-align:middle' alt='notworthy.gif' /&gt;&lt;!--endemo--&gt;</description>
            <author>slacx</author>
            <category>Codemasters</category>
            <pubDate>Sat, 10 Nov 2007 04:59:03 +0800</pubDate>
        </item>
    </channel>
</rss>
