Kurze Frage -> schnelle Antwort

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Azze
Beiträge: 2558
Registriert: Di 13. Aug 2013, 09:53

Re: Kurze Frage -> schnelle Antwort

Beitrag von Azze »

Andreas_P hat geschrieben:und die Sicke ausgekotzt.
Sicken kann man ersetzen
Benutzeravatar
PowerAM
Beiträge: 4555
Registriert: Di 13. Aug 2013, 23:14
Wohnort: JO62rr

Re: Kurze Frage -> schnelle Antwort

Beitrag von PowerAM »

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.

Bild->zoom

Meine Frage, kennt jemand eine Quelle für passende Ersatz Lautsprecher?
Es müssen keine Original ONKYO sein.
Moin Andreas!

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.
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

MEGA Problem, Interrupt interruptet nicht

Beitrag von Hightech »

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 ?

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();
Benutzeravatar
Fritzler
Beiträge: 12609
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Kurze Frage -> schnelle Antwort

Beitrag von Fritzler »

Tippfehler:
PCMSK1|(1<<PCINT8);
vs
PCMSK1|=(1<<PCINT8);
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Fritzler hat geschrieben:Tippfehler:
PCMSK1|(1<<PCINT8);
vs
PCMSK1|=(1<<PCINT8);
Nein, das kann es nicht gewesen sein.

Nein
Nein

3 Stunden

Neeeeee


Auf keinen Fall
Kuehnetec
Beiträge: 505
Registriert: Mo 8. Feb 2016, 10:24
Wohnort: Berlin

Re: Kurze Frage -> schnelle Antwort

Beitrag von Kuehnetec »

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
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Fritzler hat geschrieben:Tippfehler:
Danke, das hätte ich in 100 Jahren nicht gesehen :)
sysconsol
Beiträge: 4059
Registriert: Fr 8. Jul 2016, 17:22

Re: Kurze Frage -> schnelle Antwort

Beitrag von sysconsol »

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.
Ich würde die Grenzwerte definitiv nicht überschreiten.
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...)
Benutzeravatar
Andreas_P
Beiträge: 1400
Registriert: Mo 12. Aug 2013, 11:35
Wohnort: Lohr am Main
Kontaktdaten:

Re: Kurze Frage -> schnelle Antwort

Beitrag von Andreas_P »

PowerAM
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.
Wegen den Lautsprechern.
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
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.
Klingt interessant, mal die fragen was es kosten würde die reparieren zulassen.

lg, Andreas
Kuehnetec
Beiträge: 505
Registriert: Mo 8. Feb 2016, 10:24
Wohnort: Berlin

Re: Kurze Frage -> schnelle Antwort

Beitrag von Kuehnetec »

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
Metalfreak
Beiträge: 142
Registriert: Mo 12. Aug 2013, 15:35
Wohnort: Westliches NRW

Re: Kurze Frage -> schnelle Antwort

Beitrag von Metalfreak »

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)
Benutzeravatar
ferdimh
Beiträge: 9433
Registriert: Fr 16. Aug 2013, 15:19

Re: Kurze Frage -> schnelle Antwort

Beitrag von ferdimh »

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.
Benutzeravatar
Bauteiltöter
Beiträge: 254
Registriert: So 11. Aug 2013, 17:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Bauteiltöter »

Hightech hat geschrieben:
Fritzler hat geschrieben:Tippfehler:
Danke, das hätte ich in 100 Jahren nicht gesehen :)
Ich weiß, ich habe es schon mal erwähnt, aber die Compiler können bei sowas helfen wenn sie dürfen!
-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); 
         ^
-Wall -Wextra sollte bei jedem Projekt als Compilerschalter gesetzt sein.
Benutzeravatar
Kuddel
Beiträge: 5115
Registriert: Fr 28. Jun 2013, 10:56
Wohnort: Denk immer an St. Alamo!

Re: Kurze Frage -> schnelle Antwort

Beitrag von Kuddel »

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
Benutzeravatar
ferdimh
Beiträge: 9433
Registriert: Fr 16. Aug 2013, 15:19

Re: Kurze Frage -> schnelle Antwort

Beitrag von ferdimh »

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...
Benutzeravatar
timaks
Beiträge: 502
Registriert: So 11. Aug 2013, 21:01

Re: Kurze Frage -> schnelle Antwort

Beitrag von timaks »

@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...
xanakind
Beiträge: 12624
Registriert: So 11. Aug 2013, 21:55

Re: Kurze Frage -> schnelle Antwort

Beitrag von xanakind »

jetzt mach mir keine Angst!
http://www.ebay.de/itm/122363954788?_tr ... EBIDX%3AIT
Sogar mit Prüfprotokoll nach DIN VDE ISO 4711......
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Kurze Frage -> schnelle Antwort

Beitrag von xoexlepox »

Kuddel hat geschrieben:Ist das schädlich, auf den Atmel-Ausgang 9Volt zu geben? Den Strom würde ich mittels 330 R begrenzen.
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" bezeichenen ;)
Benutzeravatar
Fritzler
Beiträge: 12609
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Kurze Frage -> schnelle Antwort

Beitrag von Fritzler »

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.
Benutzeravatar
Kuddel
Beiträge: 5115
Registriert: Fr 28. Jun 2013, 10:56
Wohnort: Denk immer an St. Alamo!

Re: Kurze Frage -> schnelle Antwort

Beitrag von Kuddel »

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 :D .
Ich guck mal, ob ich genug Optokoppler rumfliegen habe, sonst schalte ich die einfach Parallel.
Gruß
Kuddel
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Bauteiltöter hat geschrieben:
Hightech hat geschrieben:
Fritzler hat geschrieben:Tippfehler:
Danke, das hätte ich in 100 Jahren nicht gesehen :)
Ich weiß, ich habe es schon mal erwähnt, aber die Compiler können bei sowas helfen wenn sie dürfen!
-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); 
         ^
-Wall -Wextra sollte bei jedem Projekt als Compilerschalter gesetzt sein.
Meiner nicht, im makefile steht:
CFLAGS=-mmcu=$(MMCU) -Wall
Benutzeravatar
Fritzler
Beiträge: 12609
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Kurze Frage -> schnelle Antwort

Beitrag von Fritzler »

Hau mal noch -Wextra hinter und sag mal die AVR-GCC Version
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Fritzler hat geschrieben:Hau mal noch -Wextra hinter und sag mal die AVR-GCC Version
Die Version ist
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Benutzeravatar
Bauteiltöter
Beiträge: 254
Registriert: So 11. Aug 2013, 17:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Bauteiltöter »

Hightech hat geschrieben:
Fritzler hat geschrieben:Hau mal noch -Wextra hinter und sag mal die AVR-GCC Version
Die Version ist
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
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).
Benutzeravatar
Weisskeinen
Beiträge: 3951
Registriert: Di 27. Aug 2013, 16:19

Re: Kurze Frage -> schnelle Antwort

Beitrag von Weisskeinen »

Kuddel hat geschrieben:Frage: Ist das schädlich, auf den Atmel-Ausgang 9Volt zu geben? Den Strom würde ich mittels 330 R begrenzen.
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...
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Bauteiltöter hat geschrieben:
Hightech hat geschrieben:
Fritzler hat geschrieben:Hau mal noch -Wextra hinter und sag mal die AVR-GCC Version
Die Version ist
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
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).
Ich nehme alles zurück und behaupte das Gegenteil.
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);  
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.
Benutzeravatar
Fritzler
Beiträge: 12609
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Kurze Frage -> schnelle Antwort

Beitrag von Fritzler »

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.
Zeich ma.
Wenn der Compiler so viel Warnigs wirft übersieht man eben die wichtigen Warnings.
Benutzeravatar
Bauteiltöter
Beiträge: 254
Registriert: So 11. Aug 2013, 17:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Bauteiltöter »

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); 
         ^
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Fritzler hat geschrieben:
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.
Zeich ma.
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)))

Benutzeravatar
Bauteiltöter
Beiträge: 254
Registriert: So 11. Aug 2013, 17:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Bauteiltöter »

Oh da haben wir uns überschnitten :D

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
warning: ‘t_out’ may be used uninitialized in this function
würde mir aber auch Sorgen machen, sowas zeigt häufig auf Logikfehler und undefiniertes Verhalten.
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Bauteiltöter hat geschrieben:Oh da haben wir uns überschnitten :D

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
warning: ‘t_out’ may be used uninitialized in this function
würde mir aber auch Sorgen machen, sowas zeigt häufig auf Logikfehler und undefiniertes Verhalten.
in der int main(void) steht aber int t_out;
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Kurze Frage -> schnelle Antwort

Beitrag von xoexlepox »

Hightech hat geschrieben:in der int main(void) steht aber int t_out;
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 Ergebnis ;)

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.
Benutzeravatar
Bauteiltöter
Beiträge: 254
Registriert: So 11. Aug 2013, 17:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Bauteiltöter »

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.
Benutzeravatar
ferdimh
Beiträge: 9433
Registriert: Fr 16. Aug 2013, 15:19

Re: Kurze Frage -> schnelle Antwort

Beitrag von ferdimh »

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 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...
Es ist also theoretisch durchaus denkbar, dass diese Warnung fehl am Platz ist.
Benutzeravatar
Bauteiltöter
Beiträge: 254
Registriert: So 11. Aug 2013, 17:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Bauteiltöter »

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.
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

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;
	}
      }
Benutzeravatar
ferdimh
Beiträge: 9433
Registriert: Fr 16. Aug 2013, 15:19

Re: Kurze Frage -> schnelle Antwort

Beitrag von ferdimh »

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.
Benutzeravatar
Fritzler
Beiträge: 12609
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Kurze Frage -> schnelle Antwort

Beitrag von Fritzler »

Kaum is man kurz einkaufen ist alles schon für Hightech erklärt :lol:

Hightech, zeig doch mal noch den Code für "ad_low".
Dann wärn alle Warnings aus deinem Code erstmal weg.
Name vergessen
Beiträge: 3261
Registriert: Mo 12. Aug 2013, 19:47

Re: Kurze Frage -> schnelle Antwort

Beitrag von Name vergessen »

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.
Zuletzt geändert von Name vergessen am Sa 18. Mär 2017, 13:29, insgesamt 2-mal geändert.
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Fritzler hat geschrieben:Kaum is man kurz einkaufen ist alles schon für Hightech erklärt :lol:

Hightech, zeig doch mal noch den Code für "ad_low".
Dann wärn alle Warnings aus deinem Code erstmal weg.
Gerne ;) hier:

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
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

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.
Ist ja auch nicht von mir, ich nehme immer den Vorschlaghammer, und zimmere so lange auf dem Code herum, bis der geht.
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.
Benutzeravatar
Fritzler
Beiträge: 12609
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Kurze Frage -> schnelle Antwort

Beitrag von Fritzler »

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:
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
Benutzeravatar
Hightech
Beiträge: 11505
Registriert: So 11. Aug 2013, 18:37

Re: Kurze Frage -> schnelle Antwort

Beitrag von Hightech »

Fritzler 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.
Ja, ist reine Faulheit. Ist meine Standard-Include für den ADC ;)
Benutzeravatar
Marsupilami72
Beiträge: 2882
Registriert: Mo 4. Nov 2013, 23:48
Wohnort: mittendrin

Re: Kurze Frage -> schnelle Antwort

Beitrag von Marsupilami72 »

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
Hast Du Erfahrungswerte, was eine Sickenreparatur dort kostet? Machen die das ordentlich?

Ich habe hier auch noch einen 16er mit defekter Sicke hier liegen, den ich definitiv reparieren lassen will.
Benutzeravatar
2moose
Beiträge: 396
Registriert: Mo 14. Sep 2015, 12:01

Re: Kurze Frage -> schnelle Antwort

Beitrag von 2moose »

Kompakte Alternative zu CEE32 ... kennt wer diese Steckverbinder?
Dateianhänge
IMG-20170319-WA0001.jpg
IMG-20170319-WA0002.jpg
andreas6
Beiträge: 4165
Registriert: So 11. Aug 2013, 15:09

Re: Kurze Frage -> schnelle Antwort

Beitrag von andreas6 »

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
Benutzeravatar
2moose
Beiträge: 396
Registriert: Mo 14. Sep 2015, 12:01

Re: Kurze Frage -> schnelle Antwort

Beitrag von 2moose »

Das stimmt mich jetzt nicht wirklich zuversichtlicher ;-)
andreas6
Beiträge: 4165
Registriert: So 11. Aug 2013, 15:09

Re: Kurze Frage -> schnelle Antwort

Beitrag von andreas6 »

Zumindest habe ich mal eine Zeichnung davon gefunden und hier eingestellt.

MfG. Andreas
Benutzeravatar
2moose
Beiträge: 396
Registriert: Mo 14. Sep 2015, 12:01

Re: Kurze Frage -> schnelle Antwort

Beitrag von 2moose »

Gut, dann pack ich mein Wissen dazu
https://www.e-mike.net/maxicharger/maxi/

Ich dachte, es kennt jemand direkt den Hersteller.
Benutzeravatar
Weisskeinen
Beiträge: 3951
Registriert: Di 27. Aug 2013, 16:19

Re: Kurze Frage -> schnelle Antwort

Beitrag von Weisskeinen »

Marsupilami72 hat geschrieben:
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
Hast Du Erfahrungswerte, was eine Sickenreparatur dort kostet? Machen die das ordentlich?

Ich habe hier auch noch einen 16er mit defekter Sicke hier liegen, den ich definitiv reparieren lassen will.
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.
Antworten