Hallo Leute,
ich beschäftige mich zur Zeit mit dem Sleep mode. Ich programmiere mit
dem High tech compiler und benutze den PIC12F1822. Zum Testen habe ich
ein simples Programm geschrieben, indem der ADC läuft. Ich habe im
Datenblatt gelesen, dass man den Sleep mode durch ein Interrupt
aufwecken kann. Dazu muss aber der Clock beim ADC auf FRC (dedicated
internal oscillator) gewählt sein, weil sonst der ADC gar nicht läuft.
Ich habe alles nach den Anweisungen programmiert. Es steht, dass nach
dem eine Konvertierung fertig ist und das Flag bit gesetzt wird, der
Code nach der Sleep-Anweisung folgt. Es steht drin, dass das GIE bit
nicht gesetzt sein muss, aber das ADC enable bit und das peripheral
interrupt enable bit. Ich habe an meiner Schaltung nur den Controller,
sodass nicht verfälscht werden kann. Doch ich schaffe es nicht den
Controller vom Sleep mode aufzuwecken. Ich hoffe, dass jemand schon
Erfahrungen mit dem sleep mode hat.
Gruß
Paarthurnax
1 | #include <htc.h>
|
2 |
|
3 | void main(void)
|
4 | {
|
5 | TRISA2 = 1;
|
6 | ANSELA = 0b00000100;
|
7 | ADCON1bits.ADCS = 0b111;
|
8 | ADCON1bits.ADPREF = 0b00;
|
9 | ADCON0bits.CHS = 2;
|
10 | ADCON0bits.ADON = 1;
|
11 | PIR1bits.ADIF = 0;
|
12 | PIE1bits.ADIE = 1;
|
13 | INTCONbits.PEIE = 1;
|
14 | INTCONbits.GIE = 0;
|
15 | ADCON1bits.ADFM = 1;
|
16 |
|
17 | SLEEP();
|
18 |
|
19 | while(1)
|
20 | {
|
21 | ADGO = 1;
|
22 | while(ADIF == 0)
|
23 | {}
|
24 | }
|
25 | }
|