PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : das ewige Thema. Funk Uhr. Dies mal "einfache Variante&



Dj_Beat
13.11.2007, 18:31
hallo!
ich habe viele Beispielprogramme gesehen, wo ein DCF77 mit dem AVR ausgewertet wird.
Ich möchte das auch mal nachbauen.
aber alles was ich gesehen habe passt nicht ganz zu mir.
Ich brauche noch kein Wecker zusätzlich, und ich habe kein LCD von pollin mit 27x4 Zeichen...
ich habe ein gewöhnliches 16x2 LCD.
Es soll nur Zeit, Wochentag und Datum (Nach Möglichkeit) anzeigen.
Die Quellcodes, die ich gesehen habe, habe ich auch versucht zu kürzen, anpassen.. ich aber leider nicht herausgekommen.
Also eine Frage an alle:
wenn mal jemand ein einfaches Code "rumliegen" hat, würde ich mich sehr darüber freuen.
Habe AtTiny und AtMega8 zur Verfügung ;)
Ich danke euch sehr!

Dirk
13.11.2007, 19:42
Ich brauche noch kein Wecker zusätzlich, und ich habe kein LCD von pollin mit 27x4 Zeichen...
ich habe ein gewöhnliches 16x2 LCD.

Hier im Forum gibt es mehrere Versionen von DCF77-Decodern. Dabei ist es völlig egal, wieviele Zeichen oder Zeilen das LCD hat. Du brauchst ja nur die Zeilen 3 und 4 weglassen, wenn du kein 4-zeiliges LCD hast. Einen "DCF77-Wecker" habe ich hier noch gar nicht gesehen, aber das wäre ja auch ziemlich egal.

Wenn es bei dir nicht funktioniert, hat das andere Gründe, als das LCD oder die Weckerfunktion.

Wenn du Hilfe brauchst:
1. Welche Hardware hast du genau, z.B. welcher DCF-Empfänger?
2. Poste deine Software

Gruß Dirk

Dj_Beat
13.11.2007, 20:00
Ich habe einen Atmega8 und AtTiny2313. eins von beiden möchte ich verwenden.
und einen LCD 16X2. Am portB.
am PortA.0 ist der DCF77 modul.
es gibt viele Codes, zum Beispiel dieser hier...
da blicke ich gar nicht durch. kann vielleicht einer helfen?






'---------------------------------------------------------------------------------------------------------
' (c) 2001 Roman Foltyn 29.12.2001
'---------------------------------------------------------------------------------------------------------
' DCF1.BAS Version 1.01
' DCF-77 Signal auf INT1 Pin 13 (P3.3) Impulse Low Activ [Conrad Empfänger + Inverter]
' Port 3.7 Low => Piepser ein (Volle stunde Pipser) 5 pipse letzte bei 00:00 lang 0.3 sek
'---------------------------------------------------------------------------------------------------------
'
' V1.01 3.01.2002 10ms Zähler koriegiert 0.99 sek zum 1s ,softwate uhr variable initialisiert
' Bei keine DCF signall nach 2,5 sek XTL meldung Beide DCF Zähler begrenz bis 250
' Wenn keine DCF empfang parity war auch OK jetz wen kalender werte=0 dan auch keine synchro
' Fehler bei KW1 (negative Temp2) Beseitigt.
'---------------------------------------------------------------------------------------------------------
$crystal = 11059200
$large
Config Lcd = 16 * 2 'configure lcd display
Cursor Off

'---- Software Uhr Variablen -----------------------------------------------------------------------------
Dim Shsek As Byte , Ssek As Byte , Smin As Byte , Sstd As Byte , Etag As Byte
Dim Stag As Byte , Swta As Byte , Smon As Byte , Sjah As Byte

'---- DCF77 Dekoder Variablen ----------------------------------------------------------------------------
Dim Pointer As Byte , Dmin As Byte , Dstd As Byte, 'DCF Variable
Dim Dtag As Byte , Dwta As Byte , Dmon As Byte , Djah As Byte

