ATMega8

Wer etwas bestimmtes sucht, kann es hier bekannt geben

Moderator: Tim Sasdrich

Re: ATMega8

Beitragvon sakasitadi » 27.02.2011, 22:39

M.A.R.K 13 hat geschrieben:in deiner Zip ist nur eine PDF-Anleitung zur Übertragung mit Ponyprog, der Programmcode für Bascom und die erstellte Hex-Datei (wohl für Mega16??)

Daran erkenne ich aber immer noch nicht welches Board du benutzt.


Sorry, die angehängte Datei war wohl zu groß,
dehalb hier der Link für das Datenblatt.

http://www.pollin.de/shop/downloads/D810038B.PDF
sakasitadi
 

Re: ATMega8

Beitragvon M.A.R.K 13 » 01.03.2011, 18:34

wenn du über die Sub-D ISP-Schnittstelle programieren willst musst du es nur mit dem PC verbinden.
Im Datenblatt steht zwar nicht was für ein Kabel - ich denke mal 1:1
Dann sollte es mit der Anleitung funktionieren.
M.A.R.K 13
 

Re: ATMega8

Beitragvon sakasitadi » 13.03.2011, 17:54

Hallo M.A.R.K.13,
ich habe die Schaltung aufgebaut. Die Zeiteinstellung über die Taster funktioniert. Die Uhrzeit ändert sich aber nicht automatisch . Ich habe an dem DS1307 alle Spannungen gemessen, das passt soweit . An SCL und SDA konnte ich mit dem Multimeter nichts messen. Hast Du eine Idee oder fällt Dir im Programm etwas auf? Das Programm kann ich mittlerweile selber auf den Chip übertragen. Kannst Du mir eine Quelle nennen, wo diese Basic Befehle die Du verwendet hast erklärt werden?
sakasitadi
 

Re: ATMega8

Beitragvon M.A.R.K 13 » 13.03.2011, 20:32

Bei mir hatte das Prog funktioniert. zumindest die paar Minuten in denen es gelaufen ist. :wink:

An SDA und SCL kannst du mit einem Multimeter nicht viel messen. - dafür sind die zu schnell!
hast du die Pull-up Widerstände für diese Leitungen eingebaut?


Die Befehle kannst du in der Bascom-Hilfe suchen!
da ist alles drin! aber Englisch!
M.A.R.K 13
 

Re: ATMega8

Beitragvon sakasitadi » 15.03.2011, 22:24

M.A.R.K 13 hat geschrieben:Bei mir hatte das Prog funktioniert. zumindest die paar Minuten in denen es gelaufen ist. :wink:

An SDA und SCL kannst du mit einem Multimeter nicht viel messen. - dafür sind die zu schnell!
hast du die Pull-up Widerstände für diese Leitungen eingebaut?


Die Befehle kannst du in der Bascom-Hilfe suchen!
da ist alles drin! aber Englisch!


Hallo MARK,
klappt immer noch nicht. In der PDF datei
Schema.pdf
(17.58 KiB) 163-mal heruntergeladen
ist die schaltung skizziert. ist da ein fehler? oder habe ich ein anderes programm als du? kannst du mir deine bascomdatei zukommen lassen?

Gruß
sakasitadi
 

Re: ATMega8

Beitragvon M.A.R.K 13 » 18.03.2011, 16:55

Da könnte ich dir auch die fertige Hex-Datei geben!
Den code hab ich ja schon gepostet.
aber bitteschön:
Uhr.rar
(3.41 KiB) 166-mal heruntergeladen



du hast aber keinen Multiplexausgang!
M.A.R.K 13
 

Re: ATMega8

Beitragvon sakasitadi » 21.03.2011, 22:52

M.A.R.K 13 hat geschrieben:Da könnte ich dir auch die fertige Hex-Datei geben!
Den code hab ich ja schon gepostet.
aber bitteschön:
Uhr.rar



du hast aber keinen Multiplexausgang!


Hallo Mark13:

es funktioniiiiiiiiiiiiiiiiiiiert.

werde bei gelegenheit ein Foto einstellen.
Danke.

Jetzt muss ich nur rausfinden wieso die Backupbatterie die Uhrzeit bei Spannungsausfall nicht weiter zählt.
sakasitadi
 

Re: ATMega8

Beitragvon sakasitadi » 24.03.2011, 20:36

sakasitadi hat geschrieben:
M.A.R.K 13 hat geschrieben:Da könnte ich dir auch die fertige Hex-Datei geben!
Den code hab ich ja schon gepostet.
aber bitteschön:
Uhr.rar



du hast aber keinen Multiplexausgang!


Hallo Mark13:

es funktioniiiiiiiiiiiiiiiiiiiert.

werde bei gelegenheit ein Foto einstellen.
Danke.

Jetzt muss ich nur rausfinden wieso die Backupbatterie die Uhrzeit bei Spannungsausfall nicht weiter zählt.


Hallo Mark,
kann es sein, dass im Programm nach einem Reset nicht er DS1307 ausgelesen wird sondern mit 12 überschrieben wird? Ich kann das Programm nicht lesen, deshalb frage ich mal in die Runde.
Ich habe ja die Pufferbatterie aber das funktioniert nicht.
sakasitadi
 

Re: ATMega8

Beitragvon M.A.R.K 13 » 25.03.2011, 14:55

nach einem reset wird die RTC ausgelesen.
Wenn der sekundenwert über 59 ist meines wissens nach H80
ist die RTC nicht gestellt und das Programm schreibt 12 Uhr rein dass die RTC läuft.

Wenn ich zu Hause bin prüfe ich das nochmal..
M.A.R.K 13
 

Re: ATMega8

Beitragvon M.A.R.K 13 » 26.03.2011, 12:05

Das Programm hat wohl keinen Fehler.

Spoiler: show
Code: Alles auswählen
'  beinah-binär Uhr (c)2011 by M.A.R.K 13
'
'                       __ __
'              Reset  -|  U  |-  SCL (to RTC)
'               setH  -|     |-  SDA (to RTC)
'               setM  -|     |-  40
'                  1  -|     |-  30
'                  2  -|     |-  20
'                  3  -|     |-  10
'                VSS  -|     |-  GND
'                GND  -|     |-  NC.   /Aref
'                 50  -|     |-  VSS
'                  5  -|     |-  12H   /SCK
'                  4  -|     |-  9H    /MISO
'                 PM  -|     |-  6H    /MOSI
'                     -|     |-  3H
'                 1H  -|_____|-  2H
'
'
'
'

$regfile "m8def.dat"
$crystal = 1000000


Config Portb = 255
Config Portc = 15
Config Portd = 124
Config Scl = Portc.5                                        'Is serial clock SCL
Config Sda = Portc.4                                        'Is serial data SDA

Portd = 3                                                   'Pull-up

Seth Alias Pind.0                                           'Stunden-Taste Alias
Setm Alias Pind.1                                           'Minuten-Taste Alias


Dim Minute As Byte , Stunde As Byte , X As Byte
Dim Daten(3) As Byte , I As Byte , N As Byte , Hstring As String * 6


'Überprüfung auf daten
'wenn Sekunde >59 ist die uhr nicht gestellt.
I2cstart                                                    'IIC starten
I2cwbyte &HD0                                               'RTC ansprechen (schreiben)
I2cwbyte 0                                                  'Zeiger auf Position 0

I2cstart                                                    'IIC starten
I2cwbyte &HD1                                               'RTC ansprechen (lesen)
I2crbyte Minute , Nack                                      'Sekunde auslesen
I2cstop                                                     'IIC stoppen

If Minute > &H59 Then                                       'Prüfung der Sekunden
   Minute = 00                                              'Minuten stellen Wenn Sekunden > 59
   Stunde = 12                                              'Minuten stellen Wenn Sekunden > 59
   Gosub Setrtc                                             'ausführen SETRTC
   End If                                                   'Ende Prüfung




Do                                                          'Hauptschleife

   I2cstart                                                 'IIC starten
   I2cwbyte &HD0                                            'RTC ansprechen (schreiben)
   I2cwbyte 1                                               'Zeiger auf 1
   I2cstart                                                 'IIC starten
   I2cwbyte &HD1                                            'RTC ansprechen (lesen)

   I2crbyte Minute , Ack                                    'lesen der Minuten
   I2crbyte Stunde , Nack                                   'lesen der Stunden
   I2cstop                                                  'IIC stoppen

         Hstring = Hex(minute)                              'Hexwert in Dezimalwert
         Minute = Val(hstring)                              'Minuten

         Hstring = Hex(stunde)                              'Hexwert in Dezimalwert
         Stunde = Val(hstring)                              'Stunden

   Gosub Zeigen                                             'ausführen ZEIGEN
If Seth = 0 Then Gosub Stellen                              'Stundentaste prüfen
If Setm = 0 Then Gosub Stellen                              'Minutentaste prüfen

Loop                                                        'Ende Hauptschleife



Stellen:
While N < 50                                                'Schleife 5Sekunden

If Setm = 0 Then                                            'Prüfung der Minutentaste
   Incr Minute                                              'Minute hochzählen
   If Minute = 60 Then Minute = 0                           'Prüfung Minute60
   N = 0                                                    'Zähler auf 0 setzen
   End If

If Seth = 0 Then                                            'Prüfung der Stundentaste
   Incr Stunde                                              'Stunde hochzählen
   If Stunde = 24 Then Stunde = 0                           'Prüfung Stunde24
   N = 0                                                     'Zähler auf 0 setzen
   End If

Gosub Zeigen                                                'ausführen ZEIGEN
Incr N                                                      'Zähler hochzählen
Waitms 200                                                  'Warte (Tasten entprellen)
Wend                                                        'Schleifenende

Gosub Setrtc                                                'Ausführen SETRTC
Return                                                      'SUB ENDE

