Forum: Mikrocontroller und Digitale Elektronik Großes Array außerhalb definieren/Arduino/C


von Peter (Gast)


Lesenswert?

Hi,

wie definiere ich ein großes Array / Look-Up außerhalb meiner main.ino 
Datei sodass mein Code übersichtlich bleibt ich habs mit ner selbst 
erstellten library versucht nur läuft dann mein dynamischer Speicher 
über ich muss 1251 uint8_t Werte speichern. Wichtig wäre noch das durch 
dieses "externe" definieren die Laufzeit nicht darunter leidet.

Sorry bin leider echt neu in C

Danke schon mal im Voraus

von PittyJ (Gast)


Lesenswert?

Vielleicht doch erst einmal C lernen?
Es gibt genug Tutorials im Netz. Man kann auch immer noch Bücher 
bestellen.

von Stefan F. (Gast)


Lesenswert?

Deklariere es als normale Variable außerhalb aller Funktionen, also im 
globalen Bereich.

von Peter (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Deklariere es als normale Variable außerhalb aller Funktionen,
> also im
> globalen Bereich.

Ja wenn ich das mache dann hab ich einen rießen flatsch da oben kleben 
hab gedacht das kann man schön auslagern irgendwie

von Stefan F. (Gast)


Lesenswert?

Peter schrieb:
> Ja wenn ich das mache dann hab ich einen rießen flatsch da oben kleben
> hab gedacht das kann man schön auslagern irgendwie

Was ist ein "rießen flatsch da oben"? Wohin willst es auslagern?

Zeige deinen Quelltext!

von Peter (Gast)


Lesenswert?

1
/*
2
PWM Sinus erzeugung mit Microcontoller.net Hilfe 
3
*/
4
5
//LookUp-Table
6
const uint8_t sin_wave[1251]  = {
7
0x80,0x80,0x81,0x81,0x82,0x83,0x83,0x84,
8
0x85,0x85,0x86,0x87,0x87,0x88,0x88,0x89,
9
0x8a,0x8a,0x8b,0x8c,0x8c,0x8d,0x8e,0x8e,
10
0x8f,0x8f,0x90,0x91,0x91,0x92,0x93,0x93,
11
0x94,0x95,0x95,0x96,0x96,0x97,0x98,0x98,
12
0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9d,0x9d,
13
0x9e,0x9f,0x9f,0xa0,0xa0,0xa1,0xa2,0xa2,
14
0xa3,0xa4,0xa4,0xa5,0xa5,0xa6,0xa7,0xa7,
15
0xa8,0xa8,0xa9,0xaa,0xaa,0xab,0xab,0xac,
16
0xad,0xad,0xae,0xae,0xaf,0xb0,0xb0,0xb1,
17
0xb1,0xb2,0xb3,0xb3,0xb4,0xb4,0xb5,0xb5,
18
0xb6,0xb7,0xb7,0xb8,0xb8,0xb9,0xba,0xba,
19
0xbb,0xbb,0xbc,0xbc,0xbd,0xbd,0xbe,0xbf,
20
0xbf,0xc0,0xc0,0xc1,0xc1,0xc2,0xc2,0xc3,
21
0xc4,0xc4,0xc5,0xc5,0xc6,0xc6,0xc7,0xc7,
22
0xc8,0xc8,0xc9,0xc9,0xca,0xca,0xcb,0xcb,
23
0xcc,0xcd,0xcd,0xce,0xce,0xcf,0xcf,0xd0,
24
0xd0,0xd1,0xd1,0xd2,0xd2,0xd2,0xd3,0xd3,
25
0xd4,0xd4,0xd5,0xd5,0xd6,0xd6,0xd7,0xd7,
26
0xd8,0xd8,0xd9,0xd9,0xda,0xda,0xda,0xdb,
27
0xdb,0xdc,0xdc,0xdd,0xdd,0xde,0xde,0xde,
28
0xdf,0xdf,0xe0,0xe0,0xe1,0xe1,0xe1,0xe2,
29
0xe2,0xe3,0xe3,0xe3,0xe4,0xe4,0xe5,0xe5,
30
0xe5,0xe6,0xe6,0xe6,0xe7,0xe7,0xe8,0xe8,
31
0xe8,0xe9,0xe9,0xe9,0xea,0xea,0xea,0xeb,
32
0xeb,0xeb,0xec,0xec,0xed,0xed,0xed,0xed,
33
0xee,0xee,0xee,0xef,0xef,0xef,0xf0,0xf0,
34
0xf0,0xf1,0xf1,0xf1,0xf1,0xf2,0xf2,0xf2,
35
0xf3,0xf3,0xf3,0xf3,0xf4,0xf4,0xf4,0xf4,
36
0xf5,0xf5,0xf5,0xf5,0xf6,0xf6,0xf6,0xf6,
37
0xf7,0xf7,0xf7,0xf7,0xf8,0xf8,0xf8,0xf8,
38
0xf8,0xf9,0xf9,0xf9,0xf9,0xf9,0xfa,0xfa,
39
0xfa,0xfa,0xfa,0xfa,0xfb,0xfb,0xfb,0xfb,
40
0xfb,0xfb,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
41
0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
42
0xfd,0xfd,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
43
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff,
44
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
45
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
46
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
47
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
48
0xff,0xff,0xff,0xfe,0xfe,0xfe,0xfe,0xfe,
49
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
50
0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
51
0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
52
0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfa,0xfa,
53
0xfa,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf9,
54
0xf9,0xf8,0xf8,0xf8,0xf8,0xf8,0xf7,0xf7,
55
0xf7,0xf7,0xf6,0xf6,0xf6,0xf6,0xf5,0xf5,
56
0xf5,0xf5,0xf4,0xf4,0xf4,0xf4,0xf3,0xf3,
57
0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,
58
0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
59
0xee,0xee,0xed,0xed,0xed,0xed,0xec,0xec,
60
0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,
61
0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe6,0xe6,
62
0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe3,0xe3,
63
0xe3,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,
64
0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdc,
65
0xdc,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,
66
0xd8,0xd8,0xd7,0xd7,0xd6,0xd6,0xd5,0xd5,
67
0xd4,0xd4,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,
68
0xd1,0xd0,0xd0,0xcf,0xcf,0xce,0xce,0xcd,
69
0xcd,0xcc,0xcb,0xcb,0xca,0xca,0xc9,0xc9,
70
0xc8,0xc8,0xc7,0xc7,0xc6,0xc6,0xc5,0xc5,
71
0xc4,0xc4,0xc3,0xc2,0xc2,0xc1,0xc1,0xc0,
72
0xc0,0xbf,0xbf,0xbe,0xbd,0xbd,0xbc,0xbc,
73
0xbb,0xbb,0xba,0xba,0xb9,0xb8,0xb8,0xb7,
74
0xb7,0xb6,0xb5,0xb5,0xb4,0xb4,0xb3,0xb3,
75
0xb2,0xb1,0xb1,0xb0,0xb0,0xaf,0xae,0xae,
76
0xad,0xad,0xac,0xab,0xab,0xaa,0xaa,0xa9,
77
0xa8,0xa8,0xa7,0xa7,0xa6,0xa5,0xa5,0xa4,
78
0xa4,0xa3,0xa2,0xa2,0xa1,0xa0,0xa0,0x9f,
79
0x9f,0x9e,0x9d,0x9d,0x9c,0x9b,0x9b,0x9a,
80
0x9a,0x99,0x98,0x98,0x97,0x96,0x96,0x95,
81
0x95,0x94,0x93,0x93,0x92,0x91,0x91,0x90,
82
0x8f,0x8f,0x8e,0x8e,0x8d,0x8c,0x8c,0x8b,
83
0x8a,0x8a,0x89,0x88,0x88,0x87,0x87,0x86,
84
0x85,0x85,0x84,0x83,0x83,0x82,0x81,0x81,
85
0x80,0x80,0x7f,0x7e,0x7e,0x7d,0x7c,0x7c,
86
0x7b,0x7a,0x7a,0x79,0x78,0x78,0x77,0x77,
87
0x76,0x75,0x75,0x74,0x73,0x73,0x72,0x71,
88
0x71,0x70,0x70,0x6f,0x6e,0x6e,0x6d,0x6c,
89
0x6c,0x6b,0x6a,0x6a,0x69,0x69,0x68,0x67,
90
0x67,0x66,0x65,0x65,0x64,0x64,0x63,0x62,
91
0x62,0x61,0x60,0x60,0x5f,0x5f,0x5e,0x5d,
92
0x5d,0x5c,0x5b,0x5b,0x5a,0x5a,0x59,0x58,
93
0x58,0x57,0x57,0x56,0x55,0x55,0x54,0x54,
94
0x53,0x52,0x52,0x51,0x51,0x50,0x4f,0x4f,
95
0x4e,0x4e,0x4d,0x4c,0x4c,0x4b,0x4b,0x4a,
96
0x4a,0x49,0x48,0x48,0x47,0x47,0x46,0x45,
97
0x45,0x44,0x44,0x43,0x43,0x42,0x42,0x41,
98
0x40,0x40,0x3f,0x3f,0x3e,0x3e,0x3d,0x3d,
99
0x3c,0x3b,0x3b,0x3a,0x3a,0x39,0x39,0x38,
100
0x38,0x37,0x37,0x36,0x36,0x35,0x35,0x34,
101
0x34,0x33,0x32,0x32,0x31,0x31,0x30,0x30,
102
0x2f,0x2f,0x2e,0x2e,0x2d,0x2d,0x2d,0x2c,
103
0x2c,0x2b,0x2b,0x2a,0x2a,0x29,0x29,0x28,
104
0x28,0x27,0x27,0x26,0x26,0x25,0x25,0x25,
105
0x24,0x24,0x23,0x23,0x22,0x22,0x21,0x21,
106
0x21,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1e,
107
0x1d,0x1d,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a,
108
0x1a,0x1a,0x19,0x19,0x19,0x18,0x18,0x17,
109
0x17,0x17,0x16,0x16,0x16,0x15,0x15,0x15,
110
0x14,0x14,0x14,0x13,0x13,0x12,0x12,0x12,
111
0x12,0x11,0x11,0x11,0x10,0x10,0x10,0xf,
112
0xf,0xf,0xe,0xe,0xe,0xe,0xd,0xd,
113
0xd,0xc,0xc,0xc,0xc,0xb,0xb,0xb,
114
0xb,0xa,0xa,0xa,0xa,0x9,0x9,0x9,
115
0x9,0x8,0x8,0x8,0x8,0x7,0x7,0x7,
116
0x7,0x7,0x6,0x6,0x6,0x6,0x6,0x5,
117
0x5,0x5,0x5,0x5,0x5,0x4,0x4,0x4,
118
0x4,0x4,0x4,0x3,0x3,0x3,0x3,0x3,
119
0x3,0x3,0x3,0x2,0x2,0x2,0x2,0x2,
120
0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x1,
121
0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
122
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
123
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
124
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
125
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
126
0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,
127
0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
128
0x1,0x2,0x2,0x2,0x2,0x2,0x2,0x2,
129
0x2,0x3,0x3,0x3,0x3,0x3,0x3,0x3,
130
0x3,0x4,0x4,0x4,0x4,0x4,0x4,0x5,
131
0x5,0x5,0x5,0x5,0x5,0x6,0x6,0x6,
132
0x6,0x6,0x7,0x7,0x7,0x7,0x7,0x8,
133
0x8,0x8,0x8,0x9,0x9,0x9,0x9,0xa,
134
0xa,0xa,0xa,0xb,0xb,0xb,0xb,0xc,
135
0xc,0xc,0xc,0xd,0xd,0xd,0xe,0xe,
136
0xe,0xe,0xf,0xf,0xf,0x10,0x10,0x10,
137
0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x13,
138
0x13,0x14,0x14,0x14,0x15,0x15,0x15,0x16,
139
0x16,0x16,0x17,0x17,0x17,0x18,0x18,0x19,
140
0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,
141
0x1c,0x1c,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,
142
0x1f,0x20,0x20,0x21,0x21,0x21,0x22,0x22,
143
0x23,0x23,0x24,0x24,0x25,0x25,0x25,0x26,
144
0x26,0x27,0x27,0x28,0x28,0x29,0x29,0x2a,
145
0x2a,0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,
146
0x2e,0x2e,0x2f,0x2f,0x30,0x30,0x31,0x31,
147
0x32,0x32,0x33,0x34,0x34,0x35,0x35,0x36,
148
0x36,0x37,0x37,0x38,0x38,0x39,0x39,0x3a,
149
0x3a,0x3b,0x3b,0x3c,0x3d,0x3d,0x3e,0x3e,
150
0x3f,0x3f,0x40,0x40,0x41,0x42,0x42,0x43,
151
0x43,0x44,0x44,0x45,0x45,0x46,0x47,0x47,
152
0x48,0x48,0x49,0x4a,0x4a,0x4b,0x4b,0x4c,
153
0x4c,0x4d,0x4e,0x4e,0x4f,0x4f,0x50,0x51,
154
0x51,0x52,0x52,0x53,0x54,0x54,0x55,0x55,
155
0x56,0x57,0x57,0x58,0x58,0x59,0x5a,0x5a,
156
0x5b,0x5b,0x5c,0x5d,0x5d,0x5e,0x5f,0x5f,
157
0x60,0x60,0x61,0x62,0x62,0x63,0x64,0x64,
158
0x65,0x65,0x66,0x67,0x67,0x68,0x69,0x69,
159
0x6a,0x6a,0x6b,0x6c,0x6c,0x6d,0x6e,0x6e,
160
0x6f,0x70,0x70,0x71,0x71,0x72,0x73,0x73,
161
0x74,0x75,0x75,0x76,0x77,0x77,0x78,0x78,
162
0x79,0x7a,0x7a,0x7b,0x7c,0x7c,0x7d,0x7e,
163
0x7e,0x7f,0x80};
164
165
166
volatile uint16_t i=0;
167
void setup() {
168
// PWM einstellen
169
TCCR1A = (1 << COM1A1)|(1 << WGM10); //Fast PWM 8-Bit 
170
TCCR1B = (1 << WGM12)|(1 << CS10);  //Fast PWM 8-bit kein Prescaler setzen unseren neuen VergleichsWert at Bottom und clearen at Top
171
TIMSK1 = (1 << TOIE1); //Aktiviere den Overflow ISR
172
OCR1A = sin_wave[0];  //schreibe den Ersten Wert ins vergleichsRegister
173
//PWM-Signal wird an Port-Pin PB1 anliegen
174
DDRB = (1 << PB1);
175
//Schalte globale Interrrupts an
176
sei();
177
PRR = (1 << PRTIM2)|(1 << PRSPI)|(1 << PRADC);
178
179
}
180
181
void loop() {
182
  
183
  }//Hier nichts tun
184
185
186
//Interrupt routine ausführen nach Overflow
187
ISR(TIMER1_OVF_vect){
188
  // Neuen Wert ins PWM-Register laden
189
  OCR1A = sin_wave[i];
190
  // i um eins erhoehen fuer einen 50Hz Sinus,
191
  // wird i um zwei erhoeht ergibt sich ein 100Hz Sinus
192
  // um drei erhoeht ergibt ein 150Hz Sinus usw.
193
  i += 1;
194
  // pruefen ob das Ende der Lookup-Table erreicht ist, 
195
  // wenn ja zurueck zum Anfang
196
  if(i > sizeof(sin_wave)) i=0;
197
}


Würde eben gerne die Look Up auslagern aber wie macht man das?

von Peter (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wohin willst es auslagern?

Bspw in einen neuen Tab/neue Datei

von Nop (Gast)


Lesenswert?

Pack das Array in eine separate C-Datei, binde die in Dein Projekt ein, 
und oben in Deinem Programm kommt dann
1
extern const uint8_t sin_wave[1251]

rein. Fertig.

von Nop (Gast)


Lesenswert?

1
extern const uint8_t sin_wave[1251];

Mit Semikolon.

von Peter (Gast)


Lesenswert?

okay hab ich gemacht in die main datei hab ich als include geschrieben
#include "Table.c"

aber was schreib ich in die c datei für nen include?

von Nop (Gast)


Lesenswert?

Peter schrieb:
> okay hab ich gemacht in die main datei hab ich als include
> geschrieben
> #include "Table.c"

So macht man das nicht.

von Carl D. (jcw2)


Lesenswert?

Peter schrieb:
> okay hab ich gemacht in die main datei hab ich als include geschrieben
> #include "Table.c"
>
> aber was schreib ich in die c datei für nen include?

Das brauchst du nicht includieren. Jede C-Datei wird getrennt übersetzt, 
eine hat eine externe Referenz, die andere exportiert genau diese. Um 
den Rest kümmert sich der Linker.

von Peter (Gast)


Lesenswert?

ok habs musste das als h datei einbinden top dank dir

von Carl D. (jcw2)


Lesenswert?

Peter schrieb:
> ok habs musste das als h datei einbinden top dank dir

Das funktioniert zwar bei Kleinstprojekten, aber fördert nicht das 
Verständnis von Sprache und Programmierumgebung.

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.