Grüß euch! Also ich hab ein etwas ungewöhnliches Problem wie ich meine. Der µC fängt erst an zu arbeiten nach dem ich ihn ein oder zwei Mal neu aus- und wieder eingesteckt habe. Ich verwende den ATTiny44 und die Software von Benedikt K. zur Ansteuerung eines RFM12. Nach dem die Resets durch geführt wurde funktioniert auch alles wunderbar. Mittels den Debug LEDs kann ich nachvollziehen, dass wenn es hängt es immer in der ersten send() Funktion hängt. Ich kann mir, das nicht so ganz erklären, ev. hat von euch jemand eine Idee. Lg
Hast du vielleicht die 100nF an allen Versorgungsanschlüssen vergessen?
Das RFM12 braucht 100ms zur Initialisierung, vielleicht geht es deshalb erst das zweite Mal? D.h. bevor man irgendetwas vom RFM liest oder zu ihm sendet erst einmal 100ms warten.
:
Bearbeitet durch User
Wo müssten die 100nF Kondis denn genau hin? Sind die wirklich nötig? Kann mir nicht vorstellen, dass die mit diesem Phänomen zu tun haben?! @Conny: In der rf12_init() Fuktion wird bereits 100ms gewartet bevor irgendetwas gemacht wird. Lg
>Sind die wirklich nötig? ja. >Wo müssten die 100nF Kondis denn genau hin? >...Versorgungsanschlüssen...
RFM12 schrieb: > Kann mir nicht vorstellen Elektronik hat viel mit Wissen und weniger mit Vorstellungsgabe bei keinem Wissen zu tun.
Jetzt wird es noch geiler. Hab 2 x 100nF dazu gelötet. Einmal für die Versorgung des µC's und ein mal für das RFM12. Also zwischen +5V und GND. Und jetzt kommts, danach funktioniert es überhaupt nicht mehr. Egal wie oft ich es aus- und einschalte. Erst nachdem ich die C's wieder entfernt hab, hat es nach 2 maligem AUS/EIN wieder funktioniert.
Dann stimen die Werte nicht (100nF) oder einer oder beide sind kaputt. Die Müssen halt rein sonst Funktioniert deine Schaltung nicht.
Ist es ein RFM12 für 5V oder ein RFM12B für 3.3V? Und poste doch mal ein Bild der Platine (Vorder- und Rückseite).
:
Bearbeitet durch User
Also nachdem die C's wiederum angebracht wurden zeigt sich keine Besserung des Problems. Danke für eure Antworten!
Sry, ist vielleicht etwas unklar formuliert. Es funktioniert nun wie oben im ersten Post. Am Grundproblem hat sich also nichts verändert.
Die Cs zum Abblocken gehören nahe die an die Speisungs-Pins und nicht Kilometerweit entfernt. So nützen sie garantiert nichts.
Also irgendwie sieht das so aus, als ob zwischen Pin 11 und Pin 12 auf Deiner Streifenplatine Kurzschlüsse wären. Nimm einen Durchgangsprüfer und schau mal, ob da nicht noch mehr Kurzschlüsse sind, die evt. auch erst bei mechanischer Belastung entstehen, das könnte erklären, weshalb nach dem Einlöten der Abblock-Cs gar nix mehr ging, weil halt irgendwo ein Kurschluss war, der nachher wieder weg war ...
Danke für eure Antworten. Wegen den Kurzschlüssen schau ich morgen. Noch eine Frage zu den C's. Soll ich sie direkt an die Pins des Sockel löten? Lg
RFM12 schrieb: > Noch eine Frage zu den C's. > Soll ich sie direkt an die Pins des Sockel löten? Am besten schon, möglichst nahe und zwar beide Anschlüsse (+ und GND) sollten möglichst kurze Wege haben zum IC. Oder zumindest noch eine direkte kurze GND Verbindung vom Attiny GND zum C einfügen. Auch am RFM12 direkt an die Speisung. Die Frage ist auch, mit was wird es gespiesen? Wie lange ist Zuleitung?
In rf12.c
1 | #define F_CPU 800000UL |
2 | ... |
3 | _delay_us(0.3); |
Irgendwo steht, Du nutzt 8MHz. Kann es sein, dass da eine 0 fehlt? Wäre zumindest ein Versuch wert, ob es mit 8000000 besser läuft. Das mit den Block Kondensatoren ist meiner Erfahrung nach immer relativ. Wenn man eine Platine mit "dünnen" Leitungen macht, ist das mit der Nähe des Kondensators schon sehr wichtig. Bei Lochraster hätte ich getippt, dass Deine Ausführugn ganz OK ist. Bei Modulen sind solche Kondensatoren immer "interressant". Sollte eigentlich im Datenblatt stehen, wenn die benötigt werden. Meistens sind die aber eben "so dicht wie möglich" dran an den Chips, und das ist oft AUF der Platine so das die zusätzlichen nicht wirklich benötigt werden.
Michael S. schrieb: > Also irgendwie sieht das so aus, als ob zwischen Pin 11 und Pin 12 auf > Deiner Streifenplatine Kurzschlüsse wären. Kurzschlüsse hab ich leider keine gefunden :(. Markus schrieb: > Am besten schon, möglichst nahe und zwar beide Anschlüsse (+ und GND) > sollten möglichst kurze Wege haben zum IC. Hab ich nun gemacht. Das Problem ist, dass es nun wieder schlechter als vorher funktioniert?! > Die Frage ist auch, mit was wird es gespiesen? Wie lange ist Zuleitung? Versorgung über USB. Siehe Bild. Achim K. schrieb: > Irgendwo steht, Du nutzt 8MHz. Kann es sein, dass da eine 0 fehlt? > Wäre zumindest ein Versuch wert, ob es mit 8000000 besser läuft. Danke! Das werde ich verbessern. Obwohl es, das wahrscheinlich nicht ist, denn sonst würde es gar nicht funktionieren?! Bzw. die Warte Zeiten wären total falsch und so falsch kommt es mir leider nicht vor...
Programmiere mal die Fuses so das der ATTiny erst nach 64 mSek losrennt, bis dahin sollte die Versorgungsspannung stabil sein also Elkos voll. Zur Not kann man noch über die Resetbeschaltung RC-Glied den Start noch etwas verzögern damit das RFM12 seine 100mSek Zeit bekommt. Du solltest dir mal für solche Versuchsaufbauten ein Steckbrett z.B. von Reichelt zulegen. Siehe Anhang dort sieht du auch wo die 100nF Kerkos hingehören. Also möglichst nah zw. VCC und GND bzw AVCC und AGND und der Resetpin sollte auch noch einen bekommen dann ist die Gefahr unerwünschter Resets aufs mindeste reduziert. Zu den Abblockkondensatoren, diese sind sehr niederohmig und können kurze höhe Ströme liefern, dadurch werden die Leitungen der Versorgungsspannung nicht mit diesen kurzen Impulsen belastet und erzeugen dadurch auch keine Störsignale. Mit dem Multimeter sieht man soetwa nicht da sind 5V immer 5V auch wenn diese total durch solche Störungen verseucht sind.
> Danke! Das werde ich verbessern. Obwohl es, das wahrscheinlich nicht > ist, denn sonst würde es gar nicht funktionieren?! Bzw. die Warte Zeiten > wären total falsch und so falsch kommt es mir leider nicht vor... Was es "wahrscheinlich auch nicht" ist,
1 | cbi(RF_PORT, CS); |
2 | for (i=0; i<16; i++) |
3 | { |
4 | if (wert&32768) |
5 | sbi(RF_PORT, SDI); |
6 | else |
7 | cbi(RF_PORT, SDI); |
8 | werti<<=1; |
9 | if (RF_PIN&(1<<SDO)) |
10 | werti|=1; |
11 | sbi(RF_PORT, SCK); |
12 | wert<<=1; |
13 | _delay_us(0.3); |
14 | cbi(RF_PORT, SCK); |
15 | } |
16 | |
17 | sbi(RF_PORT, CS); |
es ist nur das Timing für SCK High bestimmt, alles andere nicht. Also die Zeiten für CS sind eher undefiniert, die Zeiten für SCK Low sind undefiniert.
RFM12 schrieb: > Markus schrieb: >> Am besten schon, möglichst nahe und zwar beide Anschlüsse (+ und GND) >> sollten möglichst kurze Wege haben zum IC. > > Hab ich nun gemacht. Das Problem ist, dass es nun wieder schlechter als > vorher funktioniert?! Sollte man als Abblockkondensatoren nicht Keramikkondensatoren (Material Z5U oder X7R) verwenden? Folienkondensatoren sollen ja eine Schwingungsneigung fördern. Grüsse Klaus
RFM12 schrieb: > Siehe Bild. Bitte Bildformate beachten! Niemand braucht die matschigen Fotos mit einer derart riesigen Auflösung.
Leider besteht das Problem immer noch. Ich musste die Schaltung wieder 3 Mal an- abstecken damit sie funktioniert hat. Ich muss mir einen feinere Lötspitze besorgen. Das anlöten des Kondensators am RFM12 war schwierig und die Lötpunkte ungenau. Deswegen hab ich ihn fürs erste weggelassen. Das Problem scheint aber zumindest beim RFM12 zu sein. Ich hab folgenden Code in der Main:
1 | PORTB |= (1 << PB2); |
2 | // Initialization
|
3 | INIT_ANALOG_COMP(); |
4 | rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) |
5 | rf12_setfreq(RF12FREQ(868.92)); // Sende/Empfangsfrequenz auf 868.92MHz einstellen |
6 | rf12_setbandwidth(4, 0, 0); // 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm |
7 | rf12_setbaud(4800); // 4800 baud |
8 | rf12_setpower(0, 5); // 10mW Ausgangangsleistung, 120kHz Frequenzshift |
9 | set_sleep_mode(SLEEP_MODE_IDLE); // Only Idle Sleep mode will be used |
10 | |
11 | // Global Interrupts enable
|
12 | sei(); |
13 | |
14 | PORTA |= (1 << PA7); |
Es ist dann so, dass die erste LED angeht, die Zweite aber nicht. Das bedeutet wohl, dass er irgendwo beim initialisieren hängen bleibt. Aber, dass es manchmal funktioniert und dann wieder nicht ist schon eigenartig?! Diese Dinge hab ich nun an meiner Schaltung nachgeholt: Achim K. schrieb: > Irgendwo steht, Du nutzt 8MHz. Kann es sein, dass da eine 0 fehlt? > Wäre zumindest ein Versuch wert, ob es mit 8000000 besser läuft. Hab ich nun geändert. Das neue Programm steht im Anhang. Hans H. schrieb: > Reset-Beschaltung am Controller fehlt! Hab ich ergänzt. Neue Schaltung im Anhang! Thomas O. schrieb: > Programmiere mal die Fuses so das der ATTiny erst nach 64 mSek losrennt, > bis dahin sollte die Versorgungsspannung stabil sein also Elkos voll. Waren bereits eingestellt. Thomas O. schrieb: > Zur Not kann man noch über die Resetbeschaltung RC-Glied den Start noch > etwas verzögern damit das RFM12 seine 100mSek Zeit bekommt. Die 100ms sind bereits in der rf12_init() Funktion vorgesehen. @Achim K.: Die Definition von F_CPU findet auch noch mal in der delay.h statt. Dort ist/war es korrekt 8000000UL. Deswegen hat es wahrscheinlich auch funktioniert. Wenn du in der main() schaust, dann befindet sich dort eine Warteschleife von 3 Sekunden: Die hat super funktioniert. Klaus I. schrieb: > Sollte man als Abblockkondensatoren nicht Keramikkondensatoren (Material > Z5U oder X7R) verwenden? Hab diese hier: http://www.pollin.de/shop/dt/MTkzOTk3OTk-/Bauelemente_Bauteile/Passive_Bauelemente/Kondensatoren/MKT_Kondensator.html Das sollten doch Keramik-C's sein oder? Jörg Wunsch schrieb: > Bitte Bildformate beachten! Niemand braucht die matschigen Fotos > mit einer derart riesigen Auflösung. Sry, die letzten waren für nix. Aber wenn man sich die Schaltung anschauen will dann braucht man doch mehr Auflösung?!
Bist Du sicher, dass Dir der Analog Comp Int nicht gleich die LED wieder umschaltet, die Du als 2. anschaltest?
RFM12 schrieb: > Klaus I. schrieb: >> Sollte man als Abblockkondensatoren nicht Keramikkondensatoren (Material >> Z5U oder X7R) verwenden? > > Hab diese hier: > http://www.pollin.de/shop/dt/MTkzOTk3OTk-/Bauelemente_Bauteile/Passive_Bauelemente/Kondensatoren/MKT_Kondensator.html > Das sollten doch Keramik-C's sein oder? Leider nicht :o) Du hast Folienkondensatoren. Im Kondensator-Artikel des hiesigen Wikis ist auch ein Link auf den Beitrag "Abblockkondensator Kerko oder Folie" Als Abblockkondensator nimmt man üblicherweise 100 nF Vielschicht-Keramikkondensatoren (Material bevorzugt X7R oder auch zur Not Z5U). Grüße Klaus
Conny G. schrieb: > Bist Du sicher, dass Dir der Analog Comp Int nicht gleich die LED wieder > umschaltet, die Du als 2. anschaltest? Nein, sicher bin ich mir nicht. Da ich aber nichts an diesem Eingang anlege geh ich davon aus, dass er nicht triggert. Klaus I. schrieb: > Als Abblockkondensator nimmt man üblicherweise 100 nF > Vielschicht-Keramikkondensatoren (Material bevorzugt X7R oder auch zur > Not Z5U). Gibts die irgendwo anders als bei Farnell? :S
Brauchst du keinen Quarz wenn du mit 8 MHz Taktest?
RFM12 schrieb: > Conny G. schrieb: >> Bist Du sicher, dass Dir der Analog Comp Int nicht gleich die LED wieder >> umschaltet, die Du als 2. anschaltest? > > Nein, sicher bin ich mir nicht. Da ich aber nichts an diesem Eingang > anlege geh ich davon aus, dass er nicht triggert. Schalt ihn zur Sicherheit mal nicht an. > > Klaus I. schrieb: >> Als Abblockkondensator nimmt man üblicherweise 100 nF >> Vielschicht-Keramikkondensatoren (Material bevorzugt X7R oder auch zur >> Not Z5U). > > Gibts die irgendwo anders als bei Farnell? :S
Dein Tiny hat ja einen internen ~8MHz Taktgeber...Dieser wird stark durch die Versorgungsspannung und der Tempratur beinflusst....Vielleicht auch mal in diese Richtung denken ;-)
RFM12 schrieb: > Klaus I. schrieb: >> Als Abblockkondensator nimmt man üblicherweise 100 nF >> Vielschicht-Keramikkondensatoren (Material bevorzugt X7R oder auch zur >> Not Z5U). > > Gibts die irgendwo anders als bei Farnell? :S Die gibts überall. http://www.reichelt.de/?ARTICLE=22853; zum Beispiel.
Bülent C. schrieb: > Dein Tiny hat ja einen internen ~8MHz Taktgeber...Dieser wird stark > durch die Versorgungsspannung und der Tempratur beinflusst....Vielleicht > auch mal in diese Richtung denken ;-) Also erst wieder mit Takt des RFM12 versorgen? Ich sträube mich aber irgendwie dagegen eine Leitung mit 10MHz quer über das Board zu legen. Es kann doch nicht so schlimm sein, dass der Takt ein wenig schwankt?! Luca E. schrieb: > Die gibts überall. http://www.reichelt.de/?ARTICLE=22853; zum Beispiel. Danke! Conny G. schrieb: > Schalt ihn zur Sicherheit mal nicht an. Ja, das könnte ich noch testen.
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.