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
Vielleicht doch erst einmal C lernen? Es gibt genug Tutorials im Netz. Man kann auch immer noch Bücher bestellen.
Deklariere es als normale Variable außerhalb aller Funktionen, also im globalen Bereich.
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
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!
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?
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.
1 | extern const uint8_t sin_wave[1251]; |
Mit Semikolon.
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?
Peter schrieb: > okay hab ich gemacht in die main datei hab ich als include > geschrieben > #include "Table.c" So macht man das nicht.
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.
ok habs musste das als h datei einbinden top dank dir
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.