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 );
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; }
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.
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
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" ;-)
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
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.
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?
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.