Willkommen in unserer Community

Werde Teil unserer Community und registriere dich jetzt kostenlos ...

Registrieren
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

RTC DS1307 Problem

Dieses Thema im Forum "Software" wurde erstellt von Phantomias2006, 11. Januar 2011.

  1. Phantomias2006

    Phantomias2006 Neues Mitglied

    Registriert seit:
    10. Januar 2010
    Beiträge:
    56
    Zustimmungen:
    0
    Hallo liebes Forum

    Wie im anderen Thread schon angekündigt hab ich Aktuell ein kleines Problem mit meinen DS1307


    Derzeit Kämpfe ich leider mit meinen DS1307 und mit dem DCF77
    Beides nach Markus seinen Schaltplan angeschlossen.
    DS1307 läuft aber öfters Springt die Uhr und das Datum sporradisch mit wirren
    Zahlen.
    DCF77 hab ich in der Software nicht implementiert!Nur die DS1307 Routine.

    Also dachte ich mir ich stecke mal meinen DCF77 wieder ab da ich ihn für mein Aktuelles Projekt eh nicht brauche.

    Und jetzt kommts!Wenn ich den DCF77 abstecke Zeigt mein Display nur mehr @5.@5.@5
    @5:mad:5:mad:5
    an. Die Uhr Intern im DS1307 läuft aber weiter! Bleibt nicht stehen
    Wennich den DCF77 wieder anstecke dann läuft die Ihr entweder weiter oder Zeigt wieder wirre Zeichen an

    Aber wie gesagt sobald der Ausgesteckt ist hab ich immer @5

    Batterie hab ich eingelegt (Hat 3,2V) und der DS1307 wird mit 5Volt vom 7805
    Versorgt

    eventuell weiß einer von euch an was das liegen könnte zumal vom DCF77 kein bisschen Code vorhanden ist.

    mfg und Vielen Dank
     
  2. Cassio

    Cassio Moderator
    Mitarbeiter

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    3.929
    Zustimmungen:
    0
    Sprachen:
    BascomAVR
    Hallo !

    Spontan hätte ich gesagt.... es handelt sich um einen "Massefehler" (GND-Verbindung irgendwo wackelig). ;)


    Ich bekomme da jetzt sonst keinen Reim drauf und mir fehlen auch gerade mal wieder die Eigenschaften vom anderen Thread.... :rolleyes:

    Kannst du deshalb deinen derzeitigen vollständigen Code hier mal einstellen?

    Benutze dazu bitte die Code-Funktion, um dein Programmcode auch hier direkt im Beitrag lesen zu können!

    Hast du ggf. auch mal einen Schaltplan gezeichnet, den du hier mit einstellen kannst (gif-Bild) ?


    Danke und Gruß,
    Cassio
     
  3. Phantomias2006

    Phantomias2006 Neues Mitglied

    Registriert seit:
    10. Januar 2010
    Beiträge:
    56
    Zustimmungen:
    0
    Hi Cassio

    Vielen Dank für deine Antwort

    Hier mal der Code

    [Highlight=Bascom]
    '--------------------------------------------------------------------------'
    ' '
    ' 2010, Phantomias '
    ' Freeware '
    '--------------------------------------------------------------------------'
    '
    '--------------------------------------------------------------------------'

    $regfile = "m16def.dat" 'definieren des verwendeten Chips

    $crystal = 8000000 'definieren des verwendeten externen Quarz (8MHz)


    '-------------------------------------------------------------------------------
    '###############################################################################
    'Display Konfigurieren ########################################################
    '###############################################################################
    '-------------------------------------------------------------------------------

    ' Configuriere das LCD
    'some routines to control the display are in the glcdKS108.lib file
    $lib "glcdKS108.lbx"



    'First we define that we use a graphic LCD
    Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portd , Cd = 0 , Rd = 1 , Ce = 2 , Ce2 = 3 , Enable = 4 , Reset = 5
    'CE =CS1 Chip select
    'CE2=CS2 Chip select second chip
    'CD=Data/instruction
    'RD=Read
    'RESET = reset
    'ENABLE= Chip Enable
    Setfont Font8x8 'Schrift einbinden


    '###############################################################################
    '-------------------------------------------------------------------------------



    '-------------------------------------------------------------------------------
    '###############################################################################
    '1wire Port definieren ########################################################
    '###############################################################################
    '-------------------------------------------------------------------------------

    Config 1wire = Porta.3 'Tempfühler DS18S20

    '###############################################################################
    '-------------------------------------------------------------------------------


    '-------------------------------------------------------------------------------
    '###############################################################################
    'Variablen definieren ########################################################
    '###############################################################################
    '-------------------------------------------------------------------------------



    Dim Ist_temp As Single ' Ist-Temperatur
    Dim Temp As Word '
    Dim Temp1 As Integer '
    Dim Scratch(9) As Byte '
    Dim I1w As Byte '


    Dim Min1 As Single
    Dim Max1 As Single
    Min1 = 9999


    Dim Akt As String * 10
    Dim Minn As String * 10
    Dim Maxx As String * 10


    Dim Tempon As Single
    Dim Tempoff As Single

    Dim Line1 As String * 20
    Dim Line2 As String * 20







    '###############################################################################
    '-------------------------------------------------------------------------------



    '-------------------------------------------------------------------------------
    '###############################################################################
    'DS1307 Konfigurieren: ###################################################
    '###############################################################################
    '-------------------------------------------------------------------------------


    Config Sda = Porta.1 ' I2C Bus konfigurieren
    Config Scl = Porta.0
    Const Ds1307w = &HD0 ' Addresse der Ds1307 Uhr
    Const Ds1307r = &HD1

    Config Clock = User ' Interne Time/Date Routinen für Bascom konfigurieren



    'Config Dcf77 = Pina.2 , Timer = 1 , Timer1sec = 1 , Debug = 1 , Update = 0 , Check = 1 , Inverted = 1 , Gosub = Sectic
    'Dim Puls As Bit , Sync As Bit , Sec_z As Byte
    'Enable Interrupts

    Config Date = Dmy , Separator = .


    'Time$ = "21:36:00"
    'Date$ = "11.01.11" ' Stellen der Uhr, muss nur einmal ausgeführt werden


    '###############################################################################
    '-------------------------------------------------------------------------------



    '-------------------------------------------------------------------------------
    '###############################################################################
    'Timer1: ###################################################
    '###############################################################################
    '-------------------------------------------------------------------------------


    Config Timer1 = Timer, Prescale = 256

    On Timer1 Timer_irq


    Const Timervorgabe = 34286

    Enable Timer1

    Enable Interrupts


    '###############################################################################
    '-------------------------------------------------------------------------------



    '-------------------------------------------------------------------------------
    '###############################################################################
    'Startbildschirm anzeigen: ###################################################
    '###############################################################################
    '-------------------------------------------------------------------------------


    Gosub Lcd_cls2 'Anzeige löschen
    Gosub Lcd_line

    Lcdat 2 , 12 , ""
    Lcdat 3 , 9 , ""
    Lcdat 4 , 9 , ""
    Lcdat 5 , 3 , ""

    '-----------------Temperaturmessung starten für richtigen Wert nach dem Start---
    'Gosub Get_1wire_1
    'Do
    ' Temp = 1wread() ' Ende der Temperaturmessung abwarten
    'Loop Until Temp = &HFF

    Wait 2

    Gosub Lcd_cls2 'Anzeige löschen
    Gosub Lcd_line
    Gosub Lcd_line1



    '###############################################################################
    '-------------------------------------------------------------------------------




    '-------------------------------------------------------------------------------
    '###############################################################################
    'Hauptschleife ###############################################################
    '###############################################################################
    '-------------------------------------------------------------------------------



    Do
    Lcdat 7 , 5 , Date$
    Lcdat 8 , 5 , Time$


    Gosub Get_1wire_1
    Gosub Get_1wire_2
    Gosub Anzeige

    Gosub Temp_on_off

    Gosub Schaltuhr1




    Loop

    End
    '###############################################################################
    '-------------------------------------------------------------------------------


    '-------------------------------------------------------------------------------
    '###############################################################################
    'Sub Funktionen: ##############################################################
    '###############################################################################
    '-------------------------------------------------------------------------------



    '---------------------------------------------------------------------
    'Timer1 ###########################################
    '---------------------------------------------------------------------

    Timer_irq:

    Timer1 = Timervorgabe



    Return

    '---------------------------------------------------------------------
    'Schaltuhr ###########################################
    '---------------------------------------------------------------------

    Schaltuhr1:

    If Time$ > "07:00:00" And Time$ < "09:00:00" Then
    Lcdat 8 , 80 , "Ein 1"

    Else
    Lcdat 8 , 80 , "Aus 1"

    End If

    Return

    '---------------------------------------------------------------------
    'TempAnzeige für Display ###########################################
    '---------------------------------------------------------------------
    Anzeige:

    If Scratch(9) = Crc8(scratch(1) , 8) Then



    If Ist_temp > Max1 Then
    Max1 = Ist_temp
    Maxx = Fusing(max1 , " ##.#")
    Lcdat 4 , 90 , Maxx
    Elseif Ist_temp < Min1 Then
    Min1 = Ist_temp
    Minn = Fusing(min1 , " ##.#")
    Lcdat 3 , 90 , Minn
    Else
    End If


    Akt = Fusing(ist_temp , "##.#")


    Lcdat 3 , 9 , Akt
    Else
    End If

    Return
    '#####################################################################
    '---------------------------------------------------------------------


    '---------------------------------------------------------------------
    'Rahmen für Display #################################################
    '---------------------------------------------------------------------
    Lcd_line1:

    Line1 = " Temp: Min-Max"
    Lcdat 1 , 1 , Line1 , 1

    Line1 = "Uhrzeit: "
    Lcdat 5 , 1 , Line1 , 1

    Line1 = " " + Chr(248) + "C"
    Lcdat 3 , 9 , Line1

    Return


    Lcd_line:

    'Line oben links rechts
    Line(0 , 0) -(128 , 0) , 255

    'Line links oben unten
    Line(0 , 0) -(0 , 63) , 255

    'Line rechts oben unten
    Line(127 , 0) -(127 , 63) , 255

    Return

    '#####################################################################
    '---------------------------------------------------------------------



    '---------------------------------------------------------------------
    'Get_1wire ################################################
    '---------------------------------------------------------------------


    Get_1wire_1:

    1wreset
    1wwrite &HCC
    1wwrite &H44

    Do
    Temp = 1wread() ' Ende der Temperaturmessung abwarten
    Loop Until Temp = &HFF

    Return

    Get_1wire_2:

    1wreset
    1wwrite &HCC
    1wwrite &HBE

    For I1w = 1 To 9
    Scratch(i1w) = 1wread()
    Next

    'Temp = Scratch(2)
    'Shift Temp , Left , 8

    'Temp = Temp + Scratch(1)
    'Temp1 = Temp

    Temp1 = Makeint(scratch(1) , Scratch(2))
    Temp1 = Temp1 / 2
    Ist_temp = Scratch(8) - Scratch(7)
    Ist_temp = Ist_temp / Scratch(8)
    Ist_temp = Ist_temp + Temp1
    Ist_temp = Ist_temp - 0.25

    Return


    '---------------------------------------------------------------------
    'Temp Steuerung: ############################################
    '---------------------------------------------------------------------
    Temp_on_off:


    Tempon = Tempoff - 0.5
    Tempoff = 28

    If Ist_temp > Tempoff Then

    Lcdat 7 , 90 , "Aus"

    Elseif Ist_temp < Tempon Then

    Lcdat 7 , 90 , "Ein"
    Else
    End If

    Return


    '#####################################################################
    '---------------------------------------------------------------------


    '---------------------------------------------------------------------
    'Uhr mit DS1307 ####################################################
    '---------------------------------------------------------------------


    Dim Weekday As Byte
    Getdatetime:
    I2cstart ' Start
    I2cwbyte Ds1307w ' DS1307 schreiben
    I2cwbyte 0 ' DS1307 Adresszeiger auf 0 stellen

    I2cstart ' Start
    I2cwbyte Ds1307r ' DS1307 lesen (ab vorher eingestellter Adresse 0)
    I2crbyte _sec , Ack ' Sekunden
    I2crbyte _min , Ack ' Minuten
    I2crbyte _hour , Ack ' Stunden
    I2crbyte Weekday , Ack ' Wochentag (in Dummy gelesen da von date$/time$ nicht genutzt)
    I2crbyte _day , Ack ' Tag
    I2crbyte _month , Ack ' Monat
    I2crbyte _year , Nack ' Jahr
    I2cstop
    _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
    _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
    Return

    Setdate:
    _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
    I2cstart ' Start
    I2cwbyte Ds1307w ' DS1307 schreiben
    I2cwbyte 4 ' DS1307 Adresszeiger auf 4 (Byte 5) stellen
    I2cwbyte _day ' Tag schreiben
    I2cwbyte _month ' Monat schreiben
    I2cwbyte _year ' Jahr schreiben
    I2cstop
    Return

    Settime:
    _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
    I2cstart ' Start
    I2cwbyte Ds1307w ' DS1307 schreiben
    I2cwbyte 0 ' DS1307 Adresszeiger auf 0 stellen
    I2cwbyte _sec ' Sekunden schreiben
    I2cwbyte _min ' Minuten schreiben
    I2cwbyte _hour ' Stunden schreiben
    I2cstop
    Return

    '#####################################################################
    '---------------------------------------------------------------------



    '---------------------------------------------------------------------
    'Display löschen ####################################################
    '---------------------------------------------------------------------
    Lcd_cls2:
    Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2 ' both displays off
    Cls
    Waitms 10
    Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2 'both on
    Return
    '#####################################################################
    '---------------------------------------------------------------------

    $include "font8x8.font"
    [/Highlight]
     
  4. Phantomias2006

    Phantomias2006 Neues Mitglied

    Registriert seit:
    10. Januar 2010
    Beiträge:
    56
    Zustimmungen:
    0
    Teil2 (Zeichen überschritten)



    Naja Ich habe auf meiner Platine fürs Display einen 7805 draufgepackt
    Von da hab ich auch die 5Volt für den DS1307 und DCF77

    Komischerweise wird der 7805 sehr heiß?! Desweiteren habe ichs vorher mal
    Probiert wenn ich den 7805 vom Pollinboard angreife dann zeigt er auch
    @5 an wenn ich auslasse dann wieder normal?!

    Brauch ich einen Kondensator für den 7805?
    Mein Netzteil bringt 12V

    Der Programmcode funktioniert so wie ich ihn gepostet habe! War aber gerade dabei den Timer in betrieb zu nehmen
    Falls du dich wunderst.

    mfg und vielen Dank
     
  5. JOJO150272

    JOJO150272 Neues Mitglied

    Registriert seit:
    23. März 2008
    Beiträge:
    29
    Zustimmungen:
    0
    Hallo,

    das mit dem heis werden des 7805 klingt wie ein Masse Fehler oder eine Verpolung des DS1307.

    Für die komische Anzeige würde ich folgendes tippen, hatte ähnliche Probs mit der RTC DS1307 und der RTC DS1338.

    DS1307 TIMEKEEPER REGISTERS Figure 3 im Datenblatt:

    ADDRESS = 00H, BIT7 = CH, BIT6 + BIT5 + BIT4 = 10 seconds, BIT3 + BIT2 + BIT1 + BIT0 = seconds, FUNCTION = seconds, RANGE = 00-59


    Habe es bei mir so behoben:
    [Highlight=Bascom]
    ' Funktion zum Auslesen des Datum und der Uhrzeit aus der RTC DS1338

    Function Rtc_ds1338_get_datetime() As Integer

    I2cstart ' Start des auslesens
    I2cwbyte I2c_w_ds1338 ' Variable DS1338 schreiben
    I2cwbyte 0 ' Adresszeiger auf 0 stellen
    I2cstart ' Start
    I2cwbyte I2c_r_ds1338 ' Variable DS1338 lesen (ab vorher eingestellter Adresse 0)
    I2crbyte B_sec , Ack ' Sekunden
    I2crbyte B_min , Ack ' Minuten
    I2crbyte B_hour , Ack ' Stunden
    I2crbyte B_weekday , Ack ' Wochentag
    I2crbyte B_day , Ack ' Tag
    I2crbyte B_month , Ack ' Monat
    I2crbyte B_year , Nack ' Jahr
    I2cstop ' Stop des auslesens

    B_sec = B_sec And &B01111111 ' Korrektur der falschen Anzeige wegen des Bit7 (CH) in der Addresse 00xh

    _sec = Makedec(b_sec) ' Umwandlung der Messwerte nach Dezimal
    _min = Makedec(b_min) ' Umwandlung der Messwerte nach Dezimal
    _hour = Makedec(b_hour) ' Umwandlung der Messwerte nach Dezimal
    _weekday = Makedec(b_weekday) ' Umwandlung der Messwerte nach Dezimal
    _day = Makedec(b_day) ' Umwandlung der Messwerte nach Dezimal
    _month = Makedec(b_month) ' Umwandlung der Messwerte nach Dezimal
    _year = Makedec(b_year) ' Umwandlung der Messwerte nach Dezimal

    End Function
    ' --------------------------------------------------------------------------------------------------------------------------------------------------------------

    [/Highlight]


    Gruß Jörg
     
  6. Cassio

    Cassio Moderator
    Mitarbeiter

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    3.929
    Zustimmungen:
    0
    Sprachen:
    BascomAVR
    Hallo !

    Deinen Code habe ich noch nicht durchgesehen.... :rolleyes:
    Mache ich aber noch.

    Momentan rätel ich etwas über deinen 7805.
    Wenn er sehr heiß wird, dann verbrennt er eine Menge Leistung.
    Kannst du die Eingangsspannung von 12V auf 9V oder gar 7,5V reduzieren?
    Das würde dem 7805 schon sehr helfen. ;)
    Sollte er immer noch recht heiß werden, stimmt etwas nicht!
    Kannst du am Output des 7805 die gesamte Stromaufnahme deines Testaufbaus mal messen?


    Der "Massefehler" muss ja auch nicht am 7805 liegen.
    Überall wo GND benötigt wird und ein Draht hinführt, kann es auch eine schlechte Verbindung geben.

    Was die Kondensatoren betrifft....
    Darum wäre ein aktueller Schaltplan vom Aufbau auch sehr hilfreich gewesen.

    Aber zum schnellen Kontrollieren für dich....
    100nF Kondensatoren sollten z.B. direkt am 7805 (Output) sitzen und natürlich direkt am AVR.
    Beim AVR bitte ALLE Spannugsversorgungspins (Vcc und GND) mit einem Kondensator versehen..... und möglichst nah am AVR selbst!
    Bei deinem Mega16 also zwei Stück (Vcc + GND, AVcc + GND).

    Am 7805 sollte natürlich ein 470µF bis 1000µF Elko nicht fehlen.... aber den wirst du wohl schon eingebaut haben.

    So, mehr fällt mir momentan dazu nicht ein.
    Wenn ich es schaffe, schaue ich mir deinen Code gleich noch mal an.
    Ach so.... damit man ihn besser lesen kann, änder ich den Programmcode mal auf Highlight=Bascom. ;)

    Gruß,
    Cassio
     
  7. Cassio

    Cassio Moderator
    Mitarbeiter

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    3.929
    Zustimmungen:
    0
    Sprachen:
    BascomAVR
    Hallo !

    Also ich habe mal zwei Fragen, die sich mir beim Durchsehen so gestellt haben...

    Warum verwendest du für I2C nicht die Pin`s:
    PC0 = SCL
    PC1 = SDA

    :confused:

    Kannst du das nicht umändern?
    Der Dataport für das LCD kann doch auch auf Port.D liegen und für den Controlport nimmst du PORT.A !



    Dann mal zu den Variablen für Zeit und Datum...
    Wenn du vom DS1307 die Werte holst, dann konvertierst du die Werte gleich von BCD in Dezimal..... das ist ja auch OK.

    Wenn du allerdings deine DS1307 stellen möchtest, dann konvertierst du die Dezimalwerte wieder in BCD..... damit sie für die DS1307 mundgerecht sind.
    Allerdings hast du deine Variablen nun alle im BCD-Format für die Softclock vorliegen...
    Theoretisch müsstest du die doch erst noch wieder zurück konvertieren. :hmmmm:

    Nimm für die BCD-Werte doch andere Variablen..... oder nur eine "Allzweckvariable" und ändere deine Routine zum stellen der Uhr.
    So ersparst du dir das "Zurückkonvertieren" von _sec, _min, _hour und so weiter.


    Warum dein Display jedoch @5 anzeigt, will sich mir momentan nicht erschließen.....
    Da du I2C nur emulierst und nicht die Harwareports verwendest (PC.0 & PC.1), sollte dir das auch eigentlich keinen Unsinn auf den Dataport vom Displays verursachen. :hmmmm:

    Mal nebenbei....
    Im ASCII-Code ist das "@" Zeichen = 64d bzw. 40h
    und die "5" = 53d bzw. 35h
    Hilft das ggf. weiter? :hmmmm:
    Ich glaub nicht. ;)

    Gruß,
    Cassio
     
  8. Phantomias2006

    Phantomias2006 Neues Mitglied

    Registriert seit:
    10. Januar 2010
    Beiträge:
    56
    Zustimmungen:
    0
    Hallo

    Vielen Dank für die Antworten



    Leider habe ich keinen Schaltplan von der Aktuellen schaltung...
    Hab ein Pollin board und den schaltplan von Markus genommen für Ds1307
    und auch den Schaltplan von Markus für DCF77

    Dann hab ich das auf eine Lochrasterplatine gelötet



    Bezüglich der Spannung:Wollte sie schon verringern hatte aber nur ein 5V netzteil leider funktioniert damit das Pollin-Board nicht...


    "Am 7805 sollte natürlich ein 470µF bis 1000µF Elko nicht fehlen.... aber den wirst du wohl schon eingebaut haben."

    Nein hab ich nicht?! Wie soll ich den einbauen?
    Eventuell hier der Fehler?


    Bezüglich der Pinvergabe:

    Ich weiß ich hätte andere Pins verwenden sollen/können
    Nur wollte ich meinen Testaufbau nicht wieder alles ablöten und neu verlöten.

    Wobei ich das jetzt bald mal machen muss bei den ganzen durcheinander.

    Was würde sich ändern wenn ich diese Pins nehme?Performance oder was anderes?

    mfg
     
  9. Cassio

    Cassio Moderator
    Mitarbeiter

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    3.929
    Zustimmungen:
    0
    Sprachen:
    BascomAVR
    Hallo !

    Ich denke mal, dass einer der Hauptprobleme dies sein wird:


    und hier:

    Du kopierst viel zu viel!
    Dann lötest du auch gleich alles zusammen, anstatt erst mal auf einem Steckbrett alles auszuprobieren.
    Diese Steckbretter (oder neudeutsch auch "Breadboards" genannt) sind nicht nur etwas für "KOSMOS-Baukasten-Anfänger". ;)


    Ich finde es ja persönlich nicht schlimm, wenn jemand anfängt und erst mal Schaltungen nachbaut und Programme kopiert....
    Wie du aber nun selber merkst, ist es meistens damit nicht getan. ;)


    Für weitere geistige Ergüsse ist es mir nun zu Spät.
    Ich muss erst mal dringend.... :boring: :sleep:

    Gruß,
    Cassio
     
  10. Cassio

    Cassio Moderator
    Mitarbeiter

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    3.929
    Zustimmungen:
    0
    Sprachen:
    BascomAVR
    Hallo !

    Es war wohl gestern schon etwas spät (bzw. heute etwas früh)......

    Da du im Programm die Routine für "Config DCF77" herausgenommen hast, bin ich da nicht mehr drauf eingegangen....

    Das du dich aber entscheiden musst, ob du DCF77 benutzt oder den Timer1 manuell konfigurierst, ist dir aber schon klar?
    Beides zusammen funktioniert nicht!


    Gruß,
    Cassio
     
  11. Markus

    Markus BASCOM-Experte

    Registriert seit:
    11. Januar 2008
    Beiträge:
    1.160
    Zustimmungen:
    0
    Hallo Phantomias2006,

    wenn Du meine SW so übernommen hättest wie ich diese eingestellt habe und wenn Du die Beschaltung auch so vorgenommen hättest wie ich es gamacht habe dann würde es auch funktionieren ....

    Sei mit nicht böse aber
    ... Du kopierst Zeug zusammen von dem Du wahrscheinlich nicht weist wie es funktioniert
    ... Du führst Änderungen durch bei denen Du vermutlich nicht weißt was sie bewirken

    und dann ..... wunderst Du Dich das es nicht funktioniert.

    Warum gehst Du nicht Schritt für Schritt vor und änderst erst das eine und dann das andere und stellst die einzelnen Funktionen sicher.

    Unterschiede zu meiner Implementierung sind ... soweit ich das auf den ersten Blick erkennen kann:

    [1] Verwendung der SW-I2C Funktion von BASCOM mit anderen PIN's. ich betreibe die RTC an dem HW I2C-Bus des Atmega und verwende auch die HW-treiber für I2C von BASCOM durch Verwendung der entsprechenden LIB

    [2] CLOCK user. ich werdende den DCF77 als SoftClock mittels reiner SW-unterstützung uns synce nach definierten Regeln die SW-Uhrzeit mittels Uhrzeit im RTC und DCF77. Ich verwende die RTC-Uhrzeit rein als Uhrzeitbufferung bei SystemstartUp, snce aber dann einmal durch DCF77.
    Das hat mehrere Vorteile, angefangen beim SECTIC für den Sekundentakt usw.

    [3] Du konfigurierst den Timer1 um der eigentlich durch Config DCF77 belegt ist und wunderst Dich über komisches Verhalten.


    Alsooo .... zunächst würde ich Dir dringend vorschlagen, Dir in der BASCOM-Hilfe die Kapitel zum I2C zun zur Softclock bzw. zum DCF77 mal genau durchzulesen. Dazu findest Du auf der MCS-Seite zur jeweils gültigen BASCOM-Version das entsprechende ca. 20MByte große Manual. Das empfehle ich Dir dringend.
    Damit lösen sich nicht Deine Probleme von selbst aber Du entwickelst mehr Verständnis dafür, was Du tust.

    Dann sehen wir weiter ....

    Grüße,
    Markus
     
  12. gomaman

    gomaman Neues Mitglied

    Registriert seit:
    16. Oktober 2010
    Beiträge:
    3
    Zustimmungen:
    0
    Füge mal folgende Zeile hinzu, der DS1307 kann nur 100kHz I²C-Geschwindigkeit.

    Config I2cdelay = 10 'I²C-Busgeschwindigkeit 100.000kHz

    Gruß
    Udo
     
  13. Markus

    Markus BASCOM-Experte

    Registriert seit:
    11. Januar 2008
    Beiträge:
    1.160
    Zustimmungen:
    0
    Gleiches erreicht man mit dem Befehl
    Ansonsten würde ich noch folgendes machen:
    Damit wird erreicht, dass der I2C auf jeden Fall gleich rennt.

    Grüße,
    Markus
     
  14. Phantomias2006

    Phantomias2006 Neues Mitglied

    Registriert seit:
    10. Januar 2010
    Beiträge:
    56
    Zustimmungen:
    0
    Hallo

    Erstmal vielen Dank für eure Antworten bzw. Ansichten

    Dennoch muss ich mal Stellung dazu nehmen denn nicht alles ist so wie
    es für euch scheint (bzw. Denke ich das mal)

    Ja das ist wohl richtig aber ich denke mir halt ich muss das Rad nicht neu erfinden damit es sich dreht...
    Aber da ich de Ds1307 gesockelt habe war es mir egal wegen den paar Widerständen und Kondensatoren das ich die mal schnell auf einen Lochraster
    löte.


    Dessen bin ich mir bewusst.Der Code vom DCF77 ist auskommentiert und
    war nur für Testzwecke bezüglich des DCF77
    Mit dem Timer hab ich erst gestern kurz vorm Posten herumgespielt!Darum ist dieser Code im Programm enthalten bzw. der andere auch noch drin

    Tja Markus was soll ich dazu sagen..
    Ja ich kopiere die eine oder andere Routine aber ich lese auch aufmerksam die enzelnen Threads dazu schau mir den Quellcode jedesmal wieder an.
    Überlege wie es Funktioniert schlag einzelne Befehle nach usw.
    Ja ich geb zu das ich nicht überall weiß wie was jetzt genau Funktioniert usw.
    Wobei ich auch sagen muss das von mal zu mal alles klarer wird. Sprich je öffter ich mir den Quellcode ansehe und nachlese desto verständlicher wird er für mich.

    Ja ich füre Änderungen im Programm durch.
    Ich würde nichmal sagen das ich nicht weiß was sie bewirken aber ich lerne halt durch diese "Spielerein" mehr als wenn ich nur strickt Handbücher auswendig lerne.

    Ich dachte Eigendlich das ich das so gemacht habe?!

    Erst die Tempmessung als die Funktionierte dann ein paar Spielerein mit
    der Temp (Sieht man im Programm Stichwort "Tempschaltung")
    Dann inbetriebnahme des DS1307

    Gut ja ich verwende nicht diesen Port aber ich wusste auch nicht das es dann solche Probleme gibt?Aber mann lernt nie aus :D

    Das ist der grund warum ich deinen Quellcode nicht verwendet habe!
    Ich habe die ganze Zeit gesagt das ich DCF77 nicht nutzen will!!!
    Ja ich hab den DCF77 auf der Platine mitangeschlossen (zu Test"Spiel"zwecken) aber ich brauch bzw. will keinen DCF77 im jetztigen Programm! Auskommentierter Quellcode dient für mich rein als Spielerei!!

    Nein Ich Konfiguriere Timer1 nicht bzw. ich nutze die Config DCF77 nicht wenn ich Timer1 konfiguriere! Mit dem Auskommentierte Quellcode vom
    DCF77 hab ich mich ca. vor 1Woche gespielt seither ist er auskommentiert.
    Und du hast mir Gestern , im anderen Thread, das mit dem Timer geschrieben
    Dann hab ich mich ein wenig damit gespielt wobei ich das auch in meinen Post angemerkt habe

    Timer1 ist nicht durch DCF77 belegt!!!
    Hab kein DCF77 im Programm denn wenn ichs hätte würde ich mich nicht wundern!

    Vielen dank für die Info das werde ich in der nächsten Zeit machen sobald ich etwas Zeit habe...

    Udo bzw. Markus

    Vielen dank für die Info werde es mal ausprobieren

    mfg
    Florian
     
  15. dino03

    dino03 Moderator
    Mitarbeiter

    Registriert seit:
    27. Oktober 2008
    Beiträge:
    6.458
    Zustimmungen:
    1
    Sprachen:
    BascomAVR, Assembler
    Hi Florian,

    also Code klauen, dran rumprobieren, durch Erfolg und Irtum lernen und Befehle
    die in dem Code interessant aussehen oder unbekannt sind nachlesen ist eigentlich
    die richtige Methode um über kurz oder lang zu eigenem Code zu kommen.

    Finde ich jedenfalls.

    Also weiter so ... ;)

    Gruß
    Dino
     
  16. Phantomias2006

    Phantomias2006 Neues Mitglied

    Registriert seit:
    10. Januar 2010
    Beiträge:
    56
    Zustimmungen:
    0
    @Dino

    Vielen Dank das du meine Ansichten teilst :D

    Wie ihr eventuell auch sehen könnt von ich seit Jänner 2010 hier im Forum angemeldet.
    Sprich ich Interessiere mich schon seit 1Jahr für Atmega.
    Mein erster Post hier war im August. Also ich hab bis August als Stiller Teilnehmer hier im Forum Teilgenommen und mir alle möglichen Themen durchgelesen und verfolgt. Ich habe/verbringe auch etliche Stunden ,je nachdme wie ich Zeithabe, hier im Forum nur mit lesen. Ich bin auch nicht der Typ der gleich wegen jedem scheiß Postet , denk ich zumindest:rolleyes: , aber für gewisse sachen Fehlt mir einfach das Verständis bzw. die erfahrung bzw2 mann denkt zu kompliziert und verläuft sich irgendwo.
    Und da braucht man halt so eine Gemeinde wie euch die einen wieder auf den richtigen Weg bringen.

    mfg
     
  17. Cassio

    Cassio Moderator
    Mitarbeiter

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    3.929
    Zustimmungen:
    0
    Sprachen:
    BascomAVR

    Hallo Florian, hallo Dino!

    So wie Dino es schon geschrieben hat, sehe ich das eigentlich auch.
    Die Methode ist völlig in Ordnung! :)


    Leider kann ich das bei dir nicht wirklich erkennen. :cool:
    Du nimmst Teile von meinem Code für das Display und schließt es genauso an.
    Dann nimmst du diverse Teile aus Markus verschiedenen Programmen, nebst Anschlusspläne und kopierst dann alles zusammen.
    Ich erkenne da kein "selber ausprobieren".

    Ich habe dir z.B. zig Zeilen geschrieben, wie du einen Timer berechnen und einstellen kannst......
    Aber was hast du gemacht?
    Du hast mal wieder nur den fertigen Code zum Timer1 von Markus genommen.
    War ja auch viel einfacher... mal eben schnell Copy und Paste durchzuführen, als selber nachzudenken.


    Bis jetzt war ich auch geduldig, freundlich und habe mich daran nicht weiter gestört.
    Als ich dann aber gemerkt habe, dass du z.B. nicht einmal Grundschaltungen zur Spannungsversorgung selber "entwickeln" kannst, war meine Geduld am Ende.

    Du hast doch diese "Fehler" mit den Kondensatoren mit Sicherheit nur gemacht, weil sie in den Beispielzeichnungen nicht enthalten waren.
    Das ist z.B. der Grund, warum ich in fast allen meinen Beispielen selten alles einzeichne...... was eigentlich dahin gehört.
    So kann man die "Kopierer" immer schnell erkennen. ;)


    Sei es wie es ist.....
    Ich enthalte mich nun erst mal und gebe vielleicht wieder Tipps wenn ich merke, dass von dir eigene Resultate folgen.


    Trotzdem wünsche ich dir natürlich weiterhin viel Spaß mit dem Hobby.

    Gruß,
    Cassio
     
  18. Phantomias2006

    Phantomias2006 Neues Mitglied

    Registriert seit:
    10. Januar 2010
    Beiträge:
    56
    Zustimmungen:
    0
    Hallo

    Gut ich dachte das du den Code eingestellt hast damit man ihn verwenden kann?! Ich habe auch von anfang an gesagt das ich das Display nach deinen
    Thread angeschlossen und in Betrieb genommen habe.

    Ja leidergottes ist es einfacher das Display mal nach einen schaltplan und einen Quellcode der dafür bestimmt ist anzuschließen und dann zu spielen.

    Wenn ich dich an folgendes erinnern darf

    Das stand nicht im Thread hätte ich zumindest nicht gesehen.
    Ich bin selber draufgekommen habe selber probiert bzw. mich mit dem Quellcode auseinander gesetzt und daran gelernt!
    Desweiteren habe ich die Berechnung (Formel für die Tempanzeige) ursprünglich selber geschrieben da wo die Anzeige nicht gestimmt hat.
    Auch das Datenblatt hab ich mir durchgelesen und die Formel rausgeschieben.
    Dann hast du gesagt ich soll mir mal deine Berechnung ansehen und habe dann deine Formel genommen.

    Gut dann bin ich wohl schuldig!

    Welcher Teil vom Programm bitte ist von Markus? (Außer event. der Timer mit dem ich expermimentiert habe)
    Anschlussplan Ja Programm Nein

    Ja ich habe seine Zeilen verwendet zum Testen!Ja ich habe mir auch Mein Buch zuhand genommen (bevor Markus das TimerBeispiel gepostet hat) und hab mir das mit den Timern durchgelesen leider für mich nicht 100% verständlich aus dem Buch.

    Nein ist nicht einfach!!! Zumal der Timer so nicht Funktioniert wie er im Quellcode steht denn wenn ich die Zeilen so im Quellcode habe hängt sich das Programm teilweise auf und ich bekomme wirre anzeigen am Display!

    Ich habe aber nicht gleich geschieben "geht nicht" etc. sondern wollte mich mit den Timern einfach noch etwas länger beschäftigen und dann wenn eventuell noch Fragen auftreten nachfragen.
    Kannst du jetzt glauben oder auch nicht.

    Gut zu wissen.

    Tut mir leid ich bin kein Elektrotechniker! Ich kenne mich halt nicht so gut aus wie ihr...

    In den schaltplänen ist nur immer 5V eingezeichnet.

    Ich habe mir das Datenblatt vom 7805 runtergeladen und nach dieser Pinbelegung angeschlossen. Habe aber nicht den Beispielschaltplan gesehen.

    Ja das werde ich jetzt besser auch machen denn irgendwie fühle ich mich von
    euch gesteinigt.
     
  19. Cassio

    Cassio Moderator
    Mitarbeiter

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    3.929
    Zustimmungen:
    0
    Sprachen:
    BascomAVR

    Hallo Florian!

    DAS war mit Sicherheit nicht meine Absicht..... und von den anderen wohl auch nicht!
    Steinigen (oder Ähnliches) wollte und will dich hier bestimmt keiner!!!


    Ich finde es aber gut, dass du in dieser Form über dein Unbehagen geschrieben hast!
    Viele andere Anfänger hätten jetzt gemeckert, geschimpft, wären beleidigt gewesen, oder wären beleidigend geworden.

    Für dein offenes, faires und stilvolles Verhalten hast du zumindest bei mir nun ein dickes Plus ! :tee:


    OK, dann will ich mal nicht alles überbewerten und auf die Goldwaage legen. :victory:


    Hast du inzwischen den Ausgang des 7805er mit einem Elko und einen 100nF Kerko versehen?
    Macht dein Display immer noch diese wirren Zeichen (@5@5@5)?

    Gruß,
    Cassio
     
  20. Phantomias2006

    Phantomias2006 Neues Mitglied

    Registriert seit:
    10. Januar 2010
    Beiträge:
    56
    Zustimmungen:
    0
    Hallo Cassio

    Vielen Dank für deine Antwort.

    Leider bin ich "noch" nicht im besitz dieser Bauteile.
    Habe aber jetzt Probehalber den RTC an die Spannungsversorgung
    des PollinBoard's gehängt und siehe da wenn ich jetzt mein DCF77 abstecke
    läuft die Uhr weiter.:adore:
    Anzeigefehler kann ich noch nicht sagen... Denke aber das diese damit
    auch behoben sind.

    Den DS18S20 habe ich nämlich schon die ganze Zeit an der Spannungsversorgung des PollinBoards hängen weil da irgendwo im Datenblatt glaub ich gestanden ist das der an der selben Stromquelle wie der Atmel hängen muss.

    Beim RTC hab ich das aber nicht gelesen.

    Mein Aktuelles Projekt wird dann ein "Brutkasten"
    Da mein Vater "Hobbymässig" ein paar Hühner hat und ca. 2mal im Jahr Eier ausbrüten möchte (Damit wir im Sommer was zu Grillen haben:D )
    möchte er einen Brutaperat bauen.

    Auf den Seiten wo man soetwas bestellen kann kostet alleine die Steuerung für die Temp. €60 Euro. (Natürlich ohne Display Anzeige etc. ist mit einen Poti zum einstellen)

    Die MIN-MAX Anzeige habe ich im Programm derzeit drinn damit ich auswerten kann ob es öffter zu Fehlern Fehlmessungen etc. kommt.


    Nächste woche sollte die Heizung geliefert werden dann werde ich mal schaun ob das ganze halbwegs Funktioniert (Nur mal die Temp. Steuerung)

    Was soll das Programm in Zukunft können:

    Steuerung der Temp.
    Anzeige der noch verbleibenden Tage bis zum schlüpfen.
    Automatische Temp.anhebung ab dem 19ten Tag
    Da wollens die Eier etwas wärmer:D

    Luftfeuchtigkeit messen und eventuell den Schieber für die Luftfeuchtigkeit
    mit einen Servo automatisieren.

    Automatisches Eierwenden 3mal Täglich jeweils 1/3

    Ein Menü zum Einstellen der Hysterese der Temp
    der Uhrzeit und dieverse anderer sachen.

    Aber das ist alles noch Zukunftsmusik!

    Falls erwünscht kann ich das Projekt dann auch gerne hier einstellen sobald
    die Testphase beendet ist ich wieder etwas Zeit habe und mit dem Bau des
    Brutkastens beginne

    mfg
     

Diese Seite empfehlen