سلام.خسته نباشید . ایام فاطمیه رو هم به دوستان تسلیت میگم
دارم SIM908 راه میندازم اما یه مشکل دارم . یه برنامه ساده نوشتم که از وقفه خارجی صفر استفاده میکنه و داخل روتینش گفتم(با لبه پایین رونده)
پورت B3 که یه LED بهش وصله رو tuggle کن و وضعیت پورت رو اسمس کم بعدش روی lcd بنویس sms sent بعدش یه تاخیر و پاک کردن lcd
اینجا روتین وقفه تموم میشه,اما نحوه عملکرد مدار:
میکرو و ال سی دی روشن میشن روی ال سی دی نوشته میشه Ready to work (توی حلقه بینهایت) و منتظر وقفه است
لبه پایین رونده رو که با یه کلید ایجاد میکنم(pullup داخلی فعاله و int0 با button به زمین وصله) وضعیت B3 تاگل میشه یعنی خاموش بوده و روشن میشه
اسمس هم ارسال میشه روی lcd هم نوشته میشه و پاک میشه اما:
با پاک شدن lcd یعنی اخرین دستور روتین وقفه دوباره B3 برمیگرده به حالت اولش(خاموش)!!!!!!!!!!!! :surprised:
و دیگه میکرو هیج کاری نمیکنه . در صورتیکه باید برگرده به حلقه بینهایت و روی lcd بنویسه ready to work و منتظر وقفه باشه
دوستای با تجربه اگه کمکم کنید ممنون میشم.مشکلم کجاست؟؟؟؟
دارم SIM908 راه میندازم اما یه مشکل دارم . یه برنامه ساده نوشتم که از وقفه خارجی صفر استفاده میکنه و داخل روتینش گفتم(با لبه پایین رونده)
پورت B3 که یه LED بهش وصله رو tuggle کن و وضعیت پورت رو اسمس کم بعدش روی lcd بنویس sms sent بعدش یه تاخیر و پاک کردن lcd
اینجا روتین وقفه تموم میشه,اما نحوه عملکرد مدار:
میکرو و ال سی دی روشن میشن روی ال سی دی نوشته میشه Ready to work (توی حلقه بینهایت) و منتظر وقفه است
لبه پایین رونده رو که با یه کلید ایجاد میکنم(pullup داخلی فعاله و int0 با button به زمین وصله) وضعیت B3 تاگل میشه یعنی خاموش بوده و روشن میشه
اسمس هم ارسال میشه روی lcd هم نوشته میشه و پاک میشه اما:
با پاک شدن lcd یعنی اخرین دستور روتین وقفه دوباره B3 برمیگرده به حالت اولش(خاموش)!!!!!!!!!!!! :surprised:
و دیگه میکرو هیج کاری نمیکنه . در صورتیکه باید برگرده به حلقه بینهایت و روی lcd بنویسه ready to work و منتظر وقفه باشه
دوستای با تجربه اگه کمکم کنید ممنون میشم.مشکلم کجاست؟؟؟؟
کد:
/***************************************************** This program was produced by the CodeWizardAVR V2.05.3 Standard Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 3/2/2015 Author : User Company : Comments: Chip type : ATmega32A Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 512 *****************************************************/ #include <mega32a.h> #include <stdio.h> #include <delay.h> #include <alcd.h> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #define ctrl_z 0x1a flash char at_sms1[]= {'A','T','+','C','M','G','S','=','"','+','9','8','9','3','7','9','4','2','8','2','5','8','"','\r'}; void wait_to_get(char ch) { while(ch != getchar()); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { // #asm("cli") PORTB.3=~PORTB.3; lcd_clear(); lcd_gotoxy(0,0); putsf(at_sms1); wait_to_get('>'); if (PORTB.3==1) printf(" Device Is On,Now"); else if (PORTB.3==0) printf(" Device Is Off,Now"); putchar(ctrl_z); lcd_putsf("The SMS Sent ! "); delay_ms(3000); lcd_clear(); // #asm("sei") } void main(void) { //PORTA=0x00; //DDRA=0x00; DDRB.3=1; PORTB.3=0; DDRD.2=0; PORTD.2=1; //pull_up res // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Falling Edge // INT1: Off // INT2: Off GICR|=0x40; MCUCR=0x02; MCUCSR=0x00; GIFR=0x40; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 38400 UCSRA=0x00; UCSRB=0x18; UCSRC=0x06; UBRRH=0x00; UBRRL=0x0C; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTA Bit 0 // RD - PORTA Bit 1 // EN - PORTA Bit 2 // D4 - PORTA Bit 4 // D5 - PORTA Bit 5 // D6 - PORTA Bit 6 // D7 - PORTA Bit 7 // Characters/line: 20 lcd_init(20); #asm("sei") // lcd_clear(); //lcd_gotoxy(0,0); //lcd_putsf("Ready to work..."); while (1) { lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Ready to work..."); delay_ms(3000); } }
دیدگاه