MX 10 месяцев назад
Родитель
Сommit
7f43ef235e
3 измененных файлов с 17 добавлено и 13 удалено
  1. 9 5
      scenes/signal_gen_scene_pwm.c
  2. 1 1
      signal_gen_app.c
  3. 7 7
      views/signal_gen_pwm.c

+ 9 - 5
scenes/signal_gen_scene_pwm.c

@@ -1,6 +1,7 @@
 #include "../signal_gen_app_i.h"
 
 static const FuriHalPwmOutputId pwm_ch_id[] = {
+    FuriHalPwmOutputIdNone,
     FuriHalPwmOutputIdTim1PA7,
     FuriHalPwmOutputIdLptim2PA4,
 };
@@ -28,17 +29,20 @@ static void
 void signal_gen_scene_pwm_on_enter(void* context) {
     SignalGenApp* app = context;
 
+    app->pwm_ch = FuriHalPwmOutputIdTim1PA7;
+    app->pwm_ch_prev = FuriHalPwmOutputIdTim1PA7;
+
     view_dispatcher_switch_to_view(app->view_dispatcher, SignalGenViewPwm);
 
     signal_gen_pwm_set_callback(app->pwm_view, signal_gen_pwm_callback, app);
 
-    signal_gen_pwm_set_params(app->pwm_view, 0, DEFAULT_FREQ, DEFAULT_DUTY);
+    signal_gen_pwm_set_params(app->pwm_view, 1, DEFAULT_FREQ, DEFAULT_DUTY);
 
-    if(!furi_hal_pwm_is_running(pwm_ch_id[0])) {
-        furi_hal_pwm_start(pwm_ch_id[0], DEFAULT_FREQ, DEFAULT_DUTY);
+    if(!furi_hal_pwm_is_running(pwm_ch_id[1])) {
+        furi_hal_pwm_start(pwm_ch_id[1], DEFAULT_FREQ, DEFAULT_DUTY);
     } else {
-        furi_hal_pwm_stop(pwm_ch_id[0]);
-        furi_hal_pwm_start(pwm_ch_id[0], DEFAULT_FREQ, DEFAULT_DUTY);
+        furi_hal_pwm_stop(pwm_ch_id[1]);
+        furi_hal_pwm_start(pwm_ch_id[1], DEFAULT_FREQ, DEFAULT_DUTY);
     }
 }
 

+ 1 - 1
signal_gen_app.c

@@ -28,7 +28,7 @@ SignalGenApp* signal_gen_app_alloc() {
 
     app->view_dispatcher = view_dispatcher_alloc();
     app->scene_manager = scene_manager_alloc(&signal_gen_scene_handlers, app);
-    
+
     view_dispatcher_set_event_callback_context(app->view_dispatcher, app);
 
     view_dispatcher_set_custom_event_callback(

+ 7 - 7
views/signal_gen_pwm.c

@@ -10,7 +10,7 @@ typedef enum {
     LineIndexTotalCount
 } LineIndex;
 
-static const char* const pwm_ch_names[] = {"2(A7)", "4(A4)"};
+static const char* const pwm_ch_names[] = {"", "2(A7)", "4(A4)"};
 
 struct SignalGenPwm {
     View* view;
@@ -35,8 +35,8 @@ typedef struct {
 #define VALUE_X 100
 #define VALUE_W 45
 
-#define FREQ_VALUE_X 62
-#define FREQ_MAX 1000000UL
+#define FREQ_VALUE_X   62
+#define FREQ_MAX       1000000UL
 #define FREQ_DIGITS_NB 7
 
 static void pwm_set_config(SignalGenPwm* pwm) {
@@ -60,11 +60,11 @@ static void pwm_set_config(SignalGenPwm* pwm) {
 
 static void pwm_channel_change(SignalGenPwmViewModel* model, InputEvent* event) {
     if(event->key == InputKeyLeft) {
-        if(model->channel_id > 0) {
+        if(model->channel_id > 1) {
             model->channel_id--;
         }
     } else if(event->key == InputKeyRight) {
-        if(model->channel_id < (COUNT_OF(pwm_ch_names) - 1)) {
+        if(model->channel_id < (COUNT_OF(pwm_ch_names))) {
             model->channel_id++;
         }
     }
@@ -149,11 +149,11 @@ static void signal_gen_pwm_draw_callback(Canvas* canvas, void* _model) {
         if(line == LineIndexChannel) {
             snprintf(val_text, sizeof(val_text), "%s", pwm_ch_names[model->channel_id]);
             canvas_draw_str_aligned(canvas, VALUE_X, text_y, AlignCenter, AlignCenter, val_text);
-            if(model->channel_id != 0) {
+            if(model->channel_id != 1) {
                 canvas_draw_str_aligned(
                     canvas, VALUE_X - VALUE_W / 2, text_y, AlignCenter, AlignCenter, "<");
             }
-            if(model->channel_id != (COUNT_OF(pwm_ch_names) - 1)) {
+            if(model->channel_id != (COUNT_OF(pwm_ch_names))) {
                 canvas_draw_str_aligned(
                     canvas, VALUE_X + VALUE_W / 2, text_y, AlignCenter, AlignCenter, ">");
             }