Hallo,
komm irgendwie garnicht weiter mit dem I2C Bus am PIC18F2523.
MPLAB X, XC 8 Compiler, PicKit3.
Am I2C Bus hängt ein 12bit DA Wandler.
Hier erstmal der Code:
1 | /*
|
2 | * File: newmain.c
|
3 | * Author: Lena
|
4 | *
|
5 | * Created on 6. August 2013, 20:06
|
6 | */
|
7 |
|
8 | #include <xc.h>
|
9 | #include <plib/i2c.h>
|
10 |
|
11 |
|
12 |
|
13 | // CONFIG1H
|
14 | #pragma config OSC = HS // Oscillator Selection bits (HS oscillator)
|
15 | #pragma config WDT = OFF
|
16 |
|
17 | #define _XTAL_FREQ 4000000
|
18 |
|
19 |
|
20 | #define I2C_V1
|
21 | #define I2C_IO_V1
|
22 |
|
23 | void main() {
|
24 |
|
25 |
|
26 | TRISA = 0xFF; //Port A als Eingang
|
27 |
|
28 | TRISC = 0xFF; //Port C als Eingang
|
29 | PORTC = 0x00;
|
30 |
|
31 | OpenI2C(MASTER, SLEW_OFF);
|
32 | SSPADD = 0x09; //I²C Baud = 100kHz
|
33 |
|
34 | StartI2C();
|
35 | IdleI2C();
|
36 | WriteI2C(0x20); //Adresse vom Slave
|
37 | IdleI2C();
|
38 | WriteI2C(0xCF); //Modus MAX & erste 4 Databits
|
39 | IdleI2C();
|
40 | WriteI2C(0xFF); //Databyte
|
41 | IdleI2C();
|
42 | StopI2C();
|
43 |
|
44 |
|
45 | while(1)
|
46 | {}
|
47 | }
|
Leider funktioniert das nicht.
Naja, es funktioniert schon, wenn ich vorher ein Programm einspiel, was
ähnliches macht und auch für die Hardware geschrieben ist.
Sprich die Hardware ist ok.
Wenn ich dann aber den PIC resette und mein Programm drin ist, dann
gehts nicht.
Nochmal genauer:
1. Fremdes Programm rein: funktioniert
2. Mein Prog rein: funktioniert auch
3. Strom aus oder Erase
4. Strom an: Geht nicht
5. Mein Prog nochmal rein: Geht nicht
6. Fremdes Prog rein: Geht...
7. goto Punkt 2 ;)
Habe schon alle SFR verglichen, aber kein Unterschied feststellen
können.
Darf das fremde Programm leider nicht hier posten.
Im Grunde kann es ja nur irgendeine Config oder Einstellung in den
Registern sein.
Habe die Datenblätter und die i2c.h schon ein paar mal durch jetzt, aber
ich seh im obigen Code keinen Fehler oder irgendwas fehlendes. Ist auch
eigentlich nur ein ganz simples Programm zum testen und lernen erstmal.
Weiß nicht weiter grad :(