- 12V Akku mit 280 Ah bauen         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Uhr an Timer2 vom Atmgea32 bei 16.000.000Hz

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Du weißt schon, dass aktuell die Version 2.0.7.6 raus ist, also 3 Generationen weiter.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Ich habe den Code jetzt trotz des angeblichen Fehlers geflasht. Nun macht mein Controller (oder ein anderes Bauteil) extrem merkwürdige Geräusche (so eine Art brummen).

    Werde gleich den stark vereinfachten Code mal versuchen hier ins Board zu bekommen.

    Viele grüße
    Dominik

    Edit: Oh, das wusste ich nicht. Sollte ich die. Erosion updaten?
    Bisher hatte i h nämlich nie Probleme mit der Version

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Nimm mal anstelle von Compare2 OC2, das geht.

    - - - Aktualisiert - - -

    Zitat Zitat von Dominik009 Beitrag anzeigen
    Edit: Oh, das wusste ich nicht. Sollte ich die. Erosion updaten?
    Bisher hatte i h nämlich nie Probleme mit der Version
    Würde ich definitiv machen, sonst läufst du immer wieder in solche Situationen, wo dir alle sagen, dass es bei ihnen läuft.

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Ok, Bascom meldet keinen Fehler mehr. Irrlicht sollte ich trozdem bald mal updaten.

    Sobald das Programm auf dem mega32 ist fängt der laut an zu Brummen (zumindest glaube ich, dass du Brummen. Im Mega kommt). Irgendwas ist da falsch.

    - - - Aktualisiert - - -

    So, hier ist mal der Code. Hab ihn auf ne CD gebrannt und jetzt von nem anderen Rechner hochgeladen:

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    
    ' Variablen für die Uhrzeit
    Dim Hilfswert_sekunden As Byte
    Dim Sekunden As Byte
    Dim Minuten As Byte
    Dim Stunden As Byte
    Dim Wochentag As Byte
    Wochentag = 1
    
    
    
    Led Alias Portc.0
    Config Led = Output
    
    Dim Z As Single
    Dim I As Long
    Dim N As Integer
    Dim Ton As Integer
    
    
    
    ' Timer 2 für die Uhrzeit einstellen und starten
    Config Timer2 = Timer , Prescale = 1024 , Clear_timer = 1 , Compare = Toggle
    Compare2 = 124
    On Oc2 Isr_von_timer2:
    
    Enable Compare2
    
    
    'Enable Timer2
    'On Timer2 Isr_von_timer1
    'Enable Interrupts
    'Load Timer2 , 250
    'Start Timer2
    
    
    
    
    
    I = 0
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    Print
    Print "**** RN-Control 1.4 *****"
    Print "Das neue Experimentier- und Roboterboard"
    Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
    Print
    
    
    
    Do
    
    
    
    If Hilfswert_sekunden = 125 Then
    Print ; Wochentag ; " - " ; Stunden ; ":" ; Minuten ; ":" ; Sekunden ; ""
    Incr Sekunden
    Hilfswert_sekunden = 0
    Toggle Led
    End If
    
    If Sekunden = 60 Then
    Sekunden = 0
    Incr Minuten
    End If
    
    If Minuten = 60 Then
    Minuten = 0
    Incr Stunden
    End If
    
    If Stunden = 24 Then
    Stunden = 0
    Incr Wochentag
    End If
    
    If Wochentag = 8 Then
    Wochentag = 1
    End If
    
    
    
    Loop
    
    
    
    
    ' Funktion die mit Timer 2 verbunden ist
    ' Ist nötieg um aktuelle Uhrzeit auszugeben
    Isr_von_timer2:                                            
    Incr Hilfswert_sekunden
    
    
    
    
    Return
    
    End

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Dominik,
    der Lautsprecher brummt, weil du den an PortD.7 dran hast, wo auch das Signal OC2 raus kommt. Und das hat 62Hz.
    Da du den Ausgang aber gar nicht benötigst, konfiguriere den Timer so:
    Config Timer2 = Timer , Prescale = 1024 , Clear_timer = 1
    Außerdem fehlt bei dir das globale Freigeben der Interrupts
    Enable Interrupts

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Ok, werde ich gleich machen. Mit dem Lautsprecher hast dur recht, da hab ich jetzt gar nicht dran gedacht-
    Und nochmal vielen Dank für die Hilfe.

    Das Compare = Toggle kann ich dann bei der Timerkonfiguration weglassen, oder?

    Es sollte dan so aussehen:

    ' Timer 2 für die Uhrzeit einstellen und starten Config Timer2 = Timer , Prescale = 1024 , Clear_timer = 1 Compare2 = 124 On Oc2 Isr_von_timer2
    Enable Interrupts


    Ich werde das ganze gleich mal testen gehen

    Viele Grüße
    Dominik

  7. #17
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Ich habe dir hier mal eine leicht modifizierte Version angehangen. Die läuft sicherer, besonders wenn dein Programm mal größer wird. Schau dir die Unterschiede mal an und überlege, was sie bewirken.
    Code:
    $regfile = "m32def.dat"
    $framesize = 40
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    
    ' Variablen für die Uhrzeit
    Dim Hilfswert_sekunden As Byte
    Dim Sekunden As Byte
    Dim Minuten As Byte
    Dim Stunden As Byte
    Dim Wochentag As Byte
    Wochentag = 1
    
    Led Alias Portc.0
    Config Led = Output
    
    Dim Z As Single
    Dim I As Long
    Dim N As Integer
    Dim Ton As Integer
    Dim Sekunden_flag As Bit
    
    
    ' Timer 2 für die Uhrzeit einstellen und starten
    Config Timer2 = Timer , Prescale = 1024 , Clear_timer = 1 ', Compare = Toggle
    Compare2 = 124
    On Compare2 Isr_von_timer2
    Enable Compare2
    
    I = 0
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    Print
    Print "**** RN-Control 1.4 *****"
    Print "Das neue Experimentier- und Roboterboard"
    Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
    Print
    
    Enable Interrupts                                           'normalerweise erst kurz vor der Hauptschleife
    Do
       If Sekunden_flag = 1 Then                                'jetzt hast du eine Sekunde Zeit für alles zu verarbeiten
          Reset Sekunden_flag
          Print ; Wochentag ; " - " ; Stunden ; ":" ; Minuten ; ":" ; Sekunden ; ""       'sonst könnte es hier schon knapp werden
          Incr Sekunden
          Toggle Led
          If Sekunden = 60 Then
             Sekunden = 0
             Incr Minuten
             If Minuten = 60 Then
                Minuten = 0
                Incr Stunden
                If Stunden = 24 Then
                   Stunden = 0
                   Incr Wochentag
                   If Wochentag = 8 Then
                      Wochentag = 1
                   End If
                End If
             End If
          End If
       End If
    Loop
    
    End
    
    ' Funktion die mit Timer 2 verbunden ist
    ' Ist nötieg um aktuelle Uhrzeit auszugeben
    Isr_von_timer2:
       Incr Hilfswert_sekunden
       If Hilfswert_sekunden = 125 Then
          Hilfswert_sekunden = 0
          Set Sekunden_flag
       End If
    Return

  8. #18
    RN-Premium User Stammmitglied
    Registriert seit
    26.01.2005
    Ort
    Leipheim / Donau
    Beiträge
    53
    Hallo Dominik009,

    Timer2 ist optimal für einen Uhrenquarz an TOSC1 und TOSC2,
    du teilst den Takt durch 128 gibt den OVL Interrupt frei und lässt den Timer einfach loslaufen
    und bei jedem Überlauf wird ein Interrupt ausgelöst und 1 Sekunde ist abgelaufen du musst nur eine Variable incrementieren.
    Ich muss dazu sagen ich mache sowas immer im Assembler, ich weis nicht wie sich die Laufzeiten in Bascom verlängern.
    Mehr info findest du im Datenblatt unter Timer2.

    nfg ihle

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Vielen Dank für den Code!
    Auch vielen Dank für den Tipp mit dem Quarz. Kann ich den weiterhin den normslen 16000000hz Quarz nehmen und den Uhrenabsatz zusätzlich? Werde ich bei meinem nächsten Projekt mal testen, habe jetzt leider keinen passenden Quarz und extra einen einzeln bestellen ist auch blöd


    @for_ro,
    Das Programm läuft dank deinem code, jedoch zu langsam.
    Ich würde sagen, gefühlt läuft sie etwa halb so langsam wie ne richtige Uhr, also +eine Sekunde auf dem Mega sind +2 Sekunden in echt
    woran kann das liegen?

    Wenn ich richtig rechne stimmt im Code evtl. Was nicht.
    16000000/1024/2/125 = 62,5
    also muss ich entweder in die ISR 62,5 packen, was logischerweise nicht geht.

    Also muss 62,5-1=61,5
    und das ändert an der Geschwindigkeit der Uhr leider nichts

    Gruß
    Dominik
    Geändert von Dominik009 (20.12.2013 um 18:26 Uhr)

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Dominik,
    bist du sicher, dass dein Controller von einem 16MHz Quarz angetrieben wird und nicht vom internen 8MHz Oscillator?

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Problem mit Alarm bei Selbstbau-Uhr
    Von joho63 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 23.11.2013, 13:15
  2. 2.000.000 °C per Laser
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 2
    Letzter Beitrag: 12.02.2012, 20:10
  3. Akku mit 1.000.000 Ladezyklen?
    Von Kobolt im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 12.11.2011, 19:25
  4. Probleme mit Timer2 bei AtMega644
    Von sebi87 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 29.09.2011, 07:58
  5. Timer2 als interne Uhr im powerdown Modus
    Von slavezero im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 07.04.2007, 11:01

Berechtigungen

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

Solar Speicher und Akkus Tests