Dim Dcf(60) As Byte 'array für dcf empfangene impulse
Dim Dcfs As Byte 'Variable für zeit zwischen zwei impulse von DCF empfänger
Dim Dcfl As Byte 'Variable für DCF impuls dauer in 10ms schritten

Dim Dcferm As Byte 'Parity error minuten
Dim Dcfers As Byte 'Parity error stunden
Dim Dcferd As Byte 'Parity errordatum
Dim Dcferr As Byte 'Parity error Globall

Dim I As Byte 'diverse temporare variablen
Dim Temp1 As Byte
Dim Wert As Byte
Dim Par As Byte

'--- Speicher NUR FÜR Piepstone - ---------------------------------------------------------------------
Dim Pipsen As Byte 'merker für erzeugte pipston - eliminiert doppel ton bei DCF synchronisation

'--- Speicher NUR FÜR KW und Jahrestag BERECHNUNG --------------------------------------------------------
Dim Jtag As Integer , Schalt As Byte
Dim Temp2 As Integer
Dim Temp3 As Integer
Dim Temp4 As Byte
Dim Kw As Byte
'---------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------

Dcf(0) = 1 'Variablen initialisierung
Dcf(10) = 0
Dcf(20) = 1
Pointer = 0
Dcferr = 1
Shsek = 0
Ssek = 0
Smin = 0
Sstd = 0
Swta = 0
Stag = 0
Smon = 0
Sjah = 0

'Interrupt Configuration ---------------------------------------------------------------------------------

Config Timer2 = Timer , Gate = Internal , Mode = 0 'Reload 16 Bit Modus
On Int1 Int1_int
Set Tcon.2 'flanken steuerung
On Timer2 Timer_2_int
Load Timer2 , 9216 '9216 für 11.0592MHz 10 mS takt (Xtal/12/9216=>10ms)
Enable Interrupts 'enable interrupt
Enable Int1 'enable int1
Enable Timer2 'enable timer2
Priority Set Timer2 'highest priority
Start Timer2 'Timer starten



'################################################# ################################################## ######
'--- Programm Anfang -------------------------------------------------------------------------------------
'################################################# ################################################## ######

Cls
Upperline
Lcd "DCF-77 UHR V1.01"
Lowerline
Lcd "(c) Roman Foltyn"
Wait 2

'____ Hauptprogramm __________________________________________________ ____________________________________

Do
If Shsek = 0 Then Gosub Displayuhr 'einmall pro sekunde ausgabe auf display
Loop

End


'################################################# ################################################## ######
'Unterprogramme _-----------------------------------------------------------------------------------------
'Timer 2 Interrupt Routine (10ms) ------------------------------------------------------------------------
'bearbeitubgs zeit bei volle minute 1,13ms bei jede aufruf 140µs
'---------------------------------------------------------------------------------------------------------

Timer_2_int:

Incr Dcfs
If Dcfs > 250 Then Dcfs = 250 'Zähler begrenzen bis 250
If P3.3 = 0 Then Incr Dcfl 'Dcfl impuls Länge zahler in 10ms step
If Dcfl > 250 Then Dcfl = 250 'Zähler begrenzen bis 250

'---- Software Uhr ---------------------------------------------------------------------------------------

Incr Shsek '10 ms addieren

If Shsek = 100 Then 'und bei 1 sekunde ssek addieren
Shsek = 0
Incr Ssek
End If

If Ssek = 60 Then
Ssek = 0
Incr Smin
End If

If Smin = 60 Then
Smin = 0
Incr Sstd
End If

If Sstd = 24 Then
Sstd = 0
Incr Stag
Incr Swta
End If

Etag = 32 'berechnung monat ende für softuhr
Schalt = Sjah Mod 4

If Smon = 2 Then 'Februar bei schaltjahr berechnen
If Schalt = 0 Then
Etag = 30
Else
Etag = 29
End If
End If

If Smon = 2 Then Etag = 29
If Smon = 4 Then Etag = 31
If Smon = 6 Then Etag = 31
If Smon = 9 Then Etag = 31
If Smon = 11 Then Etag = 31

If Stag = Etag Then
Stag = 1
Incr Smon
End If

