- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: [gelöst] DS1820 will nicht mit mega8

  1. #1

    [gelöst] DS1820 will nicht mit mega8

    Anzeige

    LiFePo4 Akku selber bauen - Video
    hallo,

    habe schon im forum einiges zum ds1820 gefunden und versucht, finde aber keine lösung.
    ich habe einen ds1820 den ich auslesen will. die temperatur soll dann auf einer 7-segmentanzeige ausgegeben werden. habe das ganze schonmal auf einem at8515 zum laufen gehabt, da es aber nen mega8 werden soll eben umgebaut. und dort funktioniert aus irgend einem grund das auslesen nicht mehr. ich hab den quelltext jetzt wieder komplett eingekürzt das nur das auslesen des ds1820 und einfach die ausgabe der bytes auf meine 7-segmentanzeige durchgeführt wird. das sieht jetzt so aus:

    Code:
    ' Deklaration
    $regfile = "m8def.dat"                                      ' für Mega8515
    $crystal = 8000000                                          ' für 8MHz Quarz
    
    ' Temperatursensor (DS1820) - Port festlegen
    Config 1wire = Portc.5
    
    ' SPI Bus (Hardware) als Master konfigurieren
    Config Spi = Hard , Master = Yes , Polarity = Low , Phase = 1 , Data Order = Lsb
    Config Portc.2 = Output                                     ' !!! für D718D
    Config Portc.3 = Output                                     ' !!! für D718D
    Portc.2 = 1                                                 ' !!! für D718D
    Spiinit                                                     ' SPI Bus initialisieren
    
    
    ' Bytes für die SPI-Daten
    Dim Serpa(4) As Byte
    
    ' Bytes für Wert vom DS1820 Temperatur
    Dim Ar(9) As Byte
    
    
     1wreset
     1wwrite &HCC
     1wwrite &H44
     Waitms 500
     1wreset
     1wwrite &HCC
     1wwrite &HBE
     Waitms 500
     Ar(1) = 1wread(9)
    
    
      ' Ausgabe der 7-Segmentanzeige
      Portc.3 = 1                                               ' !!! für D718D
      Serpa(1) = Ar(3)                                          ' Bits zuweisen
      Serpa(2) = Ar(2)
      Serpa(3) = Ar(1)
      Serpa(4) = &B11111110
      Spiout Serpa(1) , 4                                       'rausschicken
      Portc.3 = 0                                               ' !!! für D718D
    
    
    End
    es kommt aber nichts an, besser gesagt, alle bytes haben f.
    wechsel ich aber den port des ds1820 z.b. auf portb.0 kommen nur 0en an.
    wenn ich den code aber so umändere das ich aus dem "m8def.dat" nen "m8515.dat" mache, den mikrocontroller tausche, noch mosi und sck für meine schieberegister umstecke funktioniert das wunderbar. die 7-segmentanzeige zeigt was an (natürlich noch unformatiert) und die werte ändern sich wenn ich den ds1820 erwärme und das programm neu starte.

    ich hoffe es hat einer eine idee denn ich bin ratlos.

    vielen dank vorab.

    gruss Christian

    PS: falls es eine rolle spielt, ich verwende nen stk500 und die softwareversion von Bascom ist 1.11.8.1

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    30.03.2005
    Beiträge
    21
    Hallo goof 1980

    Anbei sende ich mal mein Programm das ich für meine Wetterstation entwickelt habe. Es ist für 2 DS 1820 geschrieben. Musst du halt anpassen genau wie die Pinbelegung.

    Gruss, tv freak
    Angehängte Dateien Angehängte Dateien

  3. #3
    da hab ich mal wieder gemerkt das ich mich doch mal bissel mit grundlagen beschäftigen sollte.
    die lösung war ganz einfach: falsches fusebit.
    beim at8515 hat das gepasst, der mega8 läuft aber standardmäßig mit 1MHz und das hat die Kommunikation bei einem im Quelltext festgelegten 8MHz Takt außer Kraft gesetzt. Fusebit geändert und schon rennt das Ding.

    Vielen Dank für die Unterstützung.

    Gruss Christian

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress