Hallo! Seit einiger Zeit probiere ich an einer AVR Steuerung dran rum, die ich selbst gebaut habe. Diese Steuerung ist eine Laufzeitüberwachung von Gleichstrommotoren (8 x 24V/5A). Die Elektronik ist neben den Relays, die die Motoren schalten eingebaut (aus Platzgründen nur an dieser Stelle möglich). Als ich die Software und Hardware dafür entwickelt habe, habe ich einen Test von 6 Tagen am Stück in meiner Werkstatt abgehalten. Der Test lief sehr gut und ohne Fehler. Daraufhin habe ich die Elektronik eingebaut und schon nach kurzer Zeit (ca. 5min.) wurden Bit´s im SRAM unkontrolliert gesetzt und ein Ablauf der Zeit "vorgegaukelt". Daraufhin dache ich noch das es ein Harwarefehler sein könnte und habe die Elektronik an einen Akku mit 24V und alle anderen Leitung abgeklemmt. Das Ergebniss: Die Bit´s im SRAM werden immer noch gesetzt. Demnach behaupte ich, das es ein EMV (Statische oder Magnetische Felder) schuld sein könnten. Meine Frage: - Könnte es EMV-Problem sein - Wenn ja, wie kann ich das "abschirmen" - Wenn nein, was ist dann los - ........ Danke
Schaltung zeigen, alles andere ist ne Aufforderung zum Raten. Nur soviel: Das Bits im RAM durch äußere Störfelder geändert werden, ist sehr(!) unwahrscheinlich. Eher wird ein Reset ausgelöst oder du kriegst Störungen an den Sensoren.
Also Schaltplan hab ich nicht da. Ist aber ich hab´s genau so aufgebaut: http://www.mikrocontroller.net/wikifiles/f/f6/Mega8_Tutorial.png (Versorgungstechnisch) Daraufhin hab ich schon mal die Sensoren alle rausprogrammiert. Wieder ohne Erfolg.
Ich habe keinen blassen Schimmer, warum es nicht funktioniert. Eins weiß ich, die Bit´s werden nur gesetzt nich rückgesetzt. Hiiiiiilfe Danke
Ich schrieb: > und schon nach kurzer Zeit (ca. 5min.) wurden > Bit´s im SRAM unkontrolliert gesetzt und ein Ablauf der Zeit > "vorgegaukelt". Das ist mit Sicherheit ein Softwarefehler. Z.B. externe Interrupts zum Einlesen von Kontakten bzw. langen Leitungen oder nicht Ausmaskieren von unbenutzten Pins. Peter
Beschreibe mal im Detail die Stromversorgung in dem ursprünglichen Aufbau und in dem nun nicht mehr funktionierendem Aufbau. Also Relais und Motoren (induktive Lasten an sich) bzw. Probleme mit der Stromversorgung der Lasten und des uC sind in den allermeisten Fällen die Ursache von Problemen wie diesen. EMV eher nicht. Probiere mal bei der Versorgung mit 24V und Batterie die induktiven Lasten abzuhängen und sieh' ob das Problem bestehen bleibt. Um einen Schaltplan wirst Du sowieso nicht herumkommen, wenn Du professionell arbeiten willst; also zeichne einen und poste den hier. Wie hast Du das Layout denn gemacht? Auch posten. In solchen Fällen spielt oft auch der Aufbau (z.B. Leitungsverlauf) eine Rolle. Poste mal ein paar Fotos. Achte auf bildfüllendes Format und Schärfe.
Ich mach am besten, zur leichteren Verständlichkeit ein Youtube-Video. Vorab: mit Akku hab ich jetzt schon mal getestet, funktioniert auch nicht. Eingänge hab ich schon mal alle rausprogrmmiert. Im Anhang die Software, die ja in meiner Werkstatt ohne Probleme funktioniert.
>Im Anhang die Software, die ja in meiner Werkstatt ohne Probleme >funktioniert. Markiere mal bitte das verräterische Bit. Gut kommentiert ist die Software aber nicht. Außerdem vermisse ich eine gewisse Ordnung/Struktur mit entsprechenden Kommentierungsblöcken damit man sich in dem Programm auch nach Jahren zurecht findet. Das erschwert die Suche unnötig zumal Assembler ohnehin ziemlich umständlich ist. >die ja in meiner Werkstatt ohne Probleme funktioniert. Auch mit der selben Anordnung und belasteten Motoren? Bürstenlose Motore werden es wohl nicht sein? Wenn das in der Werkstatt im Leerlauf funktioniert, muss das unter Last vor Ort nicht genauso sein.
Hi Du sicherst im Timerinterrupt das Statusregister SREG nicht. Damit sind Programmfehler schon vorprogrammiert. MfG Spess
Ich hab´s rot markiert. Software kann ich mir nur schwer vorstellen, da ich es schon mit 2 total verschiedenen Programmen ausprobiert habe. Danke für euere Hilfe!
Hallo Spess! Wie sollte den der Timerinterrupt den richtig aussehen, ich kann leider keinen Fehler erkennen!
Hi >Wie sollte den der Timerinterrupt den richtig aussehen, ich kann leider >keinen Fehler erkennen! Z.B. so:
1 | push r16 |
2 | in r16,SREG |
3 | push r16 |
4 | |
5 | .... |
6 | |
7 | pop r16 |
8 | out SREG,r16 |
9 | pop r16 |
10 | reti |
Das 'inc r16' in der Interruptroutine verändert die Flags Z,N und V im SREG. Wenn der Interrupt also zum Beispiel genau vor einem 'breq' oder 'brne' zuschlägt, kann das lustige Effekte haben. MfG Spess
include.docx (27,8 KB, 12 Downloads) ******************************************************************** *Kann ich leider nicht lesen. Mach es als .txt und m. Kommentierung* ********************************************************************
Hallo! Da wo das Bit gesetzt wird, ist beim Makro B_01 sbi PORTB,0 Wenn ich jetzt mein Interrupt folgend auslege: TIMER: push r16 lds r16,B100 subi r16,1 sts B100,r16 pop r16 reti würde dann das Problem mit den Flags verschwinden? Mit in und out vom SRAM funktioniert nicht??
Hi >würde dann das Problem mit den Flags verschwinden? Nein. 'subi' verändert die Flages auch. Weshalb stäubst du dich dagegen, SREG zu sichern? Das gehört zu den Basics der Assemblerprogrammierung. >Mit in und out vom SRAM funktioniert nicht?? ???? MfG Spess
lds und sts ist doch eine Sicherung. Wenn ich es so wie du oben beschieben hast im AVR Studio schreibe, bringt der Debugger eine Fehermeldung
Sorrrry!! Ups, hab ich mich mit dem sichern vom SREG und SRAM verlesen! Ja, wird mir auch klar, wenn ich so überlege. Ich probiers gleich mal!! Dannnnnnke
@Ich Haste eigentlich die üblichen Kondensatoren (ganz nah) am Controller montiert? Im Video sehe ich da keine. Wenn nur die Versorgung vorhanden ist, dann bleiben nur noch wenige Möglichkeiten. -Stabilität der Versorgung fehlerhaft -Softwareproblem -Güte des Aufbaus, kalte Lötstelle etc., Quarz korrekt angeschlossen? Gewöhnlich würde ich mal ein paar Messungen mit einem Oszilloskop empfehlen, aber ich gehe mal davon aus, das keins verfügbar ist? Vielleicht ist es tatsächlich ein Softwareproblem und die bereits angeregten Vorschläge reichen aus.
Und dürfen wir auch erfahren welche Fehlermeldung bei welchem Code
genau? ;-) "Oben" steht viel Code.
> lds und sts ist doch eine Sicherung.
Schau Dir mal die Operanden von lds und sts an. Da steht nirgendwo ein
Register in das Du sreg geladen hast.
Also ist das keine Sicherung des Status-Registers.
Das Problem ist, das das subi das Status-Register verändert (abhängig
von den Operanden). Ich empfehle Dir: Nimm den Rat von spess53 an.
ja, die Kondensatoren mit 100nF ist schon ganz nah am µC, da er hinten auf der Leiterplatte aufgelötet wurde. Ein Osziloskop hab ich schon und auch gemessen. Deswegen auch die vermutung von mir, das die Störung über Luft oder nur noch Software sein könnte. Was Spess gemeint hat könnte schon zutreffen. Da bin ich wohl sehr auf der Leitung gesessen :-). Die Möglichkeit könnte schon sein, mit den Durchläufen und Störungsauftritt, dass das mit dem SREG so war. Umprogrammiert ist es jetzt und eingebaut ist es auch schon wieder. Jetzt heißt es für mich abwarten. Ich bin euch allen sehr dankbar, denn so was bring mich zur Verzweiflung. Johann
So was, funktioniert mit dem umgeänderten Interruptcode auch nicht. Immer noch das selbe Problem
Mike Hammer schrieb: > include.docx (27,8 KB, 12 Downloads) > > ******************************************************************** > *Kann ich leider nicht lesen. Mach es als .txt und m. Kommentierung* > ******************************************************************** *.txt, *.doc nennt man vielleicht Liebesbriefe, aber keine Sourcen. Halte Dich doch einfach an übliche Regeln. Wenn Du ein Assemblerprogramm schreibst, nen es *.asm. Und wenn Du dann noch weißt, wie man einen Kommentar schreibt, dann wird dieser farbig hervorgehoben. Peter
Hier der Code:
1 | ;+------------------------------------------------------------------------------ |
2 | .include "m8def.inc" |
3 | .cseg |
4 | .org 0 |
5 | ;------------------------------------------------------------------------------- |
6 | ; Reset and Interrupt vector ;VNr. Beschreibung |
7 | ;------------------------------------------------------------------------------- |
8 | .org 0x000 |
9 | rjmp main |
10 | .org INT0addr ; External Interrupt0 Vector Address |
11 | reti |
12 | .org INT1addr ; External Interrupt1 Vector Address |
13 | reti |
14 | .org OC2addr ; Output Compare2 Interrupt Vector Address |
15 | reti |
16 | .org OVF2addr ; Overflow2 Interrupt Vector Address |
17 | reti |
18 | .org ICP1addr ; Input Capture1 Interrupt Vector Address |
19 | reti |
20 | .org OC1Aaddr ; Output Compare1A Interrupt Vector Address |
21 | rjmp TIMER |
22 | .org OC1Baddr ; Output Compare1B Interrupt Vector Address |
23 | reti |
24 | .org OVF1addr ; Overflow1 Interrupt Vector Address |
25 | reti |
26 | .org OVF0addr ; Overflow0 Interrupt Vector Address |
27 | reti |
28 | .org SPIaddr ; SPI Interrupt Vector Address |
29 | reti |
30 | .org URXCaddr ; USART Receive Complete Interrupt Vector Address |
31 | reti |
32 | .org UDREaddr ; USART Data Reg. Empty Interr. Vector Address |
33 | reti |
34 | .org UTXCaddr ; USART Transmit Complete Interrupt Vector Address |
35 | reti |
36 | .org ADCCaddr ; ADC Interrupt Vector Address |
37 | reti |
38 | .org ERDYaddr ; EEPROM Interrupt Vector Address |
39 | reti |
40 | .org ACIaddr ; Analog Comparator Interrupt Vector Address |
41 | reti |
42 | .org TWIaddr ; Irq. vector address for Two-Wire Interface |
43 | reti |
44 | |
45 | |
46 | |
47 | .org INT_VECTORS_SIZE |
48 | |
49 | .equ XTAL = 3686400;H |
50 | |
51 | ;------------------------------------------------------------------------------- |
52 | ; Start, Power ON, Reset |
53 | ;------------------------------------------------------------------------------- |
54 | main: ldi r16, LOW(RAMEND) ; Stackpointer initialisieren |
55 | out SPL, r16 |
56 | ldi r16, HIGH(RAMEND) |
57 | out SPH, r16 |
58 | ldi r16, high( 7200 - 1 ) |
59 | out OCR1AH, r16 |
60 | ldi r16, low( 7200 - 1 ) |
61 | out OCR1AL, r16 |
62 | ldi r16, ( 1 << WGM12 ) | ( 1 << CS12 ) |
63 | out TCCR1B, r16 |
64 | |
65 | ldi r16, 1 << OCIE1A ; OCIE1A: Interrupt bei Timer Compare |
66 | out TIMSK, r16 |
67 | |
68 | sei |
69 | |
70 | ldi r16,0 |
71 | sts B100,r16 |
72 | sts B001,r16 |
73 | sts B002,r16 |
74 | sts B003,r16 |
75 | |
76 | cbi DDRD,2 ;Eingang "Quittierung" |
77 | sbi PORTD,2 ;Pull Up |
78 | cbi DDRD,3 ;Eingang "Auslösen" |
79 | sbi PORTD,3 ;Pull Up |
80 | cbi DDRD,4 ;Eingang "Überwachung" |
81 | sbi PORTD,4 ;Pull Up |
82 | cbi DDRD,5 ;Eingang "Extern-Error" |
83 | sbi PORTD,5 ;Pull Up |
84 | cbi DDRD,6 ;Eingang "Extern-Ein/Aus" |
85 | sbi PORTD,6 ;Pull Up |
86 | sbi DDRB,0 ;Ausgang "Steuerspannung" |
87 | sbi DDRB,1 ;Ausgang "Zeitmessungs-LED" |
88 | sbi DDRB,2 ;Ausgang "Betriebsbereit" |
89 | sbi DDRB,3 ;Ausgang "Störungs LED" |
90 | sbi DDRB,4 ;Ausgang "Taster-LED" |
91 | sbi DDRB,5 ;Ausgang " Test " |
92 | |
93 | |
94 | cbi PORTB,0 ;schalte "Steuerspannung" ein |
95 | ;------------------------------------------------------------------------------- |
96 | mainloop: |
97 | rcall Zeitmessung |
98 | rcall Output |
99 | rcall Futterpause |
100 | rjmp mainloop |
101 | ;------------------------------------------------------------------------------- |
102 | Zeitmessung:lds r16,B100 |
103 | lds r17,B001 |
104 | lds r18,B002 |
105 | |
106 | sbis PIND,4 ; Messeingang wenn 1, |
107 | rjmp A_03 ; dann spring zu A_03 |
108 | |
109 | sbis PIND,2 ; Quittiertaste wenn betätigt wird, |
110 | andi r17,0b11111110 ; dann lösche Time out bit |
111 | |
112 | sbis PIND,2 ; Quittiertaste wenn betätigt wird, |
113 | ldi r18,0 ; dann lösche Timerregister |
114 | |
115 | A_03: sbic PIND,4 ; Messeingang wenn nicht 1, |
116 | ldi r18,0 ; dann setze Timer(Zähler) zurück |
117 | |
118 | sbrc r17,0 ; Wenn Time out bit gesetzt, |
119 | rjmp A_01 ; dann spring zu A_01 |
120 | |
121 | sbis PIND,3 ; Auslösetaste auf Patine wenn betätigt, |
122 | ori r17,0b00000001 ; dann setze Time out bit |
123 | |
124 | sbis PIND,3 |
125 | andi r17,0b11110111 |
126 | |
127 | sbic PIND,4 ; Überwachungseingang wenn 0, |
128 | rjmp A_01 ; dann spring zu A_01 |
129 | |
130 | sbrs r16,0 ; Timer bit 0 (0,5sec Takt) 0, |
131 | rjmp A_01 ; dann sping zu A_01 |
132 | |
133 | sbrc r17,1 ; Flankenauswertung für Timer |
134 | rjmp A_01 |
135 | |
136 | ori r17,0b00000010 |
137 | inc r18 ; Timer wird je sec um 1 erhöht |
138 | |
139 | A_01: sbrs r16,0 ; Flankenauswertung für Timer |
140 | andi r17,0b11111101 |
141 | |
142 | cpi r18,240 ; Zähler wird ausgewertet (240sec.) |
143 | brne A_02 ; Wenn nicht 240, spirng zu A_02 |
144 | ori r17,0b00000001 |
145 | andi r17,0b11110111 |
146 | ldi r18,0 |
147 | |
148 | A_02: sts B001,r17 |
149 | sts B002,r18 |
150 | ret |
151 | ;------------------------------------------------------------------------------- |
152 | Output: lds r16,B100 |
153 | lds r17,B001 |
154 | |
155 | sbrc r17,1 ; Zeitmessungs LED |
156 | sbi PORTB,1 ; " |
157 | sbrs r17,1 ; " |
158 | cbi PORTB,1 ; " |
159 | |
160 | sbrc r17,0 |
161 | rjmp B_01 |
162 | sbi PORTB,2 |
163 | sbrs r17,3 |
164 | cbi PORTB,0 |
165 | rjmp B_02 |
166 | |
167 | B_01: cbi PORTB,2 |
168 | sbi PORTB,0 |
169 | |
170 | B_02: sbis PIND,2 |
171 | cbi PORTB,3 |
172 | |
173 | sbrs r17,0 |
174 | rjmp B_03 |
175 | |
176 | sbrs r16,0 |
177 | cbi PORTB,3 |
178 | |
179 | sbrc r16,0 |
180 | sbi PORTB,3 |
181 | |
182 | B_03: sbrc r17,0 |
183 | cbi PORTB,4 |
184 | |
185 | sbrc r17,0 |
186 | rjmp B_04 |
187 | |
188 | sbrs r17,3 |
189 | rjmp B_04 |
190 | |
191 | sbrs r16,0 |
192 | cbi PORTB,4 |
193 | |
194 | sbrc r16,0 |
195 | sbi PORTB,4 |
196 | |
197 | B_04: |
198 | |
199 | sts B001,r17 |
200 | ret |
201 | ;------------------------------------------------------------------------------- |
202 | Futterpause:lds r16,B100 |
203 | lds r17,B001 |
204 | lds r18,B003 |
205 | |
206 | sbic PIND,6 |
207 | rjmp C_01 |
208 | |
209 | sbrc r17,0 |
210 | andi r17,0b11110111 |
211 | |
212 | sbrc r17,0 |
213 | rjmp C_01 |
214 | |
215 | rcall wait_1ms |
216 | |
217 | sbrc r17,2 |
218 | rjmp C_01 |
219 | |
220 | ori r17,0b00000100 |
221 | |
222 | sbrs r17,3 |
223 | rjmp C_02 |
224 | andi r17,0b11110111 |
225 | cbi PORTB,3 |
226 | cbi PORTB,4 |
227 | rjmp C_01 |
228 | C_02: ori r17,0b00001000 |
229 | sbi PORTB,0 |
230 | sbi PORTB,3 |
231 | |
232 | C_01: sbis PIND,6 |
233 | rjmp C_03 |
234 | |
235 | sbrs r17,2 |
236 | rjmp C_03 |
237 | |
238 | rcall wait_1ms |
239 | |
240 | andi r17,0b11111011 |
241 | |
242 | C_03: sbrs r17,3 |
243 | rjmp C_04 |
244 | |
245 | sbrs r16,2 |
246 | rjmp C_04 |
247 | |
248 | sbrc r17,4 |
249 | rjmp C_04 |
250 | |
251 | ori r17,0b00010000 |
252 | |
253 | inc r18 |
254 | |
255 | C_04: sbrs r16,2 |
256 | andi r17,0b11101111 |
257 | |
258 | C_05: cpi r18,150 |
259 | brne C_06 |
260 | ldi r18,0 |
261 | andi r17,0b11110111 |
262 | cbi PORTB,3 |
263 | cbi PORTB,4 |
264 | |
265 | C_06: |
266 | sts B001,r17 |
267 | sts B003,r18 |
268 | ret |
269 | ;------------------------------------------------------------------------------- |
270 | wait_1ms: push r16 |
271 | push r17 |
272 | wait_1ms_1: inc r16 |
273 | brne wait_1ms_1 |
274 | inc r17 |
275 | cpi r17,5 |
276 | brne wait_1ms_1 |
277 | ldi r17,0 |
278 | pop r17 |
279 | pop r16 |
280 | ret |
281 | ;------------------------------------------------------------------------------- |
282 | TIMER: push r16 |
283 | in r16,SREG |
284 | push r16 |
285 | lds r16,B100 |
286 | |
287 | inc r16 |
288 | |
289 | sts B100,r16 |
290 | pop r16 |
291 | out SREG,r16 |
292 | pop r16 |
293 | |
294 | reti |
295 | ;------------------------------------------------------------------------------- |
296 | |
297 | .dseg |
298 | |
299 | B100: .byte 1 ; wird im Interrupt behandelt |
300 | B001: .byte 1 ; Statusregister 1 |
301 | ; Bit 0: time out Messung oder Test von Taster |
302 | ; Bit 1: Zeitmessungsflanke und LED Zeitmessung |
303 | ; Bit 2: Flankenauswertung Taster Futterpause |
304 | ; Bit 3: Futterpause und Störungs LED ein bei 1 |
305 | ; Bit 4: Flankenauswertung Timer 10min. |
306 | ; Bit 5: |
307 | ; Bit 6: |
308 | ; Bit 7: |
309 | B002: .byte 1 ; Timerregister 60sec. |
310 | B003: .byte 1 ; Timerregister 10min. |
Mal gemessen? Schaltung: Reset-kondi auf 100nF vergrößern Wie ist der Regler (5V) aufgebaut? (100nF davor/Dahinter)? Bei solchen sachen würde ich vor den Regler zusätzlich ordentlich kapazität setzen. (1000µ o.ä) Nach dem Regler keine großen Kapazitäten! Teste deine Schaltung, in dem du einen Pin vom Controller an einen Flipflop oder so oder so hängst, den du bei RESET setzt, oder bei anderen Zuständen. Da kannst du kontollieren, wo der Fehler passiert! Wie sind die Eingänge abgepuffert, bzw sind die absicherbar?? (Evtl externer Pegelwandler etc verwenden)
Hi -Wie hängen deine Stromversorgung der Motoren (immerhin ja max. 40A) und die -Stromversorgung des µC zusammen. -Tritt der Fehler schon bei Nutzung der Relais (ohne Motoren) oder erst beim -Schalten der Motoren auf? -Ist der Brown out detector enabled? Wenn ja, für welche Spannung. MfG Spess
Servus, > Könnte es EMV-Problem sein > > - Wenn ja, wie kann ich das "abschirmen" > > - Wenn nein, was ist dann los alles was du brauchst sind Filter (siehe Bild)- und ordentlich mit Erde (Schutzerde) verbinden. Im Gleichstromkreis (AVR Stromversorgung)umbedingt einige Längsdrosseln und diverse Kondensatoren zur Ableitung. Auch alle Ausgänge unbedingt mit Drosseln abblocken! Das ist zwar ein riesiger Aufwand, aber es lohnt sich. Gruß XMEGA
HAste jetzt mal nen Schaltplan zum ganzen System? Das Video ist ja recht nett, bringt aber für die Fehleranalyse nicht viel. Auch wärs mal angebracht, über die Spannungsversorgung zu reden, bei 24V und einigen Ampere.
Habt ihr im Video nicht gesehen das ICH den Controller nur noch mit einer Batterie ohne jede Peripherie versorgt? Da sind eure Vorschläge nicht unbedingt sinnvoll. Mir kommt die Geschichte irgendwie bekannt vor und des Rätzels Lösung war dann so ein Fuse-Bit das nicht gesetzt war. Leider weis ich das nicht mehr. Watchdog vielleicht? Schon mal in die Richtung geforscht? Ich weiß das ich nichts weiß.
Also, über die Versorgungsspannung ist eher unrealistisch da ich das ganze mit einem Akku schon mal getestet habe (es sei denn, es sind Störungen auf der Leiterplatte zu erzeugen). Im Anhang hab ich mal ein Bild von den Fuses. Ich denke, dass diese Einstellungen nicht dafür schuld sind (ich hoffe es aber).
Servus, Ich schrieb: > sind eure > > Vorschläge nicht unbedingt sinnvoll. recht intelligent ist dein Geschwafel auch nicht!! Gruß XMEGA
Benutzt du wie im Tutorial einen externen quarzoszillator? Dann wäre external clock die richtige fuse einstellung. Aber im Video siehts eher nach gewöhnlichem quarz aus, dann könntest du das full amplitude (ckopt, siehe Beitrag "Das Mysterium CKOPT") fuse setzten um das ganze störunempfindlicher zu machen. Passt zwar alles nicht ganz auf dein Fehlerbild, aber wer weiß was der controller anstellt wenn der takt mal aus dem tritt kommt.
Das einzige was mir noch einfällt, ich aber bezweifle: Löschdioden nicht vergessen?
gestern hab ich noch das Häckchen bei full amplitude gesetzt und wieder in die Maschine eingebaut und ich muss sagen, dass es bis jetzt immer noch funktioniert. Das mit der Löschdiode war schon gebaut und war nicht des Rätsels Lösung. Ich hoffe das es mit der full amplitude weiterhin funktionieren wird. Hat jemand ein Tutorial zu diesen Fuse und Lock?
Ein Tutorial nicht, aber du kannst noch mal in den Thread gucken den ich oben in meinem Beitrag verlinkt habe, da wird viel um dieses Fusebit diskutiert und auch erklärt.
Wäre das Problem mit Abschirmung vom µC und Quarz durch ein Stück Alufolie (ohne Erdung) auch zu beseitigen? Damit stelle ich mir sowas wie von Conrad den Atmega32 im Metalgehäuse vor.
Spannungsspitzen werden auf über evtl GND etc übertragen. Auf was steht deine Brown-out detection? Solche probleme habe ich fast immer auch, wenn mein AVR nicht ausreichend gepuffert ist (100nf), eingänge, spannungsspitzen.
Also BODEN steht auf 4,0V. Der Test mit full amplitude ist auch gescheitert. Das selbe Phänomen ist wieder aufgetreten. Was doch noch sein könnte ist das, wenn ich doch 5V Spannungsversorgung über die Leiterplatte hinaus auf eine Leitung durch einen Verdrahtungskanal mit vielen anderen Leitungen auf eine LED am Schaltschrankdeckel führe da ich diese mit ULN 2003a betreibe, eine "Fremdinduktion" das ganze beeinflusst.
Ich glaube du gehst das zu Wissenschaftlich an. Das is doch keine raketenwissenschaft. BODEN auf 4V das bedeutet dass wenn da eine spitze unter 4V fällt, dein AVR einen RESET auslöst!
Ich würde auf die Engangsbeschaltung schauen, und mal eine Art DEBUG einbauen, in deine Software, von mir aus mit UART, und dann in eine Textdatei loggen (HYperterminal) dann siehst du was passiert! Mit Rumraten wird das nix
Also jetzt mal Butter bei die Fische: Poste endlich mal den Schaltplan; und auch einen Verdrahtungsplan mit Leitungslängen. Du bist jetzt schon mehrfach nach den Details der Schaltung gefragt worden und hast eigentlich kaum darauf geantwortet. Was hast Du an Messgeräten?
Du schreibst, dass Deine Schaltung im Labor richtig funktioniert hat, im Feld aber nicht. Ferner schreibst Du, dass die Aufgabe Deiner Schaltung ist, > Gleichstrommotoren (8 x 24V/5A) zu überwachen, die ja aufgrund ihrer Kommutierungsbürsten Deinen Aufbau auf jede EMV-Schwachstelle prüfen. Mich würde nun interessieren, wie Du die Eingänge deiner Schaltung entprellt hast. Des weiteren schließe ich mich der Aussage meines Vorredners an > Poste endlich mal den Schaltplan; > und auch einen Verdrahtungsplan mit Leitungslängen.
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.