If Smon = 13 Then
Smon = 1
Incr Sjah
End If

'-- ACHTUNG NECHSTE ROUTINEN (JAHRESTAG-, KW-, UND PIEPSTONE ROUTINEN) KÖNNEN ENTFÄLEN ! ---------------

'-------------------------------------------------------------------------------------------------------
'---- Berechnung jahrestages und KW (bei keine synchronisation Jtag=0)----------------------------------
'-------------------------------------------------------------------------------------------------------

If Ssek = 0 Then
If Schalt = 0 Then '31.29.31.30.31.30.31.31.30.31.30.31

If Smon = 1 Then Jtag = Stag '0
If Smon = 2 Then Jtag = 31 + Stag '31
If Smon = 3 Then Jtag = 60 + Stag '31.29.
If Smon = 4 Then Jtag = 91 + Stag '31.29.31.
If Smon = 5 Then Jtag = 121 + Stag '31.29.31.30.
If Smon = 6 Then Jtag = 152 + Stag '31.29.31.30.31.
If Smon = 7 Then Jtag = 182 + Stag '31.29.31.30.31.30.
If Smon = 8 Then Jtag = 213 + Stag '31.29.31.30.31.30.31.
If Smon = 9 Then Jtag = 244 + Stag '31.29.31.30.31.30.31.31
If Smon = 10 Then Jtag = 274 + Stag '31.29.31.30.31.30.31.31.30.
If Smon = 11 Then Jtag = 305 + Stag '31.29.31.30.31.30.31.31.30.31.
If Smon = 12 Then Jtag = 335 + Stag '31.29.31.30.31.30.31.31.30.31.30.

Else

If Smon = 1 Then Jtag = Stag '0
If Smon = 2 Then Jtag = 31 + Stag '31
If Smon = 3 Then Jtag = 59 + Stag '31.28.
If Smon = 4 Then Jtag = 90 + Stag '31.28.31.
If Smon = 5 Then Jtag = 120 + Stag '31.28.31.30.
If Smon = 6 Then Jtag = 151 + Stag '31.28.31.30.31.
If Smon = 7 Then Jtag = 181 + Stag '31.28.31.30.31.30.
If Smon = 8 Then Jtag = 212 + Stag '31.28.31.30.31.30.31.
If Smon = 9 Then Jtag = 243 + Stag '31.28.31.30.31.30.31.31
If Smon = 10 Then Jtag = 273 + Stag '31.28.31.30.31.30.31.31.30.
If Smon = 11 Then Jtag = 304 + Stag '31.28.31.30.31.30.31.31.30.31.
If Smon = 12 Then Jtag = 334 + Stag '31.28.31.30.31.30.31.31.30.31.30.

End If

Temp2 = Jtag - Swta
If Temp2 < 0 Then Temp2 = 0 'Bei negativen werten problemm
Temp3 = Temp2 / 7 'Volle wochen seit jahres anfang
Kw = Temp3
Temp3 = Temp3 * 7 'genaue tagesanzahl für volle wochen
Temp4 = Temp2 - Temp3 'Tage in erste KW neues jahr (>4) oder letzte KW altes jahr (<5)

If Temp4 > 4 Then 'wenn tages in jahresanfangswoche >4 dann erste KW in neue Jahr
Kw = Kw + 2 'addieren erste woche und aktuelle woche
End If

If Temp4 < 5 Then 'wenn Tages in jahresanfangswoche <5 dann alle diese tage in letzte KW altes Jahr
Kw = Kw + 1
End If

If Schalt = 0 Then
Temp2 = Jtag - Swta 'wenn in altes jahr letzte woche noch bis mittwoch dann 1 KW
If Temp2 > 362 Then Kw = 1
Else
Temp2 = Jtag - Swta 'wenn in altes jahr letzte woche noch bis mittwoch dann 1 KW
If Temp2 > 361 Then Kw = 1 'letzte Jahres tage können auch in neue Jahr 1 woche eintretten
End If
End If

'Jtag => Jahrestag ab Jahresanfang
'Kw => Berechnete KW (Kalender Woche)

