Hallo Miteinander, ich habe ein Problem und zwar will ich einen PIC12F683 aus dem Sleep-Mode Aufwecken mit einem Pegelwechsel an den I/O Pins. Leider mach ich jetzt schon ziemlich lange rum sowohl mit Interrupt on change als auch mit dem anderen feature einfach nur Pegeländerung an GP2 also INT GP2. Kurzum ich weiß nicht was ich falsch mache es müsste eigentlich ohne probleme funktionieren da der Pic quasi schon voreingestellt ist für einen Wake-Up durch einen interrupt. Vielen Dank für Eure Hilfe im Vorraus!!!!!!
hier der c-code wie ich ihn im PICC (HI-TECH C Compiler) benutze. #include <pic.h> void Init(); //void delayMS(int); // 1 2 3 4 5 6 7 8 __CONFIG(INTIO & WDTDIS & PWRTDIS & MCLRDIS & UNPROTECT & BORDIS & IESOEN & FCMDIS); // 1: INTERNAL OSC // 2: EnABLE WATCH DOG TIMER // 3: TIME UP DELAY Disabled // 4: DISABLE MCLR // 5: DISABLE CODE PROTECTION // 6: BROWN OUT DETECT DISABLED // 7: INTERNAL EXTERNAL SWITCHOVER MODE ENABLED wichtig für switchen des taktes // 8: FAIL-SAFE CLOCK disable //______________________________________________________________________ ___ void Init() { //OSSCON REGISTER IRCF2=0; //FOSC=31kHz IRCF1=0; IRCF0=0; OSTS=0; // Time out status bit bestimmt durch internen Takt HTS=1; // Stable HFintosc 125khz-8MHz LTS=1; // Stable LFintosc 31khz SCS=1; //PCON = 0b00100000; // Ultra-low-power wake up enabled würde nur was bringen wenn man es mit rc-network einen sleep takten würde OPTION = 0b11001000; // disable weak pullups, 1:1 prescaler on WDT INTCON = 0b10011000; // disable all interrupts bis auf Interuppt on change GPIO 0:5 und INT GP2, und das notwendige GIE Bit hierfür, clear all flags IOC=0b00000100; // Enable GPIO on Change für GPIO 2 für interrupt der den wake up aus dem sleep ausführt // Interrupt global freischalten GPIO = 0; // clear all I/O pins TRISIO = 0b00001000; // make all I/O pins outputs return; } //char x; void main() { Init(); while(1) { SLEEP(); GPIO=0x03; SLEEP(); GPIO=0x02; } } // Interrupt on change konfigurieren //IOC2 = 1; // GP3 kann Interrupt on change auslösen //GPIE = 1; // Interrupt on change freischalten //GPIO = GPIO; // eventuell vorhandenen "Mismatch" beenden //GPIF = 0; // Interrupt Flag löschen //GIE = 1; // Interrupt global freischalten
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.