www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C Problem


Autor: Max (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuch schon seit mehreren tagen vergebens einen PCF8547AP an
einem Mega8 zum laufen zu bringen.Der Code ist im Anhang. Das ganze
leuft auf einem STK500. Hab keien ahnung woran es liegen könnte. Ich
kontroliere den Status über das UART. Das Prog leuft bis zum ersen
auswerten des TWSR registers (bei wait1) "normal" ab. Bei der
überprüfung bricht er ab und springt zu error. am terminal wird dann
aber trotzdem 0x08, also der eigentlich richtige wert ausgegeben. Das
Progrmm kommt original aus dem Datenblatt des Mega8.
Kann vieleicht mal jemand schaun ob er eien Fehler findet? Oder liegt
es vieleicht an der hardware ? Pullups und nen kondensator paralell zum
PCF hab ich eingebaut.

mfg

Max

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
>  in temp, TWSR
>  andi temp, 0xF8
>  cpi temp, 0b00001000 ;0x08
>  brne ERROR
Das kann nicht gehen weil du $F8 mit $08 vergleichst und das ist doch
wohl augenscheinlich was anderes.
Also entweder $08 & $08 oder $F8 & $F8.
cpi ist umgesetzt "temp" - $08 und da soll ja "null" rauskommen.

 muss lauten:
  in temp, TWSR
  andi temp, 0x08
  cpi temp, 0b00001000 ;0x08
  brne ERROR
oder:
  in temp, TWSR
  andi temp, 0xF8
  cpi temp, 0b11111000 ;0xF8
  brne ERROR


MFG Uwe

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Uwe

Irgendwie kann ich dir nicht ganz folgen.
mit andi temp, 0xF8 erden doch einfach nur die drei unteren bits
(prescaler bits)herausgefiltert. es soll nur geprüft werden, ob das 4te
bit gesetzt ist oder nicht.

mfg

Max

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jep, Max, hast recht.
Ich habe mal kurz drübergeschaut, aber noch nichts entdeckt. Wenns
klappt, schaue ich mir heute abend alles nochmal an, ich habe schon
mehrere TWI-Anwendungen am Laufen.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Du kannst schon alle bits ausfiltern, nur kannst du dann nicht mit cpi
nur das 4.Bit prüfen weil bei cpi 8 Bit gleichzeitig getestet werden.
-oder kann nur Bit3 gesetzt sein???,dann wäre es richtig.
<cpi ist umgesetzt "temp" - $08 und da soll ja "null" rauskommen.
ein richtiger Bittest wäre:
in temp, TWSR
  andi temp, 0xF8  ;kann jetzt sogar weggelassen werden
  sbrs temp,3      ;überspr.wenn in temp Bit3 gesetzt
  rjmp ERROR
   ...

habe schnell nochmal ins Datenblatt geschaut.-Du hast recht, es kann
eigentlich nur Bit3 gesetzt sein -und du hast ja auch $08 über UART-

Sehr eigenartig! uC-Fehler??? Bin bei 1.Antwort von mehreren gesetzten
Bit's ausgegangen.

MFG Uwe

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CPI wird deshalb verwendet, weil die TWI-Schnittstelle verschiedene
Status-Codes ausgibt. Das können auch Bitkombinationen sein, bei dieser
speziellen Abfrage von $08 sieht das ein wenig unglücklich aus, ist
aber so an und für sich richtig.

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

@thkais
Danke das du dir mein programm mal anschauen wilst. Bin zwar nich
tgerade am verzweifeln, aber schön langsam wurmts mich doch.

mfg

Max

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo thkais

hast du schon as herausgefunden?

mfg

Max

Autor: Jonny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Wo finde ich datenblätter über den IC PCF8547AP.


Jonny

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.... die Datenblätter findet man u.a. bei Reichelt.de
Suche dort den PCF8574, dann gibt es dort einen Downloadbereich.

vg.  gerhard

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.