'---------------------------------------------------------------------------------------------------------
'--- PIPSTONE BEI VOLLE STUNDE 56 bis 59 Kurz und bei 00 Lang -------------------------------------------
'---------------------------------------------------------------------------------------------------------

If Ssek > 55 And Ssek < 60 Or Ssek = 0 Then
If Ssek = 0 Then
If Smin = 0 Then
If Shsek > 0 And Shsek < 30 Then
If Pipsen = 0 Then
P3.7 = 0
Pipsen = 1 'blokiert null sekunden piepsen (Bei DCF übernahme)
End If
Else
P3.7 = 1
End If
End If
Else
If Smin = 59 Then
If Shsek > 0 And Shsek < 10 Then
P3.7 = 0
Pipsen = 0 'schaltet null skunden piepsen wieder an
Else
P3.7 = 1
End If
End If
End If
Else
P3.7 = 1 'Bei andere falle Piepston abschalten
End If

'---------------------------------------------------------------------------------------------------------

Return

'---------------------------------------------------------------------------------------------------------
'---- Interrupt1 Routine (DCF77 Empfanger INPUT LOW=>125 bis131ms INPUT HIGH=>227 bis 229ms --------------
'---- Interrupt Dauer 51 µs und bei DCF Decodieren (Volle minute) 8,5ms ----------------------------------
'---------------------------------------------------------------------------------------------------------

Int1_int:

If Dcfs < 202 And Dcfs > 196 Then 'Minutensprung finden und DCF Dekodieren
'ACHTUNG bei andere empfänger eventuell anpassen
If Dcfl > 17 Then 'Signall low oder high in DCF Array speichern
Dcf(60) = 1 'wert von parity Date "58"bit noch speichern
Else
Dcf(60) = 0
End If
Shsek = 0
Ssek = 0
Gosub Dcfdecode 'DCF signall decodieren
Pointer = 0
End If

Incr Pointer

'Kleiner 170ms => LOW Grösser 170ms => High
If Dcfl > 17 Then 'Signall low oder high in DCF Array speichern
Dcf(pointer) = 1
Else
Dcf(pointer) = 0
End If

Dcfs = 0
Dcfl = 0

Return

'---------------------------------------------------------------------------------------------------------
'--- DCF77 DEKODIER SOFTWARE ----------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------

Dcfdecode:

Dmin = 0 'DCF minuten info
Dstd = 0 'DCF Stunden info
Dtag = 0 'DCF Tag info
Dwta = 0 'DCF Wochen Tag info
Dmon = 0 'DCF Monat info
Djah = 0 'DCF Jahr info

Dcferm = 0 'Minuten Patity error löschen
Dcfers = 0 'Stunden Patity error löschen
Dcferd = 0 'Datum Patity error löschen

Par = 0 'Parity=0
For I = 1 To 8 'scann Array für minuten
Pointer = I + 22
If Dcf(pointer) = 1 Then

If I = 1 Then
Dmin = Dmin + 1
Par = Par + 1
End If

If I = 2 Then
Dmin = Dmin + 2
Par = Par + 1
End If

If I = 3 Then
Dmin = Dmin + 4
Par = Par + 1
End If

If I = 4 Then
Dmin = Dmin + 8
Par = Par + 1
End If

If I = 5 Then
Dmin = Dmin + 10
Par = Par + 1
End If

If I = 6 Then
Dmin = Dmin + 20
Par = Par + 1
End If

If I = 7 Then
Dmin = Dmin + 40
Par = Par + 1
End If

If I = 8 Then
Par = Par + 1
End If

End If

Dcferm = Par Mod 2 'parity minuten test

Next I

Par = 0
For I = 1 To 7 'scann Array für Stunden
Pointer = I + 30
If Dcf(pointer) = 1 Then

If I = 1 Then
Dstd = Dstd + 1
Par = Par + 1
End If

If I = 2 Then
Dstd = Dstd + 2
Par = Par + 1
End If

If I = 3 Then
Dstd = Dstd + 4
Par = Par + 1
End If

If I = 4 Then
Dstd = Dstd + 8
Par = Par + 1
End If

