Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Leute, > ich brauche mal Eure fachliche Hilfe.(eine Herqausforderung für alle I2C Fachmänner/Frauen) > > Ich habe bei André u.a. das max7311 I2C-RT16HS Modul gekauft und wollte eigentlich auch das > die MAX-Porterweiterung nachkaufen. Allerdings habe ich ein Problem bei der Inbetriebnahme. > Der MAX7311 antwortet zwischendurch nicht korrekt auf die Befehle, sendet anschinen kein ACK. > Speziell, wenn nach zum auslesen eines Registers zunächst die Moduladresse zum Schreiben > und anschließend das Command-Byte (welches das Register angibt) gesendet wird, bevor dann der > Lesevorgang beginnt. > > Die Besonderheit: in diesem Fall arbeite ich ohne CC2, d.h. ich nutze ein PC Modul zur Ansteuerung. > Das funktioniert soweit auch ganz prima, speziell nutze ich es erfolgreich mit einigen PCF8574. > Sehr gut bei dem Modul: Es gibt Echos für Erfolg oder Fehler auf dem I2C Bus, d.h. den Fehler kann > man sehr gut zuordnen, d.h. feststellen, bei welchem gesendeten Byte auf den Bus etwas nicht > hinhaut. > > Wie sieht das nun aus? : > Ich habe mir (orientiert am Datenblatt des MAX7311 und an dem Treiber für die CC2) zunächst einfache > Befehle gebaut, die es mir ermöglichen, Register zu setzen und zu lesen. Der Einfacheit halber lese > bzw. schreibe ich zunächst immer volle Register high + lwo Byte (Funktionen s.u.). > > Das Ganze funktioniert auch ganz gut, wenn ich die Funktionen z.B. als Event auf einen Button im der > Anwendung aufrufe. Allerdings gibt es Probleme, wenn der Rechner etwas mehr unter Damp steht. > Dies ist z.B. der Fall, wenn das Programm in der Entwicklungsumgebung startet, oder zwischendurch > mal die Last auf 100% geht. > > DAS PROBLEM: > Näheres Hinschauen hat ergeben, dass das Senden einzelner Bytes keine zu lange Pause verträgt. > Setze ich ein Sleep von z.B. 20 ms zwischen den einzelnen zu sendenen Bytes (s.u.), so antwortet der > MAX7311 nicht korrekt. > > Aber das dürfte eigentlich nicht sein, denn der Master gibt ja den Takt vor und da sich die Flanke > für den Max ggf. für die beispielhaften 20 ms nicht ändert, so sollte es eigentlich keine Auswirkungen > haben. Die Frequenzen sind ja nur bis oben und nicht nach unten begrenzt. > > Oder gibt es da maximale Pausen, bis das Command-Byte/register empfangen werden muss? > > Im regulären Betrieb, komme ich in einer Nacht auf ca. 3 fehlerhaft Commandos. > Je höher die Last ist, desto mehr Fehler werden gelogged. > > Mir hat auch einer berichtet, dass er ähnliche Probleme mit dem MAX7300 gehabt hat, die er bisher > noch nicht kösen. Auch da kam in besonderen Fällen kein Acknowledge zurück. > > ES WÄRE SUPER; WENN JEMAND EINE ERKLÄRUNG ODER EINEN ANSATZ HÄTTE. > > Momentan überlege ich tatsächlich den MAX als Fehlkauf einzustufen und ganz auf PCF umzusteigen. > Wenn ich mit dem Ding eine Sirene oder ein Licht ein/ausschalten will, muss ich auch sicher sein, dass > es tatsächlich passiert, sonst macht es keinen Sinn. > > Schönen Dank für alle Feedbacks!!!!! > Klaus > > > private bool MAX7311SetReg(byte modul, byte register, byte lowByte, byte highByte) > { > // Low-Level SEND WRITE ADDRESS WITH START > byte[] b1 = {87,MAX7311[modul].Address}; // 'W' > xport.Sendi2cCommand(b1); > while (xport.returnval==-1) {Application.DoEvents();} > if (xport.returnval==256) return false; > // low-Level SEND BYTE > byte[] b2 = {66,register}; // 'B' > xport.Sendi2cCommand(b2); > while (xport.returnval==-1) {Application.DoEvents();} > if (xport.returnval==256) return false; > // Low-Level SEND BYTE > byte[] b3 = {66,lowByte}; // 'B' > xport.Sendi2cCommand(b3); > while (xport.returnval==-1) {Application.DoEvents();} > if (xport.returnval==256) return false; > // Low-Level SEND BYTE > byte[] b4 = {66,highByte}; // 'B' > xport.Sendi2cCommand(b4); > while (xport.returnval==-1) {Application.DoEvents();} > if (xport.returnval==256) return false; > return true; > } > > private bool MAX7311GetReg(byte modul, byte register) > { > MAX7311_GetReg_Register=register; > // Low-Level SEND WRITE ADDRESS WITH START > byte[] b1 = {87,MAX7311[modul].Address}; // 'W' > xport.Sendi2cCommand(b1); > while (xport.returnval==-1) {Application.DoEvents();} > if (xport.returnval==256) return false; > !!!!Hier Pasue eine Pause von 20 ms macht Probleme > // Low-Level SEND BYTE > byte[] b2 = {66,register}; // 'B' > xport.Sendi2cCommand(b2); > while (xport.returnval==-1) {Application.DoEvents();} > if (xport.returnval==256) return false; > // mehrer Bytes mit RXN lesen > byte[] b9 = {114,MAX7311[modul].Address,2}; // 'r' > xport.Sendi2cCommand(b9); > while (xport.returnval==-1) {Application.DoEvents();} > if (xport.returnval==256) return false; > return true; > }
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB