Forum: Mikrocontroller und Digitale Elektronik DS2760 Teilausfall ?


von Sebastian Arnd (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
Kann es sein dass nur ein teil eines ICs ausfällt ? Mir geht es um
einen ds2760 der bis auf den adc normal zu funktionieren scheint d.h
ich kann die Serinen Nummer und das Protection Register auslesen aber
bei bei den ganzen Registern wie Temperatur und Spannung bekomme ich
immer nur 00 raus. Die Software ist zum Großteil die von Peter
Dannegger. Von mir wurde nur die Datei main.c verändert:
#include "main.h"
1
int main( void )
2
{
3
  uchar id[8], diff,s[8];
4
  uint y=0 ,x=0 ;
5
  uchar *d="D",*c="C";
6
  sei();
7
  init_timer();
8
  lcd_init(LCD_DISP_ON);
9
  lcd_puts_nl( "1-Wire-Reader:" );
10
  second =0;
11
12
diff = w1_rom_search( diff, id );    // sucht nach einem ic auf dem 1wire
13
bus 
14
       sprintf( s, "%02X ", id[0] );    // scheibt einen teil der id in
15
hex um
16
  lcd_puts( s );        // gibt s aus 
17
  for(;;){          // main loop
18
  if(second == 1) {
19
  
20
  w1_reset();        // resettet den bus
21
  w1_byte_wr(0xCC);      // Schreibt das Skip Rom kommando
22
  w1_byte_wr(0x69);      // Schreibt das lese kommando
23
  w1_byte_wr(0x18);      // Scheibt das zu lesende register
24
  x=w1_byte_rd();        // Liest msb
25
  y=w1_byte_rd();        // Liest lsb
26
  lcd_putc( 0x7B );
27
  sprintf(d,"%02X",x);
28
  lcd_puts( d );
29
  lcd_puts( ":" );
30
  sprintf(c,"%02X",y);
31
  lcd_puts( c );
32
  lcd_putc( 0x7D );
33
   }
34
        second = 0;
35
    }
36
}

aber ich glaube kaum noch an einen Software fehler ist.Im Anhang
nochmal ist die ganze Software. Was ich mir vorstellen könnte ist dass
ich den adc zerstört habe indem ich den VIN Pin einmal ohne
Vorwiderstand angeschlossen habe.

Gruß Sebastian

von Seppal (Gast)


Lesenswert?

Hi,

zeigen deine Pointer c und d in Zeile 5 nicht auf eine blödsinnige
Adresse?
Probier doch mal

uchar c;
....
sprintf(&c, "%02x", y);
lcd_puts(&c);

von Simon K. (simon) Benutzerseite


Lesenswert?

Hm? Wasn quatsch.
Das erste stimmt ja noch. Du tust an die Adresse von uchar c einen
wert. Aber diesen kannst du doch nicht mit puts ausgeben... da gibt der
ja soweit einen String aus, bis zufällig ne 0 im Speicher steht...

von Seppal (Gast)


Lesenswert?

sorry, lcd_putc(c) statt lcd_puts(&c)

von Fritz G. (fritzg)


Lesenswert?

uchar c;
....
sprintf(&c, "%02x", y);

Bist du sicher das in einen char 3 Byte reinpassen? Böser Fehler! :-)

von Seppal (Gast)


Lesenswert?

Wär doch einen Versuch Wert ;)

Bevor ich mich in die Ecke stelle ein letzter Versuch:
Zeile 5: uchar c[3], d[4];

von Sebastian Arnd (Gast)


Lesenswert?

Hallo,
Danke für eure Bemühungen.Aber die Software funktioniert ja soweit dass
ich werte empfangen und Scheiben kann, was nicht funktioniert ist das
auslesen der Register die die Werte des ADC´s beinhalten sollten.
Was ich vergessen hatte mein MCU ist ein atmega8 mit 8MHz Quarz.

Gruß Sebastian

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
Noch kein Account? Hier anmelden.