If I = 5 Then
Dstd = Dstd + 10
Par = Par + 1
End If

If I = 6 Then
Dstd = Dstd + 20
Par = Par + 1
End If

If I = 7 Then
Par = Par + 1
End If

End If

Dcfers = Par Mod 2 'parity stunden test

Next I

Par = 0
For I = 1 To 23 'scann Array für Tag bis Jahr
Pointer = I + 37
If Dcf(pointer) = 1 Then

If I = 1 Then
Dtag = Dtag + 1
Par = Par + 1
End If

If I = 2 Then
Dtag = Dtag + 2
Par = Par + 1
End If

If I = 3 Then
Dtag = Dtag + 4
Par = Par + 1
End If

If I = 4 Then
Dtag = Dtag + 8
Par = Par + 1
End If

If I = 5 Then
Dtag = Dtag + 10
Par = Par + 1
End If

If I = 6 Then
Dtag = Dtag + 20
Par = Par + 1
End If

If I = 7 Then
Dwta = Dwta + 1
Par = Par + 1
End If

If I = 8 Then
Dwta = Dwta + 2
Par = Par + 1
End If

If I = 9 Then
Dwta = Dwta + 4
Par = Par + 1
End If

If I = 10 Then
Dmon = Dmon + 1
Par = Par + 1
End If

If I = 11 Then
Dmon = Dmon + 2
Par = Par + 1
End If

If I = 12 Then
Dmon = Dmon + 4
Par = Par + 1
End If

If I = 13 Then
Dmon = Dmon + 8
Par = Par + 1
End If

If I = 14 Then
Dmon = Dmon + 10
Par = Par + 1
End If

If I = 15 Then
Djah = Djah + 1
Par = Par + 1
End If

If I = 16 Then
Djah = Djah + 2
Par = Par + 1
End If

If I = 17 Then
Djah = Djah + 4
Par = Par + 1
End If

If I = 18 Then
Djah = Djah + 8
Par = Par + 1
End If

If I = 19 Then
Djah = Djah + 10
Par = Par + 1
End If

If I = 20 Then
Djah = Djah + 20
Par = Par + 1
End If

If I = 21 Then
Djah = Djah + 40
Par = Par + 1
End If

If I = 22 Then
Djah = Djah + 80
Par = Par + 1
End If

If I = 23 Then
Par = Par + 1
End If

End If

Dcferd = Par Mod 2 'parity test für letzte daten block

Next I
Dcferr = Dcferm + Dcfers 'Globale Parity error erzeugen
Dcferr = Dcferr + Dcferd

If Djah = 0 Then Return 'bei keine empfang parity ist auch OK aber
If Dwta = 0 Then Return 'DCF signall ist auch faisch
If Dmon = 0 Then Return
If Dtag = 0 Then Return

If Dcferr = 0 Then 'wenn daten ok dann softuhr setzen
Shsek = 0 '0.01s und sekunden synchronisieren
Ssek = 0
Smin = Dmin 'Alle DCF dekodierte werte in softuhr übernemen
Sstd = Dstd
Stag = Dtag
Swta = Dwta
Smon = Dmon
Sjah = Djah

End If
Return



'---------------------------------------------------------------------------------------------------------
'--- LCD DISPLAY ANZEIGE ROUTINE --- KANN DURCH USER BELIEBIG GEENDERT WERDEN ----------------------------
'---------------------------------------------------------------------------------------------------------

Displayuhr: 'softuhr anzeigen

If Dcfs > 240 Then Dcferr = 1 'wenn keine impulse von DCF empfanger auch Parity error setzen

Upperline 'uhr zeit zeigen
If Sstd < 10 Then
Lcd "0" ; Sstd ; ":" ;
Else
Lcd Sstd ; ":" ;
End If

If Smin < 10 Then
Lcd "0" ; Smin ; ":" ;
Else
Lcd Smin ; ":" ;
End If

If Ssek < 10 Then
Lcd "0" ; Ssek ;
Else
Lcd Ssek ;
End If
'Wochentag decodieren
If Swta = 0 Then 'wenn noch keine daten dann Synchro
Lcd " SYNCHRO";
End If

