Problem Cortex M3 (LM3S3748)

OP #2092532
Lesenswert?

Hallo,
ich habe für mein Technikerprojekt erstmal ein kleines
Programm geschrieben um mich in den Controller einzuarbeiten.
Es soll über PortA PIN 6,7 ein Software I2C nachgebildet werden.

Jetzt hab ich das Problem das ich wenn ich das ACK abfrage die SDA nicht 
auf
High geht und somit kein ACK gelesen werden kann.
1
char SW_I2C_ACK(void)
2
{
3
unsigned char Temp,x;
4
  GPIO_PORTA_DATA_R  |= 0x80;           //SDA High  
5
  Delay_us(10);
6
  Temp = GPIO_PORTA_DATA_R;              //Port sichern
7
  GPIO_PORTA_DATA_R  |= 0x40;          //SCL High
8
  GPIO_PORTA_DIR_R  ^= 0x80;          // SDA INPUT  
9
  Delay_us(20);
10
  x=GPIO_PORTA_DATA_R;
11
  if ((x & 0x80)==0)    //  Überprüfen SDA Low (ACK)
12
  {
13
    GPIO_PORTA_DIR_R  ^= 0x80;          // SDA OUTPUT
14
    GPIO_PORTA_DATA_R = Temp;              // PORT wieder zurückschreiben
15
    Delay_us(10);
16
    return 0x01;
17
  }
18
  else
19
  {
20
    GPIO_PORTA_DIR_R  ^= 0x80;          // SDA OUTPUT
21
    GPIO_PORTA_DATA_R = Temp;              // PORT wieder zurückschreiben
22
    Delay_us(10);
23
    return 0x00;
24
  }
25
  
26
}

Habe das gefühl das zwar das sezten von GPIOs übers DATA Register geht 
aber das einlesen will net immer funktionieren.
Hat jemand erfahrung mit dem Controller?
#2092752
Lesenswert?

Ich würde vielleicht SDA auf zwei Pins aufspalten, einem Input-Pin zum 
Lesen des Zustandes und einem Output-Pin, der über einen Transistor oder 
das Gate eines HC125-Gatters, dessen Input auf Ground liegt, SDA 
herunterzieht. Ich könnte mir durchaus vorstellen, dass das Umschalten 
der Datenrichtung länger dauert als das Setzen eines Bits.

fchk
Gast #2092763
Lesenswert?

Dafür sind die 20us delay da. Es ist aber so noch was denn selbst mit 
dem Jtag debugger will der Pin dann net mehr so. Aufm Oszibild sa aber 
alles passend aus. Layout ist vorerst mal fest platine schon vorhanden.
Glaub eher das der Controller irgendwas vergisst wenn man richtung 
umschaltet. Datenblatt ist da auch meist sehr dürftig.

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