From c1027b36455cf47d336d42e2e42a63f096f7e772 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 11 Dec 2018 10:09:37 +0100 Subject: New architecture: msp430fr5994lp (MSP430FR5994 Launchpad) Almost exclusively copypasted from msp430fr5969lp. May be replaced by symlinks later on. --- src/arch/msp430fr5994lp/model.py | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 src/arch/msp430fr5994lp/model.py (limited to 'src/arch/msp430fr5994lp/model.py') diff --git a/src/arch/msp430fr5994lp/model.py b/src/arch/msp430fr5994lp/model.py new file mode 100755 index 0000000..4747b68 --- /dev/null +++ b/src/arch/msp430fr5994lp/model.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +import numpy as np +import sys + +# include/arch/msp430fr5969lp/driver/timer.h +def get_timer_frequency(f_cpu, f_timer): + if f_cpu == 16000000: + ta0_main_div = 8 + elif f_cpu == 8000000: + ta0_main_div = 4 + elif f_cpu == 4000000: + ta0_main_div = 2 + elif f_cpu == 1000000: + ta0_main_div = 1 + else: + raise ValueError("Invalid f_cpu") + + if f_cpu == 1000000: + if f_timer >= 1000: + divisor = 1 + counter = 1000 / (f_timer / 1000) + elif f_timer >= 20: + divisor = 1 + counter = 1000000 / f_timer + else: + divisor = 8 * 2 + counter = 62500 / f_timer + else: + if f_timer >= 1000: + divisor = ta0_main_div * 1 + counter = 2000 / (f_timer / 1000) + else: + divisor = ta0_main_div * 1 + counter = 2000000 / f_timer + + return f_cpu / divisor / int(counter) + +module = sys.argv[1] + +if module == 'f_timer' and len(sys.argv) == 4: + try: + f_cpu = int(sys.argv[2]) + f_timer = int(sys.argv[3]) + except: + sys.exit(0) + if f_cpu != 0 and f_timer != 0: + print('{:.2f}'.format(get_timer_frequency(f_cpu, f_timer))) -- cgit v1.2.3