Ich habe das mit dem Array heute programmiert und es funktioniert super, ich lasse bei einem Interrupt meine Funktion aufrufen bei der die "Linie" (die ausgegeben wird) um 1 Tausenstel erhöht wird.
D.h. meine Vorgangsweise schaut jetzt so aus, ich werde mit meinen Oszi die genaue Quarzfrequenz messen, daraus errechne ich dann wie oft ich den 16bit Timer überlaufen lassen muss, damit ich 1ms bekomme und ab dann spring meine Funktion ein, diese zählt bis 99h
Dann fehlt nur noch der Ein/Aus Interrupt bzw. reset knopf(könnt ich auch nur den µC resetten)
Bezüglich der Widerholfrequenzen habe ich mir keinen Kopf gemacht, aber die übrige Zeit die der µC hat(bei 16MHz) kann er schreiben, ich werde es aber so machen dass ich unter 1Mhz bleibe, also so ca. 2-10 us...
Meine Funktion ganz simple:
Code:
void func(uint8_t *A) {
A[t]++;
if(A[t] == 9) {
A[t]= 0;
A[hu]++;
if(A[hu] == 9){
A[hu]=0;
A[z]++;
if(A[z] == 9){
A[z] = 0;
A[s]++;
if(A[s] ==9){
A[s] = 0;
A[ds]++;
if(A[ds] == 6){
A[ds] = 0;
A[m]++;
if(A[m] == 9){
A[m] = 0;
A[dm]++;
if(A[dm]==6){
A[dm]=0;
A[h]++;
if(A[h]==9){
A[h]=0;
A[dh]++;
if(A[dh]==9)
A[dh]=0;
}
}
}
}
}
}
}
}
}
in main wir dann mittels einer forschleife die Zeile so ausgegeben:
PORTA= LINE[i][A[8-i]];
PORTD = 0x01<< i;
Lesezeichen