I2C Problem PIC16F876

Gast #3295235
Lesenswert?

Guten Tag

Für ein Projekt von mir wollte ich mal ein I2C Testprogramm schreiben.
Leider funktioniert es nicht.
Ich will mit 2 PIC16F876 (Master, Slave) kommunizieren.
Die Programmierung erfolgt in C auf MPLAB mit einem PICKit3.

Programm Master:

main.c:
1
#include <main.h>
2

3

4
int value = 0x01;
5
int din = 0x00;
6

7
void Bus(void){
8

9
    i2c_start();      //I2C Bus starten
10
    i2c_write(0xa0);    //Slave Adresse
11
    i2c_write(value);      //Daten senden
12
    i2c_start();      //I2C Bus restarten
13
    i2c_write(0xa1);    //Slave Adresse
14
    din=i2c_read(0);  //Daten von Slave lesen
15
    i2c_stop();        //I2C Bus stoppen
16

17
}
18

19
void main()
20
{
21

22
  while(TRUE)
23
  {
24

25
    if(input(PIN_A0)==1)
26
    {
27
      output_c(0x02);
28
      value = 0x01;
29
      Bus();  
30
    }
31
    else
32
    {  
33
      output_c(0x01);
34
      value=0x00;
35
      Bus();  
36
    }
37

38
    if(din==0x01)
39
    {
40
      output_c(0x0F);
41
    }
42
    delay_ms(10);
43
  }
44
}

main.h:
1
#include <16F876.h>
2
#device adc=16
3

4
#FUSES NOWDT                   //No Watch Dog Timer
5
#FUSES HS                      //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
6
#FUSES PUT                     //Power Up Timer
7
#FUSES NOBROWNOUT              //No brownout reset
8
#FUSES NOLVP                   //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
9

10
#use delay(clock=8000000)
11

12
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3,restart_wdt,force_hw)



Als ich mit dem Debugger durch ging blieb er immer bei #use stehen.

Braucht es noch eine Include Datei fürs I2C? Oder liegt der Fehler wo 
anders?

Vielen Dank Simon

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren