Coder Social home page Coder Social logo

duetimer's People

Contributors

amimaro avatar chrishakim avatar colombod avatar ecdr avatar feilb avatar firepick1 avatar ivankravets avatar ivanseidel avatar jockm avatar jvangael avatar marc1706 avatar mrshu avatar pklaus avatar ppescher avatar roman3349 avatar somerandomguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

duetimer's Issues

about getperiod();

Hi all, i am the beginner of arduino world. I want to measure a nano second pulse width for my application. After studying the literature i come to know the solution is DueTimer library. In this library i can measure the pulse width using getperiod() function. But i don't know how to use this function also i did't get any example code using this function. Is it like pulseIn command or something else. Please give the details of syntax of getperiod function and brief details about the time measurement.
Thank you in advance.

How can I create a class with its own timer

I need a one class , have a timer. in class method can start, stop timer.

#include <DueTimer.h>

void RGBmatrixPanel::begin(void) {
   Timer3.attachInterrupt(updateDisplay);
   Timer3.start(250);
} 
void RGBmatrixPanel::updateDisplay() {
    if(something doing){
          Timer3.stop();
    }
}

But i get error on arduinodue

E:\kutuphane\belgelerim\Arduino\libraries\RGB-matrix-Panel-master\RGBmatrixPanel.cpp: In member function 'void RGBmatrixPanel::begin()':
E:\kutuphane\belgelerim\Arduino\libraries\RGB-matrix-Panel-master\RGBmatrixPanel.cpp:86:41: error: no matching function for call to 'DueTimer::attachInterrupt(<unresolved overloaded function type>)'
     Timer3.attachInterrupt(updateDisplay);
                                         ^
E:\kutuphane\belgelerim\Arduino\libraries\RGB-matrix-Panel-master\RGBmatrixPanel.cpp:86:41: note: candidate is:
In file included from E:\kutuphane\belgelerim\Arduino\libraries\RGB-matrix-Panel-master\RGBmatrixPanel.h:26:0,
                 from E:\kutuphane\belgelerim\Arduino\libraries\RGB-matrix-Panel-master\RGBmatrixPanel.cpp:3:
E:\kutuphane\belgelerim\Arduino\libraries\DueTimer-master/DueTimer.h:84:12: note: DueTimer& DueTimer::attachInterrupt(void (*)())
  DueTimer& attachInterrupt(void (*isr)());

how to use in a class duetimer library?

Improvement of examples

The examples I think could be improved to include more than basic timer interrupt on a periodic basis, such as measurement of frequency or period, arbitrary waveform generation or quadrature decoding.
Anyway, thanks a lot for your job.

Bug with callback period?

Hi, I am using Arduino DueTimer in a school project but is having a problem. I use the interrupt created from a timer, however myHandler does have a lot of operations and this produce a bug I think. The bug is that the interrupt callback is called with a period time less then the given. I send an example when the callback function does have a delay in it to demonstrate the error. Note that the delay is much smaller then the interrupt period.

Would be realy grateful if you could look at this bug or explain for me why its not working as I think it would.

link:
https://drive.google.com/file/d/0B4hLj0ggOnuZaC1XR2tfcmV1WkU/view?usp=sharing

Best regards,
Alexander Andersson

TC_FindMckDivisor

What was the problem with the sam library provided TC_FindMckDivisor function and why did you need your own function, bestClock?

uint8_t DueTimer::bestClock(double frequency, uint32_t& retRC){

getAvailable() assignment.

Hi,

I've been using your library a lot! Thanks so much.

I have recently encountered an issue with the library.

I have a project that involves a bunch of different objects and libraries. Several of the different objects need to make use of timers. I need to be able to get a timer, name it, and hold on to it for a period of time, and I need to have a number of different objects do so that they all have access to their assigned timer.

Currently, the getAvailable() function will keep returning the same timer until that timer is started, so it is not possible to reserve a timer for use later. Also, if you run out of timers, then getAvailable() doesn't notify you of the error... it just returns timer0... which is a possible source of big trouble if timer0 is already in use.

My current solution is simply to hard-code timer numbers into each instance... but it would be much nicer to be able to pickup a timer when needed/as needed and then release them again without having to assign specific timers to each object.

Thanks,

Bill

"#ifdef __arm__" of DueTimer.h is not working (anymore)?

Hello. In my Projekt the DueTimer.h is now working because somehow the #ifdef __arm__ is not found.
After a bit of search i found out that in my sam.h which is included from in chip.h (and chip.h is included in Arduino.h) is no __arm__ defined. Mybe they changed it in the current version a bit.. idk. So in sam.h is written:

#define part_is_defined(part) (defined(__ ## part ## __)) ......
#define SAM3X8 ( \
    part_is_defined( SAM3X8C ) || \
    part_is_defined( SAM3X8E ) || \
    part_is_defined( SAM3X8H ) )

So after i changed the #ifdef __arm__ to #if defined (__arm__) || defined (__SAM3X8E__) in your DueTimer.h it works fine again.
Maybe you should have a look on this issue^^.

By the way... Thanks a lot for your work! Its a realy great Lib :)

questions about DueTimer library

Hi, I wanna use this library on my new arduino due board. I'm not sure on which arduino IDE version can this library be used? (Now I'm using 1.6.2 and it do not support due board.)

The second question is, if I use timer.stop(), then use timer.start(), will the timer count from zero again, or will it continue to count from where it was stopped? For example, if I set the period to 500ms, and I stop it at 200ms, then start it again, will it send interrupt after 300ms? Because in Timer1 library used for mega board, if I use timer.start(), it continues counting; and if I use timer.restart(), it count from zero.

The third question is, do all the 8 timers have the same resolution? What's the minimum period can I set? And what's the max number before they overflow?

Thank you.

Reading the current counter value

I had an application where I needed to read the current counter value. I added this function to the class.
uint32_t DueTimer::getCV(void) const{
uint32_t result;
// Get current timer configuration
Timer t = Timers[timer];
result=TC_ReadCV(t.tc,t.channel);
return result;
}

The addition to the Header file in the public area is
uint32_t getCV(void) const;

It seems to work ok.

Faster setFrequency

Some users might want to use a "raw" set frequency method, to speed up things.

I received some requests and one was from Constantino, that made something similar:

void updateTimer(Tc *tc, uint32_t channel, uint32_t frequency)
{
    uint32_t rc = (float) VARIANT_MCK / (float) frequency / 128.0;
    TC_SetRA(tc, channel, rc/2); //50% high, 50% low
    TC_SetRC(tc, channel, rc);
    TC_Start(tc, channel);
    Serial.println("new freq adjusted");
}
void updateTimer1(uint32_t frequency)
{
    updateTimer(TC0, 0, frequency);
}

This is just a sketch of him, but the idea is the same.

Perhaps the method could be called setFrequency(Tc *tc, uint32_t frequency), the same as it is actually.

What happend if Callback take longer...

Hello!
First of all thx for the great library it safes me a lot of time.

What happend if the callback function take longer than the frequent is set to?
For instance: I set the frequence of the timer to 3HZ. In my callback I wait for something (while readingPin is HIGH). Therefore what happens if the callback code take longer than 1/3 second?
When I tried to simulate such situation all instanced Timers don't work anymore.

Here is an example
//start countdown with independed timer
Timer0.attachInterrupt(countdownHandler).setFrequency(1).start();
Timer1 //other timer for
....

void sequenceHandler()
{
digitalWrite(pinEOC, HIGH); //start loading

while (digitalRead(pinEOC) != HIGH)
{ //waiting for end of charge (normally 10microseconds) -->PROBLEM
}
... //do other stuff
}
}

My current solution is to monitor the time and interrupt it if it take longer than the frequency but it's not pretty :(

Fix bug when using Servo library

Since DueTimer and Servo make use of Interrupts, both of them cannot handle interrupts.

Possibilities:

  • Implement custom Servo library.
  • "Uninplement" Timers used by Servo library

Callbacks

Please enable Callbacks, so that timer values can be changed, while the counters are running.

While in an interrupt routine, I cannot even stop and restart a timer with a new value. This makes it impossible to synchronize the timers to another event..

conflict with IRremote2 library, how do I resolve this?

I'm using IRremote2 in my project: https://github.com/enternoescape/Arduino-IRremote-Due
However, the following error was encountered when compiling:

Arduino-IRremote-Due-master\IRremote2.cpp.o: In function TC3_Handler': C:\Users\Lab\Documents\Arduino\libraries\Arduino-IRremote-Due-master/IRremote2.cpp:386: multiple definition ofTC3_Handler'
DueTimer\DueTimer.cpp.o:C:\Users\Lab\Documents\Arduino\libraries\DueTimer-master/DueTimer.cpp:281: first defined here
collect2.exe: error: ld returned 1 exit status
Error compiling.

Timer Pins routed to the Arduino Due Board

DueTimer's Readme states:

Prefer to use Timer3, Timer4 and Timer5 since they have no connection to hardware pins.

I don't quite get this. Which pins are you talking about? The timer (counter) input pins as I read Atmel's datasheet are mostly routed to headers on the Arduino Due board (with the exception of T6 and T7):

Timer Pin Name SAM3X Pin Pin of Arduino Due Board
TCLK0 PB26 Digital Pin 22
TCLK1 PA4 Analog In 5
TCLK2 PA7 Digital Pin 31
TCLK3 PA22 Analog In 3
TCLK4 PA23 Analog In 2
TCLK5 PB16 DAC1
TCLK6 PC27 n/a
TCLK7 PC30 LED "RX"
TCLK8 PD9 Digital Pin 30

My sources: Section 37.5.1 I/O Lines in the Atmel SAM3X Datasheet and Arduino Due's SAM3X Pin Mapping.

It would be great if this could be clarified or corrected. Thanks!

Timer is not accurate when the time set below 1ms

when time set below 1ms , time is not accurate
timer set actual ouput
1000ms 1080ms
0.9ms 1014ms
0.8ms 0.84ms
0.5ms 0.7ms
0.1ms 0.2ms

This My test script . It is a PWN Wave.
#include <DueTimer.h>
#include "variant.h"
int Pump1=11;
int Pump1_High_Time=100;
int Pump1_Low_Time=100;

void ontime_pump_high(){
digitalWrite(Pump1, HIGH);
Timer4.stop();
Timer4.attachInterrupt(ontime_pump_low);
Timer4.start(Pump1_High_Time);
}

void ontime_pump_low(){
digitalWrite(Pump1, LOW);
Timer4.stop();
Timer4.attachInterrupt(ontime_pump_high);
Timer4.start(Pump1_Low_Time);

}

void setup() {
// put your setup code here, to run once:
pinMode(Pump1, OUTPUT);
digitalWrite(Pump1, LOW);
Timer4.attachInterrupt(ontime_pump_high);
Timer4.start(10*1000) ;
}

void loop() {
// put your main code here, to run repeatedly:

}

Blocking Interrupt

Hi, I'm using DAC to generate a low frequency sine with a handler.
I'm also using another interrupt to update LCD.

The problem is that, when LCD calls, the DAC stop cycling and stay constant.
How can I build a blocking interrupt?

void atualizaLCD(){
    //lcd.clear();
    lcd.setCursor(0,0); //Start at character 0 on line 0
    lcd.print(strOnda[wave0]);
    lcd.setCursor(0,1);
    lcd.print(strOnda[wave1]);

    // Imprime amplitude com uma casa
    lcd.setCursor(4,1);
    analogSync = analogRead(A6);
    angleSync = analogSync*180.0/1023.0;
    angleSync_i = analogSync*maxSamplesNum/511.5;
    lcd.print( angleSync, 0 );
}

void ondaADC(){
  i_wav++;
  if(i_wav == maxSamplesNum)  // Reset the counter to repeat the wave
    i_wav = 0;
  analogWrite(DAC0, waveformsTable[wave0][i_wav]);  // write the selected waveform on DAC0
  analogWrite(DAC1, waveformsTable[wave1][i_wav]);  // write the selected waveform on DAC1
}

void setup(){
    analogWriteResolution(12);  // set the analog output resolution to 12 bit (4096 levels)
    Timer0.attachInterrupt(ondaADC).setFrequency((Freq_wav * 120)).start(); // 100 * 120 points = 1200Hz
    Timer1.attachInterrupt(atualizaLCD).setFrequency(1).start();
}

DueTimer and interrupt priority

Hi,
How am I able to set the interrupt priority for a timer above the USB-communication timer. I'm just asking because I have a very simple program which uses the DueTimer with timer6 to set an puls interval time around 1msec. Within this interval I create pulses with a width of 50usec. Tried it with two interrupt, but the ISR code made it almost impossible to get the accuracy of 1usec. So just a 'wait until ready' is now used within the DueTimer callback function to set/clear the puls itself.
This is very great and works like a charm!
But just now and then I get some puls shift in time because the ISR-callback is delayed and I'm guessing, but it must be the USB interrupt, because I'm not utilizing any other ISR.
It would be great if the DueTimer library was able to set the priority for every timer!

#define CycleTimer_s                Timer6

void setup() 
{
    // Some other init stuff
    
    // Setup puls timer:
    CycleTimer_s.attachInterrupt(CycleHandler);
    CycleTimer_s.start(static_cast<WDouble64>(m_PulsConfig_s.Cycle_u32));//DEFAULT_PULS_CYCLE_TIME) );
}

void CycleHandler(void)
{
    WU16 Cntr_u16 = 0;

    if (m_MainStatus_e == MAIN_TEST_ACTIVE)
    {
        if (PulsActive_b)
        {
            FastDigWriteOn(OUT_HS_Plus);
            FastDigWriteOff(OUT_HS_Min);
            FastDigWriteOn(OUT_LS_Plus);
            FastDigWriteOff(OUT_LS_Min);

            do
            {
                // __asm__("nop");
                __asm__("nop");
                __asm__("nop");
                __asm__("nop");
            } while (++Cntr_u16 < 3);
        }
        else
        {
            FastDigWriteOff(OUT_HS_Plus);
            FastDigWriteOn(OUT_HS_Min);
            FastDigWriteOff(OUT_LS_Plus);
            FastDigWriteOn(OUT_LS_Min);
        }

        // No delays: 2,543 usec!
        // 2,616 usec: cntr = 6; nops 1
        // 3,068 usec: cntr = 6; nops 2
        // 2,599 usec: cntr = 5; nops 1
        // 2,979 usec: cntr = 5; nops 2

        // 2,599 usec: cntr = 1; nops 2 -> loop = 50nsec
        // 2,737 usec: cntr = 3; nops 3 -> loop = 200 nsec
        // 2.676 usec: cntr = 4; nops 2 -> loop = 140 nsec
        // 3,011 usec: cntr = 4; nops 3 -> loop = 500 nsec
        // 3,060 usec: cntr = 4; nops 4 -> loop = 550 nsec
        // 3,391 usec: cntr = 8; nops 4 -> loop = 850 nsec

        do
        {
            // __asm__("nop");
            __asm__("nop");
            __asm__("nop");
            __asm__("nop");
        } while (++Cntr_u16 < 4);

        delayMicroseconds((m_PulsConfig_s.CompWidth_u16));  // - 3 to compensate for cpu execution times!

        // Start puls timer to stop puls again!
        FastDigWriteOff(OUT_HS_Plus);
        FastDigWriteOff(OUT_HS_Min);
        FastDigWriteOff(OUT_LS_Plus);
        FastDigWriteOff(OUT_LS_Min);

        PulsActive_b = !PulsActive_b;

        // Increase peak counter
        PeakCntr_u16 += 1;
    }
}

Read timer values

Hi, I don't qui understand how to use your library. What i want to do is start a timer, wait for a certain amount of time, and then read the value in this timer counter. I don't know if I make any sense, but is this feasible with your library as it is ?

Thanks for your time and your work, best regards
TheRealXav

Calling setFrequency() with timer active causes callback to stop running

I have a program where I want to adjust a frequency of the timer on the fly with the output active. Essentially, I am generating a sine wave and need to sweep through a range of frequencies.

An example code would be:

Timer0.setFrequency(someFreq);
Timer0.start(); // Output looks good
Timer0.setFrequency(someOtherFreq); // Output stops
Timer0.stop();
Timer0.start(); // Output looks good with correct new frequency

As a general rule, someFreq and someOtherFreq are close to each other (Within 1 hz), and both of them are in the 10-50 Hz range.

I'm not sure if changing frequency with the timer active is just unsupported, but I imagine it should be possible since all that is changing is the overflow counter as I understand it. It's possible that I'm doing something boneheaded as well.

Documentation input

I found this repo, and the forum thread that spawned it, and it's been helpful to me in my own project using timers. But I wanted to add one thing to the TimerCounter.md documentation: each timer isn't limited to a single external clock input — in fact, they all have five options! Every timer can use any of the three TCLK pins on its TC (i.e. TCLK0..2 for TC0), or either of the other two TIOA pins on the same TC (not its own, so for instance T2 can use TIOA0 and TIOA1 but not TIOA2).

They're selected by using the TC_CMR_TCCLKS_XCn flags instead of TC_CMR_TCCLKS_TIMER_CLOCKn. By default all three XCn will be mapped to TCLKn, but one of the three can be mapped to a TIOA pin using the TC_BMR_TCnXCnS flags in TC_BMR.

This can be used to put your external clock on a pin that isn't used for something else, and it can also be used to run multiple timers (up to three) in sync off of the same external clock, which is nifty.

Type Issues

When running this under Arduino 1.0.5, I get the following errors:

DueTimer.h:50: error: ISO C++ forbids declaration of 'Tc' with no type
DueTimer.h:50: error: expected ';' before '*' token
DueTimer.h:52: error: 'IRQn_Type' does not name a type

For reference those lines are

48  struct Timer
49  {
50      Tc *tc;
51      uint32_t channel;
52      IRQn_Type irq;
53  };

Are these issues of my version, or of "Arduino.h" or maybe even <inttypes.h>. If it matters, I brought the DueTimer.cpp and DueTimer.h files into the local directory (where DueTimerTest.ino lives), and referenced them with #include "DueTimer.h" rather than #include <DueTimer.h>.

Any help would be greatly appreciated

6 PWM 1Mhz

Hi,
I want to generate 6 pulses, each pulse of 1MHz, can you help me? Please, I'm stuck here.

Setting a very low frequency

I have a requirement where a very long timed interrupt is needed. I believe

setFrequency(frequency);

uses double which means I cannot have less than 1 Hz. Is there an option to have a timer run for hours? days?

This library doesn't work

This library cannot be installed:
Invalid library found in /root/Arduino/libraries/DueTimer: Missing 'core-dependencies' from library

Incorrect frequency at exactly 32 kHz

When I use setFrequency(32000), getFrequency() returns 31250, whereas if I do setFrequency(31999) or setFrequency(32001), getFrequency() returns 31987.81 and 32012.2 respectively. In the last two examples, the error is better than 0.1%. In the first example, it is -2.34375%. This cannot be a hardware limitation.

precise timing

Hello,

Can anybody give me some tips to use this library for precise timing? like the arduino micros() function? I want to add accurate timestamps to the sensor outputs...

Thanks.

Pragma Message not working

I just downloaded DueTimer and installed it in my libraries folder and noticed the following issues.

  1. The #ifdef __arm__ on line 10 of DueTimer.h fails because __arm__ isn't defined by the environment.
  2. The #pragma message() doesn't appear to have the desired result
  3. If you then define __arm__ in your own code prior to including DurTimer.h, you get the following errors:

/Users/jock/Documents/Arduino/libraries/DueTimer/DueTimer.h:35: error: ISO C++ forbids declaration of 'Tc' with no type
/Users/jock/Documents/Arduino/libraries/DueTimer/DueTimer.h:35: error: expected ';' before '*' token
/Users/jock/Documents/Arduino/libraries/DueTimer/DueTimer.h:37: error: 'IRQn_Type' does not name a type

Enchance timer clock

Improve Timer clock, to use the best one, for the selected period (and Frequency).

Could you give us a sample code ?

Hi Ivan,
First of all, thank you for your work !

I tried to execute a simple code using your librairies but the result is not what i expected.

I'm pretty sure I'm not using your librairy as I should, maybe a sample code would be benefit !
due_timer
due_timer_result

compatibility to Arduino-FreqPeriod-Due-master

Hello I would like to use the two libraries in one project:

Arduino-FreqPeriod-Due-master & DueTimer-1.4.7

Both try to access the same interrupts/timer (TC4_Handler)

Would a fix be possible that both libraries could be used together?

Tanks

DueTimer for Nano

Hi,

Is possible use this library for Nano? There are another version?

Tnks!

Timers interfere

This code does not produce the expected result:

Timer.getAvailable().attachInterrupt(handler).start(1000);
Timer.getAvailable().attachInterrupt(handler2).start(10);

handleris called 10 times/s, not 1000 as expected. handler2is not called at all.

Change timer value on the fly

Hello,
i want to change the timer intervall on the fly

i generate the intervall time with an formula

int myVar = 0;
double ticks = 60000000.0 / (myVar * 96.0);

void clock1()
    {
        // do stuff here
    }

void setup()
{
	Timer2.attachInterrupt(clock1); 
}

void loop () 
{
    if ( something == 1) 
    {
        Timer2.start(ticks);
    }

    if ( somethingElse)  
        {
            myVar = 120;
        }
    }
}

how can i update the changed value on the fly? do i have to stop and start the Timer again ?

DueTImer and serialUSB

Hi,
I have a problem with DueTimer: if I have an active timer the seriaUSB.readbytes() function freeze my Arduino DUE. I am not an expert on Arduino but I think there are a conflict inside theese two library (same timer?).

Thanks for help

BR,
David

Multiple Timers Hanging

Hi, I've modified the example code from the multiple timer folder with my desired interrupt time (1000 microseconds for Timer0 and 5000 microseconds for Timer3). From the arduino serial monitor, It seems that the arduino hangs at 5000us. Does this mean that the arduino does not know what ISR to prioritize? I've attached the code and the output of the arduino serial monitor for visualization.

void firstHandler(){
	Serial.println("[-  ] First Handler!");
}

void secondHandler(){
	Serial.println("[ - ] Second Handler!");
}

void thirdHandler(){
	Serial.println("[  -] Third Handler!");
}

void setup(){
	Serial.begin(115200);

	Timer0.attachInterrupt(firstHandler).start(1000);
	Timer3.attachInterrupt(secondHandler).start(5000);

}

void loop() {

}

image

Am I missing something? Its my first time using the library. Any help would be greatly appreciated. Thank you.

Ver 1.4.7 CRC does not match on arduino IDE v1.6.9

When trying to update or install the DueTimer library via the libraries manager in the arduino IDE I get the following error:

CRC doesn't match. File is corrupted. java.lang.RuntimeException: java.lang.Exception: CRC doesn't match. File is corrupted. at cc.arduino.contributions.libraries.ui.LibraryManagerUI.lambda$onInstallPressed$12(LibraryManagerUI.java:231) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.Exception: CRC doesn't match. File is corrupted. at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:77) at cc.arduino.contributions.libraries.LibraryInstaller.install(LibraryInstaller.java:97) at cc.arduino.contributions.libraries.ui.LibraryManagerUI.lambda$onInstallPressed$12(LibraryManagerUI.java:227) ... 1 more

Is this a problem on my side or of the library?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.