www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik atmel mega64 ic2 codevision


Autor: joe patterno (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !!!

Es klappt nicht.
Ich will einen IC2 Bus zum laufen bringen. Ich arbeite mit CodeVision.
Der uC gibt die Startbedingung aus. Danach wartet er auf das TWINT
flag. Vergebens. TWSR=0xF8.
Ich habe den uC auf dem STK501. Die Pins ziehe ich mit einem 100 ohm
Widerstand nach oben.
Das Oszi zeigt mir eine Startbedingung an. Sie wird ständig
wiederholt.
Wisst ihr was ?

Joe

Autor: Clemens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir jetzt zwar deinen Sourcecode noch nicht angeschaut, aber 100 ohm
ist sehr wenig als Pullup! Wenn du rechnest 5/100=0,05A =50mA!

Wenn du jetzt in den Maximum Ratings vom µC schaust siehst du, dass du
max. 40mA ziehen darfst! Als ich das letzte Mal I2C verwendet habe habe
ich 10k verwendet. => Hat einwandfrei funktioniert

Grüße

Autor: joe patterno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt es da einen zusammenhang,dass das TWINT nicht gesetzt wird ?
ich werde trotzdem mal die wiederstände ändern.

Autor: U.Bleile (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für einen Baustein(I²C Slave) willst Du den ansprechen ?
400kHz sind für viele ein bisschen heftig !
Die meisten Bausteine (8574 usw.) können nur 100kHz !
Der 100 R Pullup ist definitiv viel zu klein.
10K oder 4,7K funzt sicher !

MfG   Uwe

Autor: joe patterno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na ja, der slave ist noch nicht dran.
trotzdem, nach datenblatt muß doch das TWINT flag gesetzt werden, wenn
die die Startbedingung auf den Bus gesetzt wurde.

bin leider noch nicht dazugekommen die R zuwechseln.

Autor: joe patterno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe jetzt die R geändert.
ich habe einen LM75 temperatursensor von national semiconductors
angeschlossen.

nach dem senden der startbedingung wirt das TWINT flag gesetzt.
TWSR=$08 zeigt dann das eine Startbedingung gesendet wurde.
das ist schon mehr als vorher.
das kann man auch auf dem oszi sehen. sda geht auf low, kurz später
folgt scl.

nun die adresse:

#define TWINT 7
#define TWSTA 5
#define TWEN  2
#define TWSTO 4
#define TWEA  6

#define START       0x08
#define MT_SLA_ACK  0x18

//Sende adresse
printf("\nSende adresse\r\n");
TWDR=0x4F;
TWCR=(1<<TWINT)|(1<<TWEN);
//warte auf Twint flag, adresse wurde gesendt
while (!(TWCR&(1<<TWINT)));
printf("TWINT Flag Set\r\n");
//check start condition
if((TWSR&0xF8)!=MT_SLA_ACK)
  printf("Ack NOT received\r\n");
else
  printf("Ack received\r\n");

das TWINT flag wird gesetzt, aber weder bekomme ich ein ack noch sehe
ich was auf dem oszi(müsste ich doch?).

in der doc über den mega64 wird etwas von einer 9 bit adresse
geschrienben (7data,1R/W,1Ack). TWDR hat doch nur 8 bit. wie schreibe
ich den die anderern zwei (R/W , Ack) ?

joe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.