Ich probiere aktuell gerade den 5-bit DAC des PIC16F15376 aus, das ist
mein aktueller Code:
1 | #include <xc.h>
|
2 | #define _XTAL_FREQ 4000000
|
3 |
|
4 | char dacBits = 12;
|
5 |
|
6 | void initDAC(){
|
7 | DAC1CON0 |= (1<<7); //Enable DAC
|
8 | DAC1CON0 |= (1<<5); //Tie voltage level to DAC1OUT1 pin
|
9 |
|
10 | DAC1CON0 &=~(1<<2);
|
11 | DAC1CON0 &=~(1<<3); //Use VDD
|
12 | }
|
13 |
|
14 | void writeToDac(char dacValue){
|
15 | DAC1CON1 = dacValue;
|
16 | }
|
17 |
|
18 | void main(void) {
|
19 | TRISA &=~(1<<0); //Output
|
20 | initDAC();
|
21 |
|
22 | while(1){
|
23 | writeToDac(dacBits);
|
24 |
|
25 | PORTA |= (1<<0);
|
26 | __delay_ms(500);
|
27 | PORTA &=~(1<<0);
|
28 | __delay_ms(500);
|
29 |
|
30 | dacBits++;
|
31 | dacBits %= 32;
|
32 | }
|
33 | }
|
Wenn ich den Wert von dacBits ändere, den Controller neustarte und
dann die Spannung mit dem Multimeter messe, ändert sie sich, wenn ich
das nun in der while-Schleife mache, dann sollte der Wert eigentlich von
~1.5V langsam (1 Änderung pro Sekunde) bis 3.3V ansteigen und dann
plötzlich auf 0V absinken um dann wieder entsprechend anzusteigen. Nur
wackelt der Wert zwischen 1.43V und 1.53V hin und her, woran kann das
liegen?
Das Pin-togglen mach ich nur damit ich die Zeit am Logic Analyzer
überprüfen kann.