- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 32 von 32

Thema: Anfänger ohne Kenntnisse aber mit Interesse

  1. #31
    Neuer Benutzer Öfters hier
    Registriert seit
    21.09.2005
    Ort
    Eupen
    Alter
    41
    Beiträge
    16
    Anzeige

    Praxistest und DIY Projekte
    In das Handbuch habe ich schon oft geschaut...
    Aber über TIMER steht da nix drin...
    Und wenn ich ehrlich bin verstehe ich nicht wirklich was in deinem Programm steht...
    Habe es mal versucht und bei mir tut sich nichts...

    Gruss Dave
    Wer bis zum Hals in der Scheisse steckt...
    ... der sollte den Kopf nicht hängen lassen!!!
    =D>

  2. #32
    Benutzer Stammmitglied
    Registriert seit
    25.08.2005
    Ort
    Berlin
    Beiträge
    53
    Für den Timer sieh Dir die Funktion Sleep() in der asuro.c mal an.
    Code:
    /* uses 72kHz timer => Sleep(x) = x/72kHz [sec] */
    void Sleep(unsigned char time72kHz) {
    	count72kHz = 0;
    	while (count72kHz < time72kHz);
    }
    Damit der Timer funktioniert wird alle 27.7777 ms (1/36KHz) ein Interrupt ausgelöst (SIG_OUT_COMPARE2) und die Variable count72KHz um eins erhöht.

    Code:
    volatile unsigned char count72kHz;
    
    /* uses timer2 (36kHz for IR communication */
    /* counts falling and rising edge => 36kHz*2 = 72kHz */
    SIGNAL (SIG_OUTPUT_COMPARE2) {
    	count72kHz ++;
    }
    Der Code funktioniert jetzt habe den Fehler gefunden.
    Der Asuro fährt jetzt ungefähr 10Sekunden und bleibt dann stehen.

    Code:
    #include "asuro.h"						// Header für die Funktionen MotorSpeed() Sleep()
    
    //Prototype
    void warte(unsigned int zeit);     	// Deklaration für die Funktion warte() in mili Sekunden
    
    int main (void)						// int ist der Rückgabewert der Funktion main
    {
     Init();								// Damit der Asuro einwandfrei startet
    
     MotorSpeed(180,180);					// Motor links und rechts läuft mit 180   max. 255
     warte(10000);                       	// warte 10 Sekunden lang
     MotorSpeed(0,0);                  		// Asuro bleibt stehen 
     while(TRUE);                        	// endlosschleife --> Mach garnix mehr	(Programm Ende)
     return 0;								// Rückgabewert der Funktion main ist 0
    }
    
    void warte(unsigned int zeit)			// Funktion warte()
    {
     while(zeit--)							// zähle rückwärts bis der Wert 0 ist
     {
      Sleep(72);							// Funktion Sleep() aus der Asuro.h 
     }
    }
    OK, ich hofe das reicht als Erklärung.

    Gruß Winne
    Angehängte Dateien Angehängte Dateien

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

Labornetzteil AliExpress