hi hallo,
bei der Realisierung einer Rampenfunkion soll diese zeitgesteuert
ausgegeben und verarbeitet werden. Nach meiner Recherche ist hier nach
dem Polling zu verfahren. Wie das ganze theoretische funktioniert ist
mir klar, bloß bei der Umsetzung hapert es und bräuchte hier Hilfe, wie
ich das ganze realisieren kann.
1
#include<stdio.h> //Standard Input/Output
2
#include<drv_dac084s085.h> //Treiber DAC
3
#include<drv_ioport.h> //Standart Input/Output
4
#include<devices.h> //Standard
5
6
dac084s085_t*ptrDAC;
7
8
uint32_tSpannungsausgang=0;
9
uintcount,i,j;
10
11
intmain()
12
{
13
ptrDAC=dac084s085_open(DAC);//Öffnen der Schnittstellen zur Ausgabe
@ Steffi (Gast)
>bin nochmal das ganze im Geiste durchgegangen. Wahrscheinlich sollte ich>das ganze mit einem Timer Interrupt realisieren.
HEUREKA!
Aber die VErsion mit Delay sollte für den ersten VErsuch auch laufen.
Wär ja schon wichtig, was für eine HW/SW-Umgebung das ist.
Dein dac084s085_write will 4 Argumente. Eins davon dürfe der DAC-Wert
sein, den Du hochzählen mußt, sonst wird das nix.
Lokal benutze Variablen sollte man auch lokal definieren, macht u.a. das
Lesen leichter.
Dein Delay dürfte recht kurz sein, oder arbeitet die CPU nur im kHz
Takt. Und 2 Loops hintereindander ist recht sinnfrei. Wenn nötig, dann
ineinander.
Steffi schrieb:> bin nochmal das ganze im Geiste durchgegangen. Wahrscheinlich sollte ich> das ganze mit einem Timer Interrupt realisieren.
Ich würde sagen:
wahrscheinlich solltest du dir erst mal deine ersten Sporen in der
Programmierung verdienen.
Timer ist zwar an und für sich eine gute Idee. Aber dein jetziges
Programm zeigt, dass es da zuallererst mal an noch viel grundlegenderen
Dingen happert.
Sowas
1
voiddelay(inttime)
2
{
3
for(inti=0;i<time;i++);
4
for(intj=time;j>0;j--);
5
}
ist beispielsweise Müll. Jeder Schwachmaten-C-Compiler wirft dir den
Teil komplett raus. Hast du denn in deiner Entwicklungsumgebung keine
ordentlichen delay Funktionen zur Verfügung, die du benutzen könntest
und die auch funktionieren?
Die for-loops werden vom compiler "herausoptimiert", weil innerhalb der
Loop nichts zu berechnen ist. Um das zu vermeiden könnte man dort z.B.
eine statisch deklarierte Variable hochzählen.
Und wie schon von Peter geschrieben: Wenn nötig, dann die for loops
ineinander verschachteln:
int zaehler =0;
void delay(int time)
{
int i,j;
for (int i=0;i<time;i++)
{
for (int j=time;j>0;j--)
{
zaehler ++;
}
}
}