Forum: Mikrocontroller und Digitale Elektronik PIC24FJ32GA002 und I2C Routine


von Alexander S. (mikralex)


Lesenswert?

Hallo, hat jemand schon I2C mit pic24fj32ga002 geschafft?
Brauche dringend eine Hilfe.
Grüße,
Alex

von Andreas K. (a-k)


Angehängte Dateien:

Lesenswert?

Für PIC30.

von Alexander S. (mikralex)


Lesenswert?

Danke für schnelle Reaktion,
ich habe schon viel mit PIC16F876 und I2C gemacht, nur mit dem neuen 
pic24 hängt irgenwie. Kann nicht einmal SDA oder SCL zum Leben erwecken.
Versuche jetzt mit deinen Routinen.
Grüße,
Alex

von Andreas K. (a-k)


Lesenswert?

Was natürlich nicht drin ist: Eventuell nötiges Routing der I2C-Pins, 
denn das gibt's ja erst bei 24F. Hier war's der 30F2010. Und der Test 
eher kurz, nur mit 8574 I/O-Port, muss also nicht vollständig 
funktionieren.

von Alexander S. (mikralex)


Lesenswert?

Habe jetzt so initialisiert,
passiert nichts am Bus!!! nicht einmal die Start-sequenz.
Habe die I/O auch richtig initialisiert, PullUps sind auch vorhanden.
Configuration, alles ist mehrmals überprüft.
Ich glaube das das an Compiler liegt (benutze dsPICC 6.0 von HiTech
 + MPLAB letzte update)
1
  // I2C Initialisieren...
2
3
    I2C1CON = 0;
4
    I2C1CONbits.SCLREL = 1;
5
    I2C1CONbits.I2CEN = 1;  
6
    I2C1CONbits.IPMIEN = 0;
7
    I2C1BRG = 39;
8
    MI2C1IE = 0;
9
    SI2C1IE = 0;
10
while(1){
11
12
    I2C1CONbits.SEN = 1;    // set start condition
13
    while (I2C1CON & 0x1F)
14
  ;
15
  DelayMs(1);
16
    I2C1TRN = 200;    // initiate transmission
17
    while (I2C1STATbits.TRSTAT)  // wait until completed
18
  ;
19
    I2C1CONbits.PEN = 1;    // set stop condition
20
    while (I2C1CON & 0x1F)
21
  ;
22
InitLCD();
23
ClearLCD();
24
}

von Michael (Gast)


Lesenswert?

Hallo zusammen,

ich habe zurzeit das gleiche Problem mit em PIC18F458. Ich arbeite mit 
MPLAB 7.6 .

Kann es sein, dass MPLAB en I2C Bus gar nicht richtig simulieren kann?

Bei mir passiert auch am Testboard nichts... weder eine Start Sequenz 
noch ein Interrupt obwohl ich alle Register befüllt habe.

HELP!

Gruß
Michael

von Michael (Gast)


Lesenswert?

Also ich hab ein Signal auf den Bus bekommen.
Ich hab bevor ich mit dem Senden beginne einfach mal ein Stop Bit 
erzeugt... danach hats dann funktioniert....

kann mir jmd mal den logischen Ablauf einer Nachrichtensendung 
beschreiben? auf welche Register muss ich acht geben und reagieren? evtl 
ein C-Code Beispiel wäre cool..

Gruß
Michael

von Andreas K. (a-k)


Lesenswert?

Michael wrote:

> Also ich hab ein Signal auf den Bus bekommen.
> Ich hab bevor ich mit dem Senden beginne einfach mal ein Stop Bit
> erzeugt... danach hats dann funktioniert....

Irgendsowas steht glaube ich im Erratasheet drin.

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
Noch kein Account? Hier anmelden.