- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 45

Thema: Multitasking

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Anzeige

    E-Bike
    Was man machen kann,
    die Hardwarefunktionen laufen zum Teil autonom.
    Du kannst z.B. ein Zeichen in die UART schreiben und
    Dein Programm dann weiter laufen lassen, bis das nächste Zeichen raus muss.
    Wenn Du den Print befehl für ne Zeichenkette verwendest beibt dein Prozi
    bis zur Abarbeitung sonst an der Stelle stehen.
    Schlussendlich kan der Prozi aber immer nur eine Sache auf Einmal ausführen, das gilt aber auch für die momentanen PCs genauso.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    Genau....

    Es ist echt sinnvoll, die Hardware-Zusatzfunktionen der µC zu nutzen.
    Diese laufen dann wirklich parallel und eigenständig.

    Wobei man beim UART auch meist mit dieser Funktio arbeitet:
    Code:
    void UART_transmit(uint8_t c){ 
       while(!(UCSRA & (1<<UDRE)));
       UDR = c; 
    }
    Beim while wartet er ja auch bis er gesendet hat.....

    Oder auch beim SPI:
    Code:
    uint8_t SPI_transmit( uint8_t data ){
       SPDR = data;
       while( !( SPSR & (1<<SPIF) ) );
       return SPDR;
    }
    Gruß,
    Franz

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Wobeis aber auch so schöne Interrupts gibt,
    bei der UART z.B. der TXC, warum die verkommen lassen?
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    OK, das stimmt... aber das macht das Ganze schon ziemlich happig zum Proggen... wenn man mit Protokollen arbeitet....
    Gruß,
    Franz

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.09.2005
    Ort
    am Bodensee
    Beiträge
    217
    weil man nicht immer Interrupts brauchen kann manchmal sind diese eher Störend .. gibt viele Anwendungen und grad wenn ne DualUart hast ... ist das ganze bisschen Gehässig .. da lieber ne while .. (kommt auf die Übertragugnsrate und dichte an) darfst halt immer nur 1 Byte senden dann schaun ob bei der andern UART was is und blah ..

    Verabschiedet euch von Multitasking genauso wie von Echtzeit .. aber gerade dein Problem mit den LEDs ist kein problem .. izaseba hat es dir schön erklärt

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    merker sind interrupts oder wie kann ich dass verstehen!?

    MFG
    Michael

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    nö...

    du setzt zB ein bit auf 1. Und der Timer setzt es nach einer bestimmten Zeit auf 0.

    Und wo anders überwächste du das Bit und lasst die LED leuchten solange das Bit 1 ist.


    Merker ist einfach eine Variable...
    Gruß,
    Franz

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    versteh dich nicht ganz !! ^^

    MFG
    Michael

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    Kein Problem...

    Also, sagen wir "merker" sei eine Globale Variable.

    Diese Timerfunktion wird Pro Sekunde einmal ausgeführt:
    void TIMER( void ){
    if( merker ){ merker = 0; }else{ merker = 1; }
    }


    Bedeutet, dass die Varible "merker" im sekundentakt 0...1....0...1 annimmt.


    Dann kann man irgendwo anders im hautpprogramm sagen:

    if(merker){ PORTA = 0xFF; }else{ PORTA = 0x00; }


    Folglich Blinken die LEDs an PortA im Sekundentakt
    Gruß,
    Franz

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    kannst du es mir in assembler aufschreiben diesen code den du in C geschrieben hast?
    Bitte

    Danke

    MFg
    Michael Mitteregger

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test