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.