1 / 10

Flera saker samtidigt?

Flera saker samtidigt?. /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */. Först en lysdiod ….

blaine
Télécharger la présentation

Flera saker samtidigt?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */ William Sandqvist william@kth.se

  2. Först en lysdiod … while(1) { /* Blink1: 1s ON - 1s OFF */switch(State1) {case 0: Blink1 = ON; Time1++;if( Time1 == 10 ) { State1 = 1; Time1 = 0; }break;case 1: Blink1 = OFF; Time1++;if( Time1 == 10 ) { State1 = 0; Time1 = 0; } } delay10(10); /* 0,1 sek delay */ } William Sandqvist william@kth.se

  3. Sedan en annan lysdiod … while(1) { /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */switch(State2) {case 0: Blink2 = ON; Time2++;if( Time2 == 2 ) { State2 = 1; Time2 = 0; }break;case 1: Blink2 = OFF; Time2++;if( Time2 == 2 ) { State2 = 2; Time2 = 0; }break;case 2: Blink2 = ON; Time2++;if( Time2 == 10 ) { State2 = 3; Time2 = 0; }break;case 3: Blink2 = OFF; Time2++;if( Time2 == 10 ) { State2 = 0; Time2 = 0; } } delay10(10); /* 0,1 sek delay */ } William Sandqvist william@kth.se

  4. Varför inte båda? while(1) {/* Blink1: 1s ON - 1s OFF */switch(State1) {case 0: ... ; break;case 1: ... ; } /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */switch(State2) {case 0: ... ; break;case 1: ... ; break; case 2: ... ; break; case 3: ... ; } delay10(10); /* 0,1 sek delay */ } William Sandqvist william@kth.se

  5. En makalös manick? Lysdiod1, Lysdiod2, Kaffeautomat, Motor …Alla kursens Moore-automater på en och samma gång! manick.c Programmet är bara på 300 kodrader.( Frågan är vad man ska ha det till ? ) Årets Julklapp? William Sandqvist william@kth.se

  6. State machines State machines/Tillståndsmaskiner/Moore-automater är således mycket användbara hjälpmedel för att programmera ”parallella” processer för små microcontrollers. Tips! Observera att B Knudsen lägger ut effektivare kod för switch() – caseän förif() – else if() – elseså använd alltid switch-satsen! Många komersiella programvaror bygger på State machines … William Sandqvist william@kth.se

  7. Grafiska programspråk, LabView do { Blink != Blink; delay10(100); /* 1 sek delay */ } while(!Stop ); William Sandqvist william@kth.se

  8. Realiser Realizer, ett grafiskt programmeringsverktyg för små processorer, tex. PIC. En state machine ritad med Realizer. PIC-kod genereras sedan direkt. William Sandqvist william@kth.se

  9. B. Knudsen Kan man verkligen skriva ”multitask program” för en 8 bitars processor som bara har en ynkligt liten hårdvarustack? B Knudsen har ett ”udda” verktyg, Leanslice – som ger multitasking med hjälp av anrop till en ”dold statemachine”. Den som är intresserad läser: Leanslice manual William Sandqvist william@kth.se

  10. William Sandqvist william@kth.se

More Related