If Swta = 1 Then
Lcd " MO";
End If

If Swta = 2 Then
Lcd " DI";
End If

If Swta = 3 Then
Lcd " MI";
End If

If Swta = 4 Then
Lcd " DO";
End If

If Swta = 5 Then
Lcd " FR";
End If

If Swta = 6 Then
Lcd " SA";
End If

If Swta = 7 Then
Lcd " SO";
End If

If Dcferr = 0 Then
Lcd " DCF "; 'DCF OK
Else
Lcd " XTL "; 'Wenn keine DCF synchro dann Quarz UHR Modus
End If

Lowerline

If Stag < 10 Then
Lcd "0" ; Stag ; "." ;
Else
Lcd Stag ; "." ;
End If

If Smon < 10 Then
Lcd "0" ; Smon ; "." ;
Else
Lcd Smon ; "." ;
End If

If Sjah < 10 Then
Lcd "200" ; Sjah ;
Else
Lcd "20" ; Sjah ;
End If

If Jtag > 0 Then
If Kw > 9 Then
Lcd " KW" ; Kw ;
Else
Lcd " KW0" ; Kw ;
End If
Else
Lcd " QUARZ"
End If

Return

Dirk
13.11.2007, 20:53
Hallo Dj_Beat,

wenn du Bascom ab 1.11.8.7 aufwärts hast, kannst du die eingebaute DCF-Funktion (CONFIG DCF77 ...) benutzen. Sieh dir die Hilfe an.

Vor dieser Version: Evtl. hilft der Decoder aus der Wiki.

Gruß Dirk

Dj_Beat
13.11.2007, 21:08
Hallo Dirk,
danke für den hinweis.

habe jetzt das beispielprogramm angeguckt und etwas gearbeitet.
ist das so richtig?


$regfile = "M8def.dat"
$crystal = 8000000
$swstack = 128
$framesize = 128
$baud = 19200


Config Dcf77 = Pind.2 , Timer = 1 , Timer1sec = 1 , Debug = 1

Enable Interrupts

Config Date = Dmy , Separator = .

Dim I As Integer

Dim Sec_old As Byte , Dcfsec_old As Byte

Sec_old = 99 : Dcfsec_old = 99


Print "Test DCF77 Version 1.00"

Do

For I = 1 To 78

Waitms 10

If Sec_old <> _sec Then

Exit For

End If

If Dcfsec_old <> Dcf_sec Then

Exit For

End If

Next

Waitms 220

Sec_old = _sec

Dcfsec_old = Dcf_sec

Print Time$ ; " " ; Date$ ; " " ; Time(dcf_sec) ; " " ; Date(dcf_day) ; " " ; Bin(dcf_status) ; " " ; Bin(dcf_bits) ; " " ; Bdcf_impuls ; " " ; Bdcf_pause

Loop

End

Dirk
14.11.2007, 16:18
... habe jetzt das beispielprogramm angeguckt und etwas gearbeitet. ist das so richtig?

Wenn's funktioniert, ist es richtig! O:)

(Warum du 2x _sec mit einer alten Sekunde vergleichst, und dann aus dem for-Konstrukt (1..78 ???) 2x herausspringst, habe ich nicht verstanden.)

Gruß Dirk

P.S.: Wenn du hier Code postest, stell ihn doch in die Code Tags (siehe oben unter "Code"!) Das ist übersichtlicher.

Dj_Beat
15.11.2007, 19:59
also die Uhr selbst funktioniert.
aber ich habe am Pd2 immer 4V.
wenn ich den DCF77 vom uC trenne, kann ich auf dem Oszi die Signale von dem Empfänder sehen.
ich gaube also, dass der interne pull-up zu klein ist.
kann des sein?
Wie kann ich im Code den Int. pull-ub abschalten?

Dirk
15.11.2007, 20:25
wenn ich den DCF77 vom uC trenne, kann ich auf dem Oszi die Signale von dem Empfänder sehen.
Welches DCF-Modul hast du?
Wenn es das von Reichelt ist, brauchst du eine Treiberstufe am Empfängerausgang.

