-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 30

Thema: Softwareseitige UHR ?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360

    Softwareseitige UHR ?

    Anzeige

    Ist es möglich bspw. Über Timerinterrupt eine (auch ziemlich ungenaue) Uhr (mit Datum) in Bascom zu programmieren???
    (Quarz 16 MHz)

    Ich spiele jeden 2. Tag die Uhrzeit neu via RS in das Modul ein.

    Mfg
    Tobi

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    Hallo!

    Jup, Das ist möglich... Nur wird das mit nem 16MHz Quarz schwierig.
    Ich verwende zB ein 14,7456 MHz-Quarz.
    das ist im binärsystem eine gerade Zal´l..
    14745600 / 1024 = 14400.

    Dann muss der Timer bis 143 Zählen und dann den Interrupt auslösen.
    In diesem lasse ich dann diese Funktion ausführen:


    Code:
    //  -=> Timer Uhr <=-
    void TIMER_clock( void ){
    	
    	TIMER_percent++;
    
    	if( TIMER_percent >= 100 ){
    		TIMER_percent = 0;
    		TIMER_second++;
    	}
    	
    	if( TIMER_second >= 60 ){
    		TIMER_second = 0;
    		TIMER_minute++;
    	}
    	
    	if( TIMER_minute >= 60 ){
    		TIMER_minute = 0;
    		TIMER_hour++;
    	}
    	
    	if( TIMER_hour >= 24 ){
    		TIMER_hour = 0;
    	}
    }
    Ich programmiere zwar nicht in Basic, aber ich denke dieser kurze
    C-Code ist durchaus zu verstehen. Wenn nicht, sag bescheid...
    Gruß,
    Franz

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    Also
    16000000 / 1024 = 15625

    leider kenn ich mich mit dem Basic nur so gut aus:
    Variablen deklarieren, Pórts deklariern, if, for, while...

    (Das Buch kommt erst noch )


    Mfg
    Tobi

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    nagut.. wenn du den 16bit Timer nimmst, dann kannst du ihn jetzt bis 15624 laufen lassen (immmer 1 weniger, weil er ja bei 0 beginnt).
    kommt aber dann im sekundentakt.

    Achja, und wenn du wirklich eine genaue zeit brauchst, dann würd ich am eingang für das zweite quarz ein Uhrenquarz einbauen.

    Quarze, mit solch komischen werten wie 7,372800MHz sind im binärsystem eine gerade zahl. deshalb kommt auch bei mir 14400 raus. und mir stehen hundertstelsekunden zur verfügung.

    Aber uhrenquarze sind wesentlich besser geeignet....
    die haben auch 32768 Hz.

    PS: Wenn du schon anfängst zu programmieren, würd ich gleich mit C anfangen...
    Gruß,
    Franz

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    Also mir reicht eine relativ ungenaue Urzeit +-5 Minuten würde ich sogar noch aushalten. Mein Chip ist ein ATmega128 auf einer fertigen Platine.

    Zu PS: Mit Basic kenn ich mich halt schon ein bissel aus und C kann dann ja immer noch kommen. Ich mach ja das Atmel zeugs nicht Tag-täglich sondern nur bei speziellen Projekten. (Bin eigentlich für die PC Software Win 32 via Delphi zuständig )


    Mfg
    Tobi

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    Wenn ich mal kurz pushen darf

    Ich benötige nur den Source der den Timer so initialisiert das er jede Sekunde einen Interrupt auslöst. Das was in dem Interrup passiert schreib ich selber.

    Mfg
    Tobi

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Im Wiki steht schon der passende Code dafür:
    http://www.roboternetz.de/wissen/ind...scom_und_Timer

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    Zitat Zitat von uwegw
    Im Wiki steht schon der passende Code dafür:
    http://www.roboternetz.de/wissen/ind...scom_und_Timer
    also ich hab jetzt mal folgendes

    Code:
    Config Timer1 = Timer, Prescale= 15624      ‘die 15624  müssen doch in den Prescaler oder?!?
     Enable Timer1            	        
     On  Timer1  AddSecond	        
     Enable Interrupts	  
     
     Do
      
     Loop
     End
     
     AddSecond:			
      second = second + 1
     Return

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Nee, der Prescaler kann nur ganze Vielfache von 2 annehmen. Er bestimmt, wie weit der Quarztakt runtergeteilt wird, bevor er den Timer hochzählt. Deine 15000nochwas müssen entweder in ein Compare-Register [dann könntest du aber z.B. niicht mehr alle PWM-Ports nutzen], oder du lädst damit bei jedem Überlauf das Zählregister neu. Datenblatt lesen empfohlen!

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    Ich greif noch mal auf diesen beitrag zurück den ich versteh nur Bahnhof:
    nagut.. wenn du den 16bit Timer nimmst, dann kannst du ihn jetzt bis 15624 laufen lassen (immmer 1 weniger, weil er ja bei 0 beginnt).
    kommt aber dann im sekundentakt.

    Achja, und wenn du wirklich eine genaue zeit brauchst, dann würd ich am eingang für das zweite quarz ein Uhrenquarz einbauen.

    Quarze, mit solch komischen werten wie 7,372800MHz sind im binärsystem eine gerade zahl. deshalb kommt auch bei mir 14400 raus. und mir stehen hundertstelsekunden zur verfügung.

    Aber uhrenquarze sind wesentlich besser geeignet....
    die haben auch 32768 Hz.

    PS: Wenn du schon anfängst zu programmieren, würd ich gleich mit C anfangen...

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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