Setrtc:
         Hstring = "0" + Str(minute)
         Hstring = Right(hstring , 2)                       'Minuten wandeln
         Hstring = "&H" + Hstring                           'Dezimal in HEX
         Minute = Hexval(hstring)

         Hstring = "0" + Str(stunde)
         Hstring = Right(hstring , 2)                       'Stunden wandeln
         Hstring = "&H" + Hstring                           'Dezimal in HEX
         Stunde = Hexval(hstring)

   I2cstart                                                 'IICstart
   I2cwbyte &HD0                                            'RTC ansprechen (schreiben)
   I2cwbyte 0                                               'Zeiger auf 0
   I2cwbyte &H00                                            'sekunde setzen
   I2cwbyte Minute                                          'Minute setzen
   I2cwbyte Stunde                                          'Stunde setzen
   I2cwbyte &H06                                            'Wochentag setzen
   I2cwbyte &H12                                            'Tag setzen
   I2cwbyte &H02                                            'Monat setzen
   I2cwbyte &H11                                            'Jahr setzen
   I2cwbyte 0                                               'SQWE-Ausgang aus (für Sekundentakt &H90)
   I2cstop                                                  'IIC stoppen

   'für Sperre der Tasten goto0 entfernen.
   Goto 0                                                   'RESET des µC

Return                                                      'SUB ENDE

Zeigen:
   For I = 1 To 3
      Daten(i) = 0                                          'Daten löschen
   Next

X = Minute Mod 10
                                                             'Daten auslesen
Select Case X
   Case 0 : Nop
   Case 1 : Daten(1) = 4
   Case 2 : Daten(1) = 8
   Case 3 : Daten(1) = 16
   Case 4 : Daten(1) = 32
   Case 5 : Nop
   Case 6 : Daten(1) = 4
   Case 7 : Daten(1) = 8
   Case 8 : Daten(1) = 16
   Case 9 : Daten(1) = 32
End Select



X = Stunde Mod 12

Select Case X
   Case 0 : Daten(3) = 32
   Case 1 : Daten(3) = 1
   Case 2 : Daten(3) = 2
   Case 3 : Daten(3) = 4
   Case 4 : Daten(3) = 5
   Case 5 : Daten(3) = 6
   Case 6 : Daten(3) = 8
   Case 7 : Daten(3) = 9
   Case 8 : Daten(3) = 10
   Case 9 : Daten(3) = 16
   Case 10 : Daten(3) = 17
   Case 11 : Daten(3) = 18
End Select

X = Minute / 10

Select Case X
   Case 0 : Nop
   Case 1 : Daten(2) = 1
   Case 2 : Daten(2) = 2
   Case 3 : Daten(2) = 4
   Case 4 : Daten(2) = 8
   Case 5 : Daten(3) = Daten(3) + 64
End Select


X = Minute Mod 10
Select Case X
   Case 5 To 9 : Daten(3) = Daten(3) + 128
   Case Else : Nop
End Select


X = Stunde / 12
If X = 1 Then Daten(1) = Daten(1) + 64

Daten(1) = Daten(1) + 3                                     'P-Up

Portd = Daten(1)                                            'Datenausgabe
Portc = Daten(2)                                            'Datenausgabe
Portb = Daten(3)                                            'Datenausgabe

Return                                                      'SUB ENDE

End                                                         'formales Programmende



was passiert denn wenn du nur einen Reset über Pin1 am µC auslöst?
-Du Uhrzeit sollte noch passen!

Wenn die komplette Spannung abgeklemmt wird sollte die RTC weiterlaufen.

Ist die Batterie auch wirklich richtig angeschlossen?
Mess mal im ausgeschalteten Zustand am RTC von Pin3 zu Pin4(GND).
Sollten 3V sein.
Ist die Spannung weit darunter Batterie wechseln.
Bei negativer Spannung ist die Batterie verpolt.
Bei 0V ist sie wohl nicht angeschlossen.
M.A.R.K 13
 

Re: ATMega8

Beitragvon sakasitadi » 28.03.2011, 19:48

M.A.R.K 13 hat geschrieben:Das Programm hat wohl keinen Fehler.

Spoiler: show
Code: Alles auswählen
'  beinah-binär Uhr (c)2011 by M.A.R.K 13



was passiert denn wenn du nur einen Reset über Pin1 am µC auslöst?
-Du Uhrzeit sollte noch passen!

Wenn die komplette Spannung abgeklemmt wird sollte die RTC weiterlaufen.

Ist die Batterie auch wirklich richtig angeschlossen?
Mess mal im ausgeschalteten Zustand am RTC von Pin3 zu Pin4(GND).
Sollten 3V sein.
Ist die Spannung weit darunter Batterie wechseln.
Bei negativer Spannung ist die Batterie verpolt.
Bei 0V ist sie wohl nicht angeschlossen.


Die Batterie ist richtig angschlossen.
Spannung an Pin 3 nach Pin 4 = 3V
Spannung nicht verpolt.

ich forsche weiter.
sakasitadi
 

Vorherige

Zurück zu Suche

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast