Sicken kann man ersetzenAndreas_P hat geschrieben:und die Sicke ausgekotzt.
Kurze Frage -> schnelle Antwort
Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese
Re: Kurze Frage -> schnelle Antwort
Re: Kurze Frage -> schnelle Antwort
Moin Andreas!Andreas_P hat geschrieben:Vor ein paar Wochen hat mich die Nachbarin angesprochen, das bei ihrer Stereoanlage die Lautsprecher kratzen.
Also mir mal, dass Problem angesehen, das Umschalten zwischen Tape, Phono, Tuner brachte keine Änderung.
Also hatte ich die Lautsprecherboxen in Verdacht.
Beide Basslautsprecher hatten sich Strukturell designiert und die Sicke ausgekotzt.
->zoom
Meine Frage, kennt jemand eine Quelle für passende Ersatz Lautsprecher?
Es müssen keine Original ONKYO sein.
Die Abmessungen kann man auf deinem Bild nur erraten. Falls es etwa 13er sind, dann könnte man z. B. bei Max & Max (pollin.de) die Bestellnummer 640 815 nehmen (zum Stückpreis von 5,50 EUR). Das sind Breitbänder mit Hochtonkegel, die einen ansprechenden Wirkungsgrad haben. Falls es sich bereits um Mehrwege-Boxen handelt, dann würde ich allerdings zur Bestellnummer 640 825 (für 5,95 EUR Stückpreis) greifen. Das sind solide gemachte Tieftöner mit Gummisicke und schicker glanzschwarzer Membran, denen man aber unbedingt einen Hochtöner an die Seite geben muss (sofern nicht bereits vorhanden). Dann kann man sie full range spielen lassen. Sie bieten auch einen guten Wirkungsgrad. Beide haben 8 Ohm, können die 6 Ohm-Originale also direkt ersetzen. Es gäbe sie, falls ich mit meiner Größenschätzung grob daneben lag, auch als 10 cm-Ausführungen.
MEGA Problem, Interrupt interruptet nicht
Moin,
ich hab hier einen ATMEGA88 dort soll in einer Routine was passieren, wenn sich am PC0 (PCINT8) was ändert
Ich hab alles richtig gemacht (na klar)
Aber es tut nicht, der TIMER1_Ovr_vect funktioniert
Es tut nicht, was hab ich übersehen ?
ich hab hier einen ATMEGA88 dort soll in einer Routine was passieren, wenn sich am PC0 (PCINT8) was ändert
Ich hab alles richtig gemacht (na klar)
Aber es tut nicht, der TIMER1_Ovr_vect funktioniert
Es tut nicht, was hab ich übersehen ?
Code: Alles auswählen
ISR(PCINT1_vect)
{
motor=!motor;
}
int main (void) {
PCMSK1|(1<<PCINT8);
PCICR|=(1<<PCIE1);
TCNT1=0xFA12;
TCCR1B|=(1<<CS12);
TIMSK1|=(1<<TOIE1);
sei();
- Fritzler
- Beiträge: 12609
- Registriert: So 11. Aug 2013, 19:42
- Wohnort: D:/Berlin/Adlershof/Technologiepark
- Kontaktdaten:
Re: Kurze Frage -> schnelle Antwort
Tippfehler:
PCMSK1|(1<<PCINT8);
vs
PCMSK1|=(1<<PCINT8);
PCMSK1|(1<<PCINT8);
vs
PCMSK1|=(1<<PCINT8);
Re: Kurze Frage -> schnelle Antwort
Nein, das kann es nicht gewesen sein.Fritzler hat geschrieben:Tippfehler:
PCMSK1|(1<<PCINT8);
vs
PCMSK1|=(1<<PCINT8);
Nein
Nein
3 Stunden
Neeeeee
Auf keinen Fall
Re: Kurze Frage -> schnelle Antwort
Zu den Sicken der Lautsprecher:
Hier in Berlin gibts eine Firma die machen das überaus bezahlbar:
http://www.lup-berlin.de/
Die gezeigten Onkyo Tieftöner sind recht hochwertig ausgeführt da lohnen sich neue Sicken.
Mfg Andreas
Hier in Berlin gibts eine Firma die machen das überaus bezahlbar:
http://www.lup-berlin.de/
Die gezeigten Onkyo Tieftöner sind recht hochwertig ausgeführt da lohnen sich neue Sicken.
Mfg Andreas
Re: Kurze Frage -> schnelle Antwort
Danke, das hätte ich in 100 Jahren nicht gesehenFritzler hat geschrieben:Tippfehler:
Re: Kurze Frage -> schnelle Antwort
Ich würde die Grenzwerte definitiv nicht überschreiten.chemnitzsurfer hat geschrieben:Problem ist, das die Spannung im Leerlauf und bei kleinen Lasten ca. 3-5V zu hoch ist (hinter den Elkos ca. 63-65 Volt, statt geplanten ca. 59V Volt.
Die Netzspannung hat auch noch Toleranzen...
Entweder Grundlast oder gar ein Vorregler.
Weniger Aufwand dürften ein paar Windungen entsprechender Draht zusätzlich auf dem Ringkerntrafo machen.
Die so entstandene zusätzliche Wicklung wird mit der Sekundärwicklung so verschaltet, dass beide gegeneinander arbeiten.
Spricht da etwas dagegen?
(sag bloß nicht, des Trafos Loch ist vergossen...)
Re: Kurze Frage -> schnelle Antwort
PowerAM
Sorry ich hatte vergessen die genauen Maße der Lautsprecher zu
notieren. Werde ich mal Anfang der Woche nachholen.
Muss dort noch einen Computer richten.
Kuehnetec
lg, Andreas
Wegen den Lautsprechern.Die Abmessungen kann man auf deinem Bild nur erraten. Falls es etwa 13er sind, dann könnte man z. B. bei Max & Max (pollin.de) die Bestellnummer 640 815 nehmen (zum Stückpreis von 5,50 EUR). Das sind Breitbänder mit Hochtonkegel, die einen ansprechenden Wirkungsgrad haben. Falls es sich bereits um Mehrwege-Boxen handelt, dann würde ich allerdings zur Bestellnummer 640 825 (für 5,95 EUR Stückpreis) greifen. Das sind solide gemachte Tieftöner mit Gummisicke und schicker glanzschwarzer Membran, denen man aber unbedingt einen Hochtöner an die Seite geben muss (sofern nicht bereits vorhanden). Dann kann man sie full range spielen lassen. Sie bieten auch einen guten Wirkungsgrad. Beide haben 8 Ohm, können die 6 Ohm-Originale also direkt ersetzen. Es gäbe sie, falls ich mit meiner Größenschätzung grob daneben lag, auch als 10 cm-Ausführungen.
Sorry ich hatte vergessen die genauen Maße der Lautsprecher zu
notieren. Werde ich mal Anfang der Woche nachholen.
Muss dort noch einen Computer richten.
Kuehnetec
Klingt interessant, mal die fragen was es kosten würde die reparieren zulassen.Zu den Sicken der Lautsprecher:
Hier in Berlin gibts eine Firma die machen das überaus bezahlbar:
http://www.lup-berlin.de/
Die gezeigten Onkyo Tieftöner sind recht hochwertig ausgeführt da lohnen sich neue Sicken.
lg, Andreas
Re: Kurze Frage -> schnelle Antwort
Einfach den Durchmesser ausmessen und dort anrufen was die Sickenreparatur kostet plus.Porto.
Es ist bezahlbar ich habe schon öfters Lautsprecher dort reparieren lassen
das geht sehr schnell und wird in sehr guter Qualität ausgeführt.
Technisch sind die Chassis ja OK nur die Sicken sind vergammelt!
Die Onkyo Chassis passen dann wieder perfekt in die Boxen ohne Umbau und basteln.
Ich denke mal die Nachbarin wird begeistert sein und über den Preis nicht jammern...
Mfg Andreas
Es ist bezahlbar ich habe schon öfters Lautsprecher dort reparieren lassen
das geht sehr schnell und wird in sehr guter Qualität ausgeführt.
Technisch sind die Chassis ja OK nur die Sicken sind vergammelt!
Die Onkyo Chassis passen dann wieder perfekt in die Boxen ohne Umbau und basteln.
Ich denke mal die Nachbarin wird begeistert sein und über den Preis nicht jammern...
Mfg Andreas
-
- Beiträge: 142
- Registriert: Mo 12. Aug 2013, 15:35
- Wohnort: Westliches NRW
Re: Kurze Frage -> schnelle Antwort
Ich hatte vor, einen igoristischen Ozongenerator zu bauen und bin dabei über einen Mikrowellentrafo gestolpert. Wäre es möglich, die prinzipielle Schaltung aus einer Mikrowelle zu nutzen und statt Magnetron einfach 2 Platten mit Dielektikum anzuklemmen? Oder fällt das eher unter "keine gute Idee" weil ja vermutlich nicht so viel Leistung wie Original abgenommen wird und sich die Leerlaufspannung erhöhen würde. (Mit evtl explosiven Auswirkungen auf den Kondensator)
Re: Kurze Frage -> schnelle Antwort
Das Problem von nem Mikrowellentrafo als Ozonquelle ist, dass
a) die Spannung nicht hoch genug ist
b) der dahinter stehende Strom dafür umso höher.
Du musst deinen Verhau also sehr klein bauen, wenn aus irgendeinem Grund aber doch ein Lichtbogen zünden sollte, dann brennt alles nieder...
Ein CCFL-Inverter+Kaskade oder ein oller Zeilentrafo sind hier besser geeignet.
a) die Spannung nicht hoch genug ist
b) der dahinter stehende Strom dafür umso höher.
Du musst deinen Verhau also sehr klein bauen, wenn aus irgendeinem Grund aber doch ein Lichtbogen zünden sollte, dann brennt alles nieder...
Ein CCFL-Inverter+Kaskade oder ein oller Zeilentrafo sind hier besser geeignet.
- Bauteiltöter
- Beiträge: 254
- Registriert: So 11. Aug 2013, 17:37
Re: Kurze Frage -> schnelle Antwort
Ich weiß, ich habe es schon mal erwähnt, aber die Compiler können bei sowas helfen wenn sie dürfen!Hightech hat geschrieben:Danke, das hätte ich in 100 Jahren nicht gesehenFritzler hat geschrieben:Tippfehler:
-Wall hätte viel Ärger erspart
Code: Alles auswählen
sssss@igor:~/avr$ avr-gcc -mmcu=atmega88 -c test.c -Wall
test.c: In function ‘main’:
test.c:6:9: warning: value computed is not used [-Wunused-value]
PCMSK1|(1<<PCINT8);
^
Re: Kurze Frage -> schnelle Antwort
Ich habe hier ein Mini-Projekt, bei dem ein ATMega8 ein paar Optokoppler schaltet. Nun will ich Optokoppler nicht nur mit dem Atmel, sondern zusätzlich mit ein paar Tastern ansteuern. Die Taster haben Lampen drin. Aus diesem Grund ist die Ausgangsspannung etwa 9 Volt.
Beim Druck auf einer Taste sieht der Atmel am Ausgang also 9 Volt. Ist ja irgendwie eine Push-Pull-Stufe, daher sehe ich kein Problem, solange der Atmel auf 0 steuert. Aber was ist mit den anderen Zuständen?
Frage: Ist das schädlich, auf den Atmel-Ausgang 9Volt zu geben? Den Strom würde ich mittels 330 R begrenzen.
Danke und Gruß
Kuddel
Beim Druck auf einer Taste sieht der Atmel am Ausgang also 9 Volt. Ist ja irgendwie eine Push-Pull-Stufe, daher sehe ich kein Problem, solange der Atmel auf 0 steuert. Aber was ist mit den anderen Zuständen?
Frage: Ist das schädlich, auf den Atmel-Ausgang 9Volt zu geben? Den Strom würde ich mittels 330 R begrenzen.
Danke und Gruß
Kuddel
Re: Kurze Frage -> schnelle Antwort
Das ist definitiv nicht schön. Möglicherweise reicht der Strom, um die 5V hochzureißen.
Ich würde eine Diode in Reihe zum Ausgang hängen...
Ich würde eine Diode in Reihe zum Ausgang hängen...
Re: Kurze Frage -> schnelle Antwort
@xana: MTRJ-MTRJ sollte es nur gekreuzt geben (ist ja sonst sinnfrei). Aber die Chinesen schaffen alles... und bei DEM Preis wird das sehr wahrscheinlich KEIN deutscher Händler sein...
Re: Kurze Frage -> schnelle Antwort
jetzt mach mir keine Angst!
http://www.ebay.de/itm/122363954788?_tr ... EBIDX%3AIT
Sogar mit Prüfprotokoll nach DIN VDE ISO 4711......
http://www.ebay.de/itm/122363954788?_tr ... EBIDX%3AIT
Sogar mit Prüfprotokoll nach DIN VDE ISO 4711......
Re: Kurze Frage -> schnelle Antwort
Ich würde zumindest eine (Schottky?) Diode zur Betriebsspannung des Chips vorsehen... Der Atmel wird es vermutlich überleben, aber "schön ist etwas anderes" -> Eine Konstruktion, die die Schutzdioden eines Chips "nutzt", würde ich als "Murks" oder "groben Hack" bezeichenenKuddel hat geschrieben:Ist das schädlich, auf den Atmel-Ausgang 9Volt zu geben? Den Strom würde ich mittels 330 R begrenzen.
- Fritzler
- Beiträge: 12609
- Registriert: So 11. Aug 2013, 19:42
- Wohnort: D:/Berlin/Adlershof/Technologiepark
- Kontaktdaten:
Re: Kurze Frage -> schnelle Antwort
Ist denn kein Pin des AVR mehr frei?
Da mit Vorwiderstand und ZDiode den Taster ran.
Das dann im Programm verknüpfen, dann weis das Programm auch obs grade selber einschaltet oder es jemand von extern einschalten will.
Da mit Vorwiderstand und ZDiode den Taster ran.
Das dann im Programm verknüpfen, dann weis das Programm auch obs grade selber einschaltet oder es jemand von extern einschalten will.
Re: Kurze Frage -> schnelle Antwort
Ne. Ich brauch ja auch 10 Schalter. Ist eine fertig verdrahtete Platine und wenig Platz. Und das Projekt nicht sinnvoll genug, um viel Aufwand reizustecken .
Ich guck mal, ob ich genug Optokoppler rumfliegen habe, sonst schalte ich die einfach Parallel.
Gruß
Kuddel
Ich guck mal, ob ich genug Optokoppler rumfliegen habe, sonst schalte ich die einfach Parallel.
Gruß
Kuddel
Re: Kurze Frage -> schnelle Antwort
Meiner nicht, im makefile steht:Bauteiltöter hat geschrieben:Ich weiß, ich habe es schon mal erwähnt, aber die Compiler können bei sowas helfen wenn sie dürfen!Hightech hat geschrieben:Danke, das hätte ich in 100 Jahren nicht gesehenFritzler hat geschrieben:Tippfehler:
-Wall hätte viel Ärger erspart
-Wall -Wextra sollte bei jedem Projekt als Compilerschalter gesetzt sein.Code: Alles auswählen
sssss@igor:~/avr$ avr-gcc -mmcu=atmega88 -c test.c -Wall test.c: In function ‘main’: test.c:6:9: warning: value computed is not used [-Wunused-value] PCMSK1|(1<<PCINT8); ^
CFLAGS=-mmcu=$(MMCU) -Wall
- Fritzler
- Beiträge: 12609
- Registriert: So 11. Aug 2013, 19:42
- Wohnort: D:/Berlin/Adlershof/Technologiepark
- Kontaktdaten:
Re: Kurze Frage -> schnelle Antwort
Hau mal noch -Wextra hinter und sag mal die AVR-GCC Version
Re: Kurze Frage -> schnelle Antwort
Die Version istFritzler hat geschrieben:Hau mal noch -Wextra hinter und sag mal die AVR-GCC Version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
- Bauteiltöter
- Beiträge: 254
- Registriert: So 11. Aug 2013, 17:37
Re: Kurze Frage -> schnelle Antwort
Oh Interessant. Ich hab hier gcc 4.9.2 unter Ubuntu 16.10, der bringt die Warnung. Wundert mich etwas dass das ein recht neues Feature ist. Wenn du mal lange weile hast, kannst du dann den Test mit -Wall -Wextra -pedantic und eingeschalteter Optimierung wiederholen? (Einige Warnungen können nur bei aktivierter Optimierung erzeugt werden).Hightech hat geschrieben:Die Version istFritzler hat geschrieben:Hau mal noch -Wextra hinter und sag mal die AVR-GCC Version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
- Weisskeinen
- Beiträge: 3951
- Registriert: Di 27. Aug 2013, 16:19
Re: Kurze Frage -> schnelle Antwort
Na jaaa, wenn der µC-Ausgang auf 0V liegt und deine 9V ein bisschen Strom liefern können, dann fließen da 27mA. Das ist schon deutlich außerhalb der Spezifikation. Und wenn der Ausgang auf 5V geschaltet ist, fließt trotzdem Strom in den µC rein, was die Designer so eigentlich nicht vorgesehen haben. Spätestens, wenn der entsprechende Pin aber hochohmig ist, z.B. kurz nach einem Reset, wird's sehr grenzwertig. Dann sieht der noch-Eingang nämlich 9V. Das dürfte definitiv zu viel sein...Kuddel hat geschrieben:Frage: Ist das schädlich, auf den Atmel-Ausgang 9Volt zu geben? Den Strom würde ich mittels 330 R begrenzen.
Re: Kurze Frage -> schnelle Antwort
Ich nehme alles zurück und behaupte das Gegenteil.Bauteiltöter hat geschrieben:Oh Interessant. Ich hab hier gcc 4.9.2 unter Ubuntu 16.10, der bringt die Warnung. Wundert mich etwas dass das ein recht neues Feature ist. Wenn du mal lange weile hast, kannst du dann den Test mit -Wall -Wextra -pedantic und eingeschalteter Optimierung wiederholen? (Einige Warnungen können nur bei aktivierter Optimierung erzeugt werden).Hightech hat geschrieben:Die Version istFritzler hat geschrieben:Hau mal noch -Wextra hinter und sag mal die AVR-GCC Version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Entweder habe ich das übersehen, oder der Compiler hatte einen Furz quer stecken.
Jetzt bekomme ich die Ausgabe Mit -Wall
Code: Alles auswählen
main.c:104:9: warning: value computed is not used [-Wunused-value]
PCMSK1|(1<<PCINT8);
- Fritzler
- Beiträge: 12609
- Registriert: So 11. Aug 2013, 19:42
- Wohnort: D:/Berlin/Adlershof/Technologiepark
- Kontaktdaten:
Re: Kurze Frage -> schnelle Antwort
Zeich ma.Hightech hat geschrieben:Kann sein, das ich das echt übersehen habe, denn ich habe noch Variablen, die von denen der Compiler denkt ich nutze sie nicht, dann ist der Hinweis dort von mir übersehen worden.
Wenn der Compiler so viel Warnigs wirft übersieht man eben die wichtigen Warnings.
- Bauteiltöter
- Beiträge: 254
- Registriert: So 11. Aug 2013, 17:37
Re: Kurze Frage -> schnelle Antwort
Die unused-variable-warning kann wirklich manchmal während der Entwicklung nerven. Du könntest sie aber mit -Wno-unused-variable (fürs Entwickeln) unterdrücken, dann sieht man die wichtigen Warnungen eher.
Code: Alles auswählen
torben@igor:~/avr$ avr-gcc -mmcu=atmega88 -Wall -Os test.c
test.c: In function ‘main’:
test.c:6:9: warning: value computed is not used [-Wunused-value]
PCMSK1|(1<<PCINT8);
^
test.c:5:7: warning: unused variable ‘i’ [-Wunused-variable]
int i;
^
torben@igor:~/avr$ avr-gcc -mmcu=atmega88 -Wall -Os test.c -Wno-unused-variable
test.c: In function ‘main’:
test.c:6:9: warning: value computed is not used [-Wunused-value]
PCMSK1|(1<<PCINT8);
^
Re: Kurze Frage -> schnelle Antwort
Fritzler hat geschrieben:Zeich ma.Hightech hat geschrieben:Kann sein, das ich das echt übersehen habe, denn ich habe noch Variablen, die von denen der Compiler denkt ich nutze sie nicht, dann ist der Hinweis dort von mir übersehen worden.
Wenn der Compiler so viel Warnigs wirft übersieht man eben die wichtigen Warnings.
Code: Alles auswählen
avr-gcc -mmcu=atmega88p -Wall -g2 -Os -gstabs -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -std=c99 -DF_CPU=80000000 -I./ main.c -o eis.out
In file included from main.c:4:0:
defines.h:34:0: warning: »F_CPU« redefiniert [enabled by default]
#define F_CPU 8000000UL /* AVR FREQUENZ */
^
<command-line>:0:0: note: dies ist die Stelle der vorherigen Definition
In file included from ADC_Messung.h:3:0,
from main.c:6:
ADC_Messung.c: In function ‘messung’:
ADC_Messung.c:6:5: warning: variable ‘ad_low’ set but not used [-Wunused-but-set-variable]
int ad_low;
^
In file included from main.c:13:0:
main.h: At top level:
main.h:20:0: warning: »F_CPU« redefiniert [enabled by default]
#define F_CPU 800000UL
^
In file included from main.c:4:0:
defines.h:34:0: note: dies ist die Stelle der vorherigen Definition
#define F_CPU 8000000UL /* AVR FREQUENZ */
^
main.c: In function ‘main’:
main.c:104:9: warning: value computed is not used [-Wunused-value]
PCMSK1|(1<<PCINT8);
^
main.c:201:49: warning: ‘t_out’ may be used uninitialized in this function [-Wmaybe-uninitialized]
if ((!kompr) || kpause || (t_soll-35>=(t_out+2)))
- Bauteiltöter
- Beiträge: 254
- Registriert: So 11. Aug 2013, 17:37
Re: Kurze Frage -> schnelle Antwort
Oh da haben wir uns überschnitten
Das F_CPU redefined geraffel bekommst du ganz gut weg, wenn du die F_CPU-Einstellungen aus allen Dateien raus nimmst und stattdessen im Makefile setzt. (-DF_CPU=8000000UL an den Compiler). Oder aber du löscht es aus allen header Dateien raus außer einer, die ziehst du dann in allein Dateien, die F_CPU brauchen, an. (Include-guards im Header nicht vergessen).
Die letzte Warnung
Das F_CPU redefined geraffel bekommst du ganz gut weg, wenn du die F_CPU-Einstellungen aus allen Dateien raus nimmst und stattdessen im Makefile setzt. (-DF_CPU=8000000UL an den Compiler). Oder aber du löscht es aus allen header Dateien raus außer einer, die ziehst du dann in allein Dateien, die F_CPU brauchen, an. (Include-guards im Header nicht vergessen).
Die letzte Warnung
würde mir aber auch Sorgen machen, sowas zeigt häufig auf Logikfehler und undefiniertes Verhalten.warning: ‘t_out’ may be used uninitialized in this function
Re: Kurze Frage -> schnelle Antwort
in der int main(void) steht aber int t_out;Bauteiltöter hat geschrieben:Oh da haben wir uns überschnitten
Das F_CPU redefined geraffel bekommst du ganz gut weg, wenn du die F_CPU-Einstellungen aus allen Dateien raus nimmst und stattdessen im Makefile setzt. (-DF_CPU=8000000UL an den Compiler). Oder aber du löscht es aus allen header Dateien raus außer einer, die ziehst du dann in allein Dateien, die F_CPU brauchen, an. (Include-guards im Header nicht vergessen).
Die letzte Warnungwürde mir aber auch Sorgen machen, sowas zeigt häufig auf Logikfehler und undefiniertes Verhalten.warning: ‘t_out’ may be used uninitialized in this function
Re: Kurze Frage -> schnelle Antwort
Damit ist "t_out" zwar als Variable definiert, und es wird RAM-Platz dafür vorgesehen. Nur diese Variable hat noch keinen Wert zugewiesen bekommen, und könnte "irgendetwas" enthalten -> Dumm, wenn du einen errechneten Wert dann damit vergleichst -> Unbestimmtes ErgebnisHightech hat geschrieben:in der int main(void) steht aber int t_out;
Edith meint: Ganz gemein sind uninitialisierte Zeiger -> "Kracht" mit hoher Wahrscheinlichkeit bei der ersten Verwendung
Zuletzt geändert von xoexlepox am Sa 18. Mär 2017, 12:13, insgesamt 1-mal geändert.
- Bauteiltöter
- Beiträge: 254
- Registriert: So 11. Aug 2013, 17:37
Re: Kurze Frage -> schnelle Antwort
Ja, das ist die Definition. Der Compiler warnt dich, dass es einen Programmpfad gibt, der dazu führt, dass du lesend auf diese Variable zugreifst ohne sie zuvor geschrieben zu haben. Und da lokale Variablen nicht per Default auf 0 gesetzt werden kann dann irgendetwas in der Variable stehen. Du solltest also noch mal deine Programmlogik überdenken, vielleicht gibt es etwas, dass du nicht bedacht hast. Im Zweifelsfall reicht es, wenn du die Variable beim Definieren auf 0 setzt (int t_out=0), aber das sollte man nicht hinschreiben ohne vorher noch mal drüber nachgedacht zu haben.
Daher gibt es zum Teil auch Regeln, die es verbieten, einfach beim Variablen anlegen immer =0 anzuhängen, man unterdrückt die Warnung des Compilers. Durch solche Fehler stürzen zum Beispiel Flugzeuge und Satelliten ab oder es entstehen Sicherheitslücken.
Daher gibt es zum Teil auch Regeln, die es verbieten, einfach beim Variablen anlegen immer =0 anzuhängen, man unterdrückt die Warnung des Compilers. Durch solche Fehler stürzen zum Beispiel Flugzeuge und Satelliten ab oder es entstehen Sicherheitslücken.
Re: Kurze Frage -> schnelle Antwort
Es kommt aber auch bei überraschend trivialem Code (und bei Sprachen, bei denen das ein Fehler ist, der die Compilevorgang abbrechen lässt) dazu, dass der Compiler Codepfade sieht, die gar nicht existieren...Daher gibt es zum Teil auch Regeln, die es verbieten, einfach beim Variablen anlegen immer =0 anzuhängen, man unterdrückt die Warnung des Compilers. Durch solche Fehler stürzen zum Beispiel Flugzeuge und Satelliten ab oder es entstehen Sicherheitslücken.
Es ist also theoretisch durchaus denkbar, dass diese Warnung fehl am Platz ist.
- Bauteiltöter
- Beiträge: 254
- Registriert: So 11. Aug 2013, 17:37
Re: Kurze Frage -> schnelle Antwort
Stimmt natürlich, gibt ja genug externe Faktoren, die der Compiler nicht wissen kann. Daher noch mal über den Code nachdenken und wenn man sich sicher ist, dass das passt, einfach int t_out=0; schreiben.
Re: Kurze Frage -> schnelle Antwort
Bauteiltöter hat geschrieben:Stimmt natürlich, gibt ja genug externe Faktoren, die der Compiler nicht wissen kann. Daher noch mal über den Code nachdenken und wenn man sich sicher ist, dass das passt, einfach int t_out=0; schreiben.
Code: Alles auswählen
hier wird t_out beschrieben
mess=messung(1);
for (int i=0;i<61;i++)
{
warn=' ';
if (mess<15)
{
warn=0x3C;
}
if (mess>127)
{
warn=0x3E;
}
if (mess<=t_tab[i])
{
t_out=(i-35);
break;
}
}
Re: Kurze Frage -> schnelle Antwort
Aber bitte mit einem Kommentar, warum man das tut ("halt die Fresse, blöder compiler" oder besser "Dieser Wert wird immer überschrieben").
Sonst suggeriert man dem, der den Fehler sucht, dass 0 hier ein sorgfältig gewählter Standardwert ist. Das "=0" suggeriert halt nicht nur dem Compiler "ich weiß was ich da tue" sondern auch dem Menschen, der drüberliest.
Hightech: Dann ist die Warnung durchaus korrekt: Wenn der Messwert außerhalb des Bereichs ist, wird "warn" gesetzt, t_out enthält aber keinen sinnvollen Wert. Das ist (hoffentlich) in diesem Fall auch nicht nötig, das kann der Compiler aber nicht wissen.
Der Ansatz, sich rückwärts durch die Tabelle zu arbeiten ist im Übrigen eigentlich ziemlich geschickt. Klar, er ist sacklangsam, aber er löst das Problem in wenig Code.
Sonst suggeriert man dem, der den Fehler sucht, dass 0 hier ein sorgfältig gewählter Standardwert ist. Das "=0" suggeriert halt nicht nur dem Compiler "ich weiß was ich da tue" sondern auch dem Menschen, der drüberliest.
Hightech: Dann ist die Warnung durchaus korrekt: Wenn der Messwert außerhalb des Bereichs ist, wird "warn" gesetzt, t_out enthält aber keinen sinnvollen Wert. Das ist (hoffentlich) in diesem Fall auch nicht nötig, das kann der Compiler aber nicht wissen.
Der Ansatz, sich rückwärts durch die Tabelle zu arbeiten ist im Übrigen eigentlich ziemlich geschickt. Klar, er ist sacklangsam, aber er löst das Problem in wenig Code.
- Fritzler
- Beiträge: 12609
- Registriert: So 11. Aug 2013, 19:42
- Wohnort: D:/Berlin/Adlershof/Technologiepark
- Kontaktdaten:
Re: Kurze Frage -> schnelle Antwort
Kaum is man kurz einkaufen ist alles schon für Hightech erklärt
Hightech, zeig doch mal noch den Code für "ad_low".
Dann wärn alle Warnings aus deinem Code erstmal weg.
Hightech, zeig doch mal noch den Code für "ad_low".
Dann wärn alle Warnings aus deinem Code erstmal weg.
-
- Beiträge: 3261
- Registriert: Mo 12. Aug 2013, 19:47
Re: Kurze Frage -> schnelle Antwort
Statt in der Definition=0 zu schreiben würde ich lieber an den anderen Stellen, wo warn gesetzt wird, t_out auf 0 setzen (oder noch besser, einen Wert als Fehlerwert definieren und den setzen, wenngleich das in einem µC echt wenig Sinn hat). Dann merkt man bei nachfolgenden Änderungen sofort, daß man was Wichtiges vergessen hat, wenn das warning wiederkommt.
Edit: ich seh' gerade, daß dann noch eine Abfrage der Endbedingung gebraucht würde. Das wäre mir dann doch zuviel Overhead in runtime, dann doch lieber bei der Definition.
Edit: ich seh' gerade, daß dann noch eine Abfrage der Endbedingung gebraucht würde. Das wäre mir dann doch zuviel Overhead in runtime, dann doch lieber bei der Definition.
Zuletzt geändert von Name vergessen am Sa 18. Mär 2017, 13:29, insgesamt 2-mal geändert.
Re: Kurze Frage -> schnelle Antwort
Gerne hier:Fritzler hat geschrieben:Kaum is man kurz einkaufen ist alles schon für Hightech erklärt
Hightech, zeig doch mal noch den Code für "ad_low".
Dann wärn alle Warnings aus deinem Code erstmal weg.
Code: Alles auswählen
#include "ADC_Messung.h"
#include <avr/io.h>
int messung(int aux)
{
int ad_low;
int ad_high;
long sensor2d=0;
for(int z=0;z<15;z++)
{
ADMUX|=aux;
ADMUX|=(1<<REFS0);
ADMUX|=(1<<ADLAR);
ADCSRA |= (1<<ADEN) |(1<<ADPS1) |(1<<ADPS2);//|(1<<ADPS2)| (1<<ADPS1) | (1<<ADPS0);
ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
while ( ADCSRA & (1<<ADSC)) {} ; //auf Abschluss der Konvertierung warten
ADCSRA &= ~(1<<ADEN); //ADC aus
ADMUX&=~aux;
ad_low=ADCL; //das untere Byte lesen
ad_high=ADCH; //das obere Byte lesen
sensor2d +=(ad_high);//((ad_high<<8)|ad_low);
}
return sensor2d/15;
}//Messung
Re: Kurze Frage -> schnelle Antwort
Ist ja auch nicht von mir, ich nehme immer den Vorschlaghammer, und zimmere so lange auf dem Code herum, bis der geht.ferdimh hat geschrieben: Der Ansatz, sich rückwärts durch die Tabelle zu arbeiten ist im Übrigen eigentlich ziemlich geschickt. Klar, er ist sacklangsam, aber er löst das Problem in wenig Code.
Ich brauche immer einen wysiwyg compiler/debugger.
Ich schreib immer eine Zeile oder einen Block und schau was passiert.
Immer wieder überraschend, was man sich gedacht hat, und was dann heraus kommt.
- Fritzler
- Beiträge: 12609
- Registriert: So 11. Aug 2013, 19:42
- Wohnort: D:/Berlin/Adlershof/Technologiepark
- Kontaktdaten:
Re: Kurze Frage -> schnelle Antwort
Auch du kannst irgendwann trocken Programmieren und dann läufts, das dauert immer etwas bis mans kann.
ad_low brauchste also echt überhaupt nicht, also lass es ruhig weg.
Da du ADLAR = 1 gesetzt hast reicht das ADCH lesen aus, auch wenn es ein 16Bit Register ist:
ad_low brauchste also echt überhaupt nicht, also lass es ruhig weg.
Da du ADLAR = 1 gesetzt hast reicht das ADCH lesen aus, auch wenn es ein 16Bit Register ist:
When ADCL is read, the ADC Data Register is not updated until ADCH is read. Consequently, if
the result is left adjusted (ADLAR=1) and no more than 8-bit precision is required, it is sufficient to read
ADCH. Otherwise, ADCL must be read first, then ADCH
Re: Kurze Frage -> schnelle Antwort
Ja, ist reine Faulheit. Ist meine Standard-Include für den ADCFritzler hat geschrieben:Auch du kannst irgendwann trocken Programmieren und dann läufts, das dauert immer etwas bis mans kann.
ad_low brauchste also echt überhaupt nicht, also lass es ruhig weg.
- Marsupilami72
- Beiträge: 2882
- Registriert: Mo 4. Nov 2013, 23:48
- Wohnort: mittendrin
Re: Kurze Frage -> schnelle Antwort
Hast Du Erfahrungswerte, was eine Sickenreparatur dort kostet? Machen die das ordentlich?Kuehnetec hat geschrieben:Zu den Sicken der Lautsprecher:
Hier in Berlin gibts eine Firma die machen das überaus bezahlbar:
http://www.lup-berlin.de/
Die gezeigten Onkyo Tieftöner sind recht hochwertig ausgeführt da lohnen sich neue Sicken.
Mfg Andreas
Ich habe hier auch noch einen 16er mit defekter Sicke hier liegen, den ich definitiv reparieren lassen will.
Re: Kurze Frage -> schnelle Antwort
Kompakte Alternative zu CEE32 ... kennt wer diese Steckverbinder?
Re: Kurze Frage -> schnelle Antwort
Das Viereck mit fünf Löchern habe ich schon als Batteriestecker an einer Usv gesehen. Und ich suche immer noch einen solchen...
MfG. Andreas
MfG. Andreas
Re: Kurze Frage -> schnelle Antwort
Das stimmt mich jetzt nicht wirklich zuversichtlicher
Re: Kurze Frage -> schnelle Antwort
Gut, dann pack ich mein Wissen dazu
https://www.e-mike.net/maxicharger/maxi/
Ich dachte, es kennt jemand direkt den Hersteller.
https://www.e-mike.net/maxicharger/maxi/
Ich dachte, es kennt jemand direkt den Hersteller.
- Weisskeinen
- Beiträge: 3951
- Registriert: Di 27. Aug 2013, 16:19
Re: Kurze Frage -> schnelle Antwort
Wenn man nicht gerade zwei linke Füße statt Hände hat, kann man das auch selbst machen. Sicken gibt es für wenig Geld zu kaufen, oft auch als Kit, in dem eine Anleitung und passender Kleber drin ist.Marsupilami72 hat geschrieben:Hast Du Erfahrungswerte, was eine Sickenreparatur dort kostet? Machen die das ordentlich?Kuehnetec hat geschrieben:Zu den Sicken der Lautsprecher:
Hier in Berlin gibts eine Firma die machen das überaus bezahlbar:
http://www.lup-berlin.de/
Die gezeigten Onkyo Tieftöner sind recht hochwertig ausgeführt da lohnen sich neue Sicken.
Mfg Andreas
Ich habe hier auch noch einen 16er mit defekter Sicke hier liegen, den ich definitiv reparieren lassen will.