-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: 1Wire DS1820 Problem mit Scratchpad

  1. #1
    goethe
    Gast

    1Wire DS1820 Problem mit Scratchpad

    Anzeige

    Hi,

    Ich hab ein Problem mit dem Scratchpad, es zeigt nur NULLER

    -verwende nur 1nen 1Wire Sensor,
    (keinen Touch)
    -und hab jeweils einen seperaten Tx und Rx Pin

    Kann mal jemand der sich aus kennt einen Blick (oder Zwei )
    auf s Programm werfen?

    Code:
    #include <16f870.h>
    
    #use delay(clock=4000000)
    #fuses XT,NOWDT,NOLVP
    
    //DS1820 Commandos
    #define SKIP_ROM           0xCC /* 204*/
    
    #define CONVERT_T          0x44 /*68*/
    #define READ_SCRATCHPAD    0xBE /*190*/
    
    #define Rx_DS18S20 PIN_C4 // Rx TempSensor
    #define Tx_DS18S20 PIN_C5 // Tx TempSensor
    
    char D_Presence;
    char D_ShortCircuit;
    
    enum BITSTELLE { Bit0=1,BIT1=2,BIT2=4,BIT3=8,BIT4=16,BIT5=32,BIT6=64,BIT7=128 };
    
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
    
    int temp_1,temp_2;
    long int null,eins;
    int scratchpad[8];
    
    
    void D_Reset(void)
    {
       set_tris_c(0x99);
       output_low(Tx_DS18S20); // Pin des DS18S20 auf low setzen
       delay_us(480);
       output_high(Tx_DS18S20); // Pin des DS18S20 auf high setzen
       delay_us(40);
       D_Presence = input(Rx_DS18S20);
       delay_us(350);
       D_ShortCircuit = input(Rx_DS18S20);
       delay_us(60);
    }
    
    void temp_init()
    {
       output_low(Tx_DS18S20);    // Pin des DS18S20 auf low setzen
       delay_us(480);             // 480us warten
       while (input(Rx_DS18S20)); // pruefen ob der 1-wire bus auf low gezogen wird,
       delay_ms(5);
    }
    
    void temp_send(unsigned char code)
    {  int n=0;
    
       for(; n < 8; n++)
       {  if(bit_test(code,n))
          {
             output_low(Tx_DS18S20); //sende 0
             delay_us(2); //int write slot
             output_high(Tx_DS18S20); //send 1
          }
          else
          {
             output_low(Tx_DS18S20); //sende 0
          }
          delay_us(65); //duration für 1 und fertig
          output_high(Tx_DS18S20);
          delay_us(2);
       }
       delay_us(100); //1 Millisekunde
    }
    
    unsigned char temp_read(void)
    {  unsigned char in=0,j=0;
    
       delay_us(400);
       for(; j < 8; j++)
       {
          delay_us(1);
          output_low(Tx_DS18S20); // init read
          delay_us(3);
          if (input(Rx_DS18S20)) bit_set(in,j);
          delay_us(60);
       }
       return(in);
    }
    
    
    void main()
    {  int i;
    
       printf("Hallo\r\n");
    
       D_Reset();
       printf("Presence:%d  ShortCircuit:%d\r\n",D_Presence,D_ShortCircuit);
    
       while(1)
      {   temp_init();
          temp_send(SKIP_ROM);
          temp_send(CONVERT_T);
          delay_ms(500);              //warten bis Temp Convert abgeschlossen ist...
    
          temp_send(SKIP_ROM);
          temp_send(READ_SCRATCHPAD);
          
          for (i=0; i<8;i++)
          {  scratchpad[i] = temp_read(); 
             printf("i:%d/v:%d %d %d",i,scratchpad[i],D_Presence,D_ShortCircuit);
          }
    
          printf("Temperatur: %d, %02u C\r\n",temp_2,temp_1);
          delay_ms(500);
       }
    }
    VIELEN DANK!!!!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    36
    Beiträge
    102
    in asm hätt ich dir helfen können kann aber leider kein c

  3. #3
    goethe
    Gast
    echt???

    wow
    du bist der erste den ich kenn der zuerst asm gelernt hat
    normalerweiße lernen alle zuerst C
    --aber was ist schon normal

    ja ein asm fürn DS18S20 wäre nicht schlecht
    musst mir nur sagen auf welchen PIN du den DQ hängst
    und !!!ich verwende kein LCD Display
    sondern n RS232

    vielen vielen dank

  4. #4
    Gast
    Ich hab wie gesagt keine ahnung von c und wie man ASM routienen implementiert.Variablen konstanten welchen chip welcher pin TTL ST.ist bei mir alles ziehmlich wichtig wenns laufen soll!!

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    36
    Beiträge
    102
    Hat mich vergessen einzuloggen sorry.
    Kennst du dich mit ASM aus??
    ES ist sehr hardwärenahe darum gelern.Hatte nie vor C zu lernen.
    Angefangen hat das mit basic aud dem amiga.Pascal könnt ich auch noch paar brocken aus der schule.

  6. #6
    goethe
    Gast
    ...ähm..

    PIC 16F870
    4 Mhz Quarz
    #fuses XT,NOWDT

    ..läuft alles auf n PIN C5
    bzw. wenn du s mit Tx Rx machst dann C6 C5

    läuft dein Prog auch 100%ig?
    brauchst noch was?

    danke

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    36
    Beiträge
    102
    Wird schwierig da ich die hardwäre nicht hab mein den 1wire sender!
    Kann dir ja mal was schreiben und du kannst es probieren.IIC hab ich auch hinbekommen keine sorge.Mus die routiene irgendwie anders aufgebaut sein?Meine prog lauft sozusagen standalone dan auf dem pic.
    Kanns so machen das die daten über RS232 gesendet werden.

  8. #8
    goethe
    Gast
    Das Prog sollte bei mir auch Standalone laufen..

    RS232 passt,

    brauch den Code so schnell wie möglich, ganz wichtig für mich

    danke!!

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    36
    Beiträge
    102
    Häng mich mal dran aber hab das wochenende viel um die ohren.
    Jetzt wird landsam ein schwein draus.
    Dachte erst du brauchst eine Routine die du in c implementieren kannst.
    So fragst du das prog bloß mit einen c programm ab.Datenblatter hab ich schon besorgt. Ich arbeite mit dem 16f873A

  10. #10
    goethe
    Gast
    ...uj das wird knapp..

    Ich müßte das Projekt am Dienstag presentiern..
    ..Dienstang in der Früh..

    und das 1wire.. is halt das einzige das noch nicht funkt...

    ..schaffst du s bis Sonntag/Montag?
    -das wäre echt toll

Seite 1 von 3 123 LetzteLetzte

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •