Forum: Mikrocontroller und Digitale Elektronik STM32 DAC ändern


von P. O. (neop13)


Lesenswert?

Hallo
Probiere gerade mit dem DAC rum.
Hab den auc Initialisiert und alles und kann geziehlrt Spannungen drauf 
schalten. Jetzt würd ich die Werte gerne in der main.c verändern und auf 
diverse Sachen reagieren oder nen bestimmten Tackt blinklen lassen oder 
sonst was.
aber selbst das ändern von 5V (z.B. im Secunden Takt) auf 0V und das in 
ner Schleife klappt nicht.

Hab für den Wert ne var gesetzt (bei der initialisierung
1
DAC_SetChannel1Data(DAC_Align_12b_R, dac_1_var);

und den dann in der main nen wertdafür

z.B.
1
dac_1_var = 3000;

aber den jetzt runter zählen in der form (oder ähnlich) geht nicht
1
if (dac_1_var > 0)
2
     {
3
dac_1_var--;                         
4
Delay (100);
5
      }           
6
else (dac_1_var=4000);

delay.c
1
/* Includes ------------------------------------------------------------------*/
2
#include "delay.h"
3
4
5
void Delay(unsigned long nCount)
6
{
7
  for(; nCount != 0; nCount--);
8
}

von Rainer (Gast)


Lesenswert?

Ähmm... und wann teilst du dem DAC mit, was in der Variable "dac_1_var" 
steht?

Gruß
Rainer

von P. O. (neop13)


Lesenswert?

na zu ANfang gleich
1
dac_1_var = 3000;

Und das klappt auch. der Setzt mir ne Spannung auf den Wert

Aber das runterzählen danach usw. klappt nicht

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Du übergibst DAC_SetChannel1Data den Wert als "call by value", nicht als 
"call by reference". Du musst also nach jedem Werteändern die Funktion 
neu aufrufen.

Gruß
Lasse

von P. O. (neop13)


Lesenswert?

ahh ja logisch...
also müsste das so doch aber klappen
1
  DAC_SetChannel1Data(DAC_Align_12b_R, 1000);
2
3
4
    if (dac_1_var > 0)
5
        {
6
     dac_1_var--;                         // Variable herunterzählen
7
     Delay (0x4F);
8
    DAC_SetChannel1Data(DAC_Align_12b_R, dac_1_var);
9
        }           
10
    else (dac_1_var=4000);
11
    DAC_SetChannel1Data(DAC_Align_12b_R, dac_1_var);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.