mikrocontroller.net

Forum: Compiler & IDEs DS18B20 rom search


Autor: Christian Georgi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche ein Projekt mit dem DS18B20 zu bauen.
Ich benutze die files von Peter Dannegger;
Bei der Rom search wird auch richtig -2 für keine Device zurückgegben.
Wenn allerdings ein Device am  Bus hängt bekomme ich als cnt 0.
Er kommt da aus der search rom routine nicht wieder oder bringt einen 
falschen Rückgabewert.

Die Zeile    if (i ==40){return i;} habe ich eingefügt.
Die 40 bekomme ich auch noch.
Wenn ich die Zahl auf 32 ändere bekomme ich als rückgabe von rom search 
0...

kann mir jemand helfen?

Danke
Gruß
Christian


uchar w1_rom_search( uchar diff, uchar idata *id, uchar W1PIN )
{
  uchar i, j, next_diff,a;
  bit b;
  if( w1_reset( W1PIN) ){
    return PRESENCE_ERR;      // error, no device found
  }
  w1_byte_wr( SEARCH_ROM, W1PIN);    // ROM search command
  next_diff = LAST_DEVICE;      // unchanged on last device
  i = 8 * 8;          // 8 bytes
  do{

    j = 8;          // 8 bits
    do{
      b = w1_bit_io( 1 , W1PIN);    // read bit
      if( w1_bit_io( 1 , W1PIN) ){    // read complement bit
  if( b )          // 11
    return DATA_ERR;      // data error
      }else{
  if( !b ){        // 00 = 2 devices

    if( diff > i ||
      ((*id & 1) && diff != i) ){
      b = 1;        // now 1
      next_diff = i;      // next pass 0
    }
  }
      }
      w1_bit_io( b , W1PIN);         // write bit
      *id >>= 1;
      if( b ){*id |= 0x80;}// store bit
      i--;

    }while( --j );
    id++;          // next byte
    if (i ==40){return i;}
  }while( i );

Autor: Christian Georgi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, bin jetzt soweit, das ich in der Routine w1_bit_io das deaktivieren 
aktivieren der interrupts auskommentiert habe.
Ich bekomme jetzt Ausgabe siehe unten.
Niemand eine Idee?
Danke
Gruß Christian
D:\1WireDs1820.exe meastemp 0
found 4 busses
seen product ->USB-DS1820<-
PIN:0
ID: 28 BF 62 3B 01 00 00 D8; Temperatur:  170.5 C; returned T: 0x155

D:\1WireDs1820.exe meastemp 1
found 4 busses
seen product ->USB-DS1820<-
PIN:1
ID: 28 BF 62 3B 01 00 00 D8; Temperatur:  170.0 C; returned T: 0x154


uchar w1_bit_io( bit b, uchar W1PIN )
{
//  cli();
  W1_DDR |= 1<<W1PIN;
  DELAY( DELAY_US( 1 ));
  if( b )
    W1_DDR &= ~(1<<W1PIN);
  DELAY( DELAY_US( 15 - 1 ));
  if( (W1_IN & (1<<W1PIN)) == 0 )
    b = 0;
  DELAY( DELAY_US( 60 - 15 ));
  W1_DDR &= ~(1<<W1PIN);
//  sei();
  return b;
}

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei den spärlichen Infos kommen einem keine Ideen, nur
abzuschalten ;-)

Also die Originalroutinen haben bei mir so funktioniert.

Wenn Du daran änderst, solltest du schon wissen was du tust.
Und auch solltest Du wissen, wie deine sonstige Programmumgebung
dazu aussieht, sprich ob Interrupts z.B. stören, so wie es ja
wohl der Fall zu sein scheint, da du cli/sei eingebaut hast.
Das Timing ist kritisch. Durch nichts darf es gestört werden.
Ansonsten hast Du Probleme.
Probiere doch erstmal die Originalroutinen zum laufen zu bringen.
Wenn die dann funktionieren, dann siehst du weiter.

Autor: Christian Georgi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Na wenns an den Infos liegt ...
Ich hab mal den Schaltplan und die Sourcen angehängt.

Ich hab den Code mit USB so im Netz gefunden...
Angeblich funktioniert er.

Gruß
Christian

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein RIESEN Upload. Wofür? Wenigstens hättest Du die Fotos
rauslassen können. Und Schaltbilder bitte KLAR lesbar.
So habe ich nicht reingesehen.


Ja und wie man sieht, es ist nicht alles Plug&Play was
man so findet.
Aber ich habe kurz in den Source geschaut und gesehen,
Du kannst dort 1A die 1Wire Sensoren erstmal alleine
prüfen ohne USB. Und wenn das dann funkt, dann hast Du
erst auch mal Grundwissen zu den 1W Routinen gesammelt
und kannst in Ruhe weiter probieren. Ich habe leider nicht
soviel Zeit, dir alles "vorzukauen" ;-)

Autor: Christian Georgi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also mit den Interrupts  in der Routine geht nicht.
Aber das Ergebnis passt.. wenn man das Komma verschiebt.

Ok die Bilder waren vielleicht bisschen groß.
Der Schaltplan ist klar lesbar... ich weiß nicht was du da meinst.

Eigentlich hatte ich nicht vor das Rad 2 mal zu erfinden.

Aber danke trotzdem.
Gruß
Christian

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na das ist ja fein, dass es geht.
Mit welchem Tool hast Du Schaltpläne geöffnet? Ich habe keines
hier, mit dem ich .sch Dateien öffnen kann. PNG wäre angebracht.

Autor: Christian Georgi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Schaltpläne sind mit Eagle(www.cadsoft.de) erstellt.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mag sein, aber Eagle gehört meines Wissens nicht zur 
Grundausstattung auf den PCs. Du kannst nicht davon ausgehen, dass das 
jeder hat. Und nur um mal eben irgendetwas nachzuschauen für jemanden, 
dafür Eagle zu installeren ist etwas viel verlangt. De Arbeit must Du 
Dir schon machen und sie in "normal" lesbarer Form posten! Warum willst 
Du das nicht einsehen?

Autor: Christian Georgi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR-GCC gehört meines wissens auch nicht zur Grundaustattung eines 
PC's...
Ja klar hätte ich dei Schaltpläne auch als Bild anhängen können.
Hätte ich auch gemacht, wenn derjenige, der sich das anschauen hätte 
wollen keine Eagle gehabt hätte.Viele, die hier mit avr-gcc arbeiten 
haben sicherlich auch ein Leiterplattenprogramm.
Ich will hier auch keinen Streit vom Zaun brechen.
Wie man so schön sagt der Ton macht die Musik.
Ich bin immer für jede Hilfe dankbar und ich will bestimmt nicht,dass 
jemand die ganze Arbeit für mich macht.
Es gibt einfach Punkte an denn ich selbst nicht weiterkomme.
Und ich bin froh, wenn ich hier einen Tip bekomme.

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.