Gruß Dirk

Dj_Beat
15.11.2007, 20:29
ich habe ihn aus einem Funk-Wecker ausgebaut.
er hat 4 Anschlüsse:
VCC, GND, TOC und PON.
PON muss ich mit GND verbinden, damit er läuft.
es sieht so aus, dass es kein open-collector ist, weil er impulse mit einer Spannung von 2,7V rausgibt (gegen Masse gemessen).
Was für eine Treiberstufe ist das, und wie baut man sowas auf?

danke

Dirk
15.11.2007, 20:38
... es sieht so aus, dass es kein open-collector ist, weil er impulse mit einer Spannung von 2,7V rausgibt (gegen Masse gemessen).
Was für eine Treiberstufe ist das, und wie baut man sowas auf?

Was das für ein Ausgang ist, kann ich nicht sagen. Evtl. push-pull.

Probier mal, einen Transistor BC546B in Emitterschaltung an den Ausgang zu hängen. Basiswiderstand: 22kOhm (Probierwert).
Den uC-Pullup würde ich eingeschaltet lassen, oder dem Transistor noch einen 10k Pullup am Kollektor (PD2) spendieren.

Gruß Dirk

Dj_Beat
15.11.2007, 20:44
wie kann ich hier einen schaltplan (jpg) anhänden?

Dirk
15.11.2007, 20:50
Hier im "Antwort schreiben" unten auf "Attachment hinzufügen" klicken.
Dann JPG mit "Durchsuchen" auswählen und "Attachment hinzufügen".

Dj_Beat
15.11.2007, 20:53
ich bin vielleicht blind, aber bei mit ist kein "Attachment hinzufügen" :(
na gut. ich habs also verstanden, wie du das meinst.
werde ich morgen mal probieren :) danke.

Dirk
15.11.2007, 20:57
ich bin vielleicht blind, aber bei mit ist kein "Attachment hinzufügen"

Scroll mal während du dein Posting schreibst ganz nach unten. Da ist das "Attachment hinzufügen" im Kontrollzentrum.

Gruß Dirk

Dj_Beat
15.11.2007, 21:12
achso, jetzt habe ich es gefunden.
ich habe nicht auf Antwort schreiben, sondert auf "kurz Antwort geguckt.
so, hier ist das schaltplan.
richtig so?

Dirk
15.11.2007, 21:29
Ja, genau so.

Hast du 3V als uC-Versorgungsspannung? Auf jeden Fall sollte R2 an die Spannung, die auch den uC versorgt.

Gruß Dirk

Dj_Beat
15.11.2007, 21:34
Hast du 3V als uC-Versorgungsspannung? Auf jeden Fall sollte R2 an die Spannung, die auch den uC versorgt.

nein, uC läuft mit 5V.
warum ist das so wichtig? damit er die Flanken richtig erkennt?

und noch eine (letzte hoffentlich) Frage.
Wie muss ich die FUSES bei PONYPRG setzen, damit mein AtTiny2313 mit 4Mhz extern Quarz läuft?
ich kann nicht mehr ausprobieren, weil ich hatt nur 3 St. davon. 2 laufen gar nicht mehr. ein einziger ist mir noch geblieben.
also PONYPROG Attiny2313, 4 MHz extern Quarz.

Danke sehr!!!! ;)

Dirk
15.11.2007, 21:39
... wenn auf "extern quarz osc", dann läuft nichts mehr, wenn man eigentlich einen 4 MHz Quarz angeschlossen hat.

Nimm ext. crystal!!!

(Die 2 anderen nicht wegwerfen! Mit einem von extern zugeführten Takt kann man sie vermutlich wiederbeleben.)

Gruß Dirk

Dj_Beat
15.11.2007, 21:41
>Nimm ext. crystal!!!

damit nichts mehr schief läuft...
wo muss ich die Häckchen setzten?

Dirk
15.11.2007, 21:47
Sorry, muss jemand beantworten, der PonyProg benutzt. Ich nehme es nicht.

Gruß Dirk

Dj_Beat
15.11.2007, 21:48
ok, danke für alles! :)))