- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Uhr mit Uhrenquarz 32768 Hz an den Pins TOSC1/2

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627

    Uhr mit Uhrenquarz 32768 Hz an den Pins TOSC1/2

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    ich möchte eine Uhr mit Uhrenquarz (32768 Hz) programmieren und bin auch im Forum fündig geworden. Leider bekommen ich ein paar Fehlermeldungen:

    Nomore Space for Bit [__LCDNO] und Syntax error... in Zeile 32

    Kann mir einer einen Tip geben wo der Fehler liegt?

    Wenn ich den Code aus der Bascomhilfe nehme habe ich zufällig die gleichen Fehler.... da stimmt doch etwas nicht....?

    Code:
    'Uhr mit Uhrenquarz 32768 Hz an den Pins TOSC1/2
    
    
    $regfile = "m32def.dat"                                     'AT-Mega32
    '$crystal = 1000000                                          'Quarz: 1 MHz - interner Takt
    $crystal = 14745600                                         'Quarz: 14,7456 MHz - Quarz auf Platine
    $baud = 9600                                                'RS232 Baudrate definieren
    
    
    '-------------------------------------------------------------------------------
    'LCD konfiguration:
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4
    Config Lcd = 20 * 4
    
    
    
    Config Date = Dmy , Separator = .
    Config Clock = Soft
    Date$ = "21/12/08"
    Time$ = "19:15:00"
    dim Secalt as byte
    cls
    Do
    Gosub Uhr
    Loop
    
    
    
     Uhr:
    if secalt <> _sec then
        Locate 1 , 5
        Lcd Date$
    
       Locate 2 , 1
        Lcd Time$
       secalt = _sec
    end if
    Return
    ...

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Wie viele Quarze hängen da dran?
    Falls es nur einer ist, ist mir das erste, was auffällt, das hier:
    Der Uhrenquarz hat ~32kHz, im Programm wird aber "$crystal = 14745600" angegeben. Aber das dürfte eigentlich nicht der Fehler sein.
    Welche der Zeilen ist denn diese Zeile 32? (Nachzählen im Code haut nicht hin, rauskopieren auch nicht, da da blöderweise noch Leerzeilen mit drin sind, wo man nicht weiss, ob die noch dazugehören oder nicht.)

    Ansonsten seh ich da auf die schnelle keinen Fehler. Habs auch grad mal kompiliert und da gehts bei mir ohne Probleme.
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Hallo,
    der Quarz(14745600) ist an Pin 12/13(XTAL1/2). Der UhrenQuarz(~32kHz) ist an Pin 28/29(Tosc1/2).

    Bei allen Fehlern wird immer bis zum Return Befehl gesprungen...also fehlt vielleicht ein Befehl oder so(?).
    ...

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Ah so rum *g*

    Wirf mal das, was zwischen "Uhr:" und "Return" steht einfach in die Do-Loop-Schleife rein; ob der Fehler dann auch kommt. Also ich kanns mit beiden Möglichkeiten Fehlerfrei kompilieren.
    #ifndef MfG
    #define MfG

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    ..........der Fehler ist weg............

    waren das zuviele / zu schnelle aufrufe in der Do...Loop?
    ...

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    tja...also keine Fehler mehr aber die Uhr Läuft nicht...

    Hab die Anweisung: if secalt <> _sec then erstmal rausgenommen, damit immer aktualisiert wird. Datum und Uhrzeit stehen auf dem LCD und flackern (wird ja jetzt zuoft aufgerufen und gelöscht) Das Fusebit
    für den 14MHz Quarz habe ich gesetzt, muss man da noch Fusebits setzen(für den kleinen Quarz)?

    Tobias
    ...

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Habe gerade mal an beiden Beinen vom Quarz gemessen: 30µS/Wellen =33khz?
    Kommt also ungefähr hin.
    ...

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Komisch... aber dass das zu schnell war, kann ich mir nicht vorstellen.
    Du kannst ja mal ne echte Sub zusammenbauen (Also mit Declare etc.) und so mal testen, obs dann auch (nicht) geht.

    Wenns dort dann wieder nicht geht, bleibt die Vermutung, dass evtl. die Werte für HWStack, Softwstack, Framesize etwas zu klein sind.
    Die mal verdoppeln, wenns dann geht, müsste es mit der o.g. Lösung (per Gosub) eigentlich auch wieder gehen.

    Nen extra Uhrenquarz hab ich nie verwendet. (nie benötigt bisher). Weiss deshalb nicht, wie/ob man die Fuses da setzen muss.
    #ifndef MfG
    #define MfG

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    HWStack, Softwstack, Framesize habe ich noch gar nicht definiert....
    Also mit diesen Einstellungen funktioniert es nicht:
    $hwstack = 80
    $swstack = 128
    $framesize = 80

    wie meinst du das mit declare Sub? Habe damit noch nichts programmiert.

    Code:
    'Uhr mit Uhrenquarz 32768 Hz an den Pins TOSC1/2
    
    
    $regfile = "m32def.dat"                                     'AT-Mega32
    '$crystal = 1000000                                          'Quarz: 1 MHz - interner Takt
    $crystal = 14745600                                         'Quarz: 14,7456 MHz - Quarz auf Platine
    '$baud = 9600                                                'RS232 Baudrate definieren
    
    $hwstack = 80
    $swstack = 128
    $framesize = 80
    
    '-------------------------------------------------------------------------------
    'LCD konfiguration:
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4
    Config Lcd = 20 * 2
    Cursor Off Noblink
    
    
    Config Date = Dmy , Separator = .
    Config Clock = Soft
    Date$ = "21/12/08"
    Time$ = "19:15:01"
    
    Dim Secalt As Byte
    Dim Test As Single
    
    Do
    
    'If Secalt <> _sec Then
       Cls
        Locate 1 , 1
        Lcd Date$
    
       Locate 2 , 1
     Lcd Time$
       Secalt = _sec
    'End If
    
    'nur zum testen
    Incr Test
    Locate 1 , 10
        Lcd Test
    
    Waitms 250
    
    Loop
    ...

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.05.2007
    Beiträge
    202
    Hallo Tobias,

    da wird ja ein Timer benutzt. Schon mal ein "Enable Interrupts" probiert?
    Gruß, Stefan

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress