Hallo, bastele hier was mit nem Atmega 128 / Bascom. Problem ist das ein Portpin an dem ein Relais hängt sporadisch abfällt. Im Sourcecode wird er an einer Stelle ein und an 4 Stellen ausgeschaltet. Es handelt sich um PortC.2, also einen normalen IO ohne irgendwelche Sonderfunktionen wie IRQ oder so.. Der 128er wird auch im richtigem Modus betrieben, das 103 Bit ist gelöscht. Zwecks Fehlersuche gebe ich auch nach dem Setzen/löschen des Ports seriell einen Status aus. Wenn die Portänderung gemäß Programmablauf kommt dann kommt diese Ausgabe auch aber nicht im Fehlerfall. Insgesamt fütter dieser Port 5 Relais. Alle anderen bleiben im Fehlerfall da wo sie sein sollen. Es gibt auch kein Reset oder so. Vcc ist sauber und mehrfach mit 100nF geblockt. Controller läuft auf 4Mhz intern. Irgendjemand ne Idee wo ich noch suchen könnte ? Danke und Gruss Calli
Karl J. schrieb: > Irgendjemand ne Idee wo ich noch suchen könnte ? Ja, in Quellcode, Schaltplan und Bildern vom Aufbau.
Da suche ich ja schon seit Ewigkeiten :-) Proz ist ein TQFP auf einer ordentlichen Leiterplatte. Also kein fliegender Aufbau. Versorgung per Steckernetzteil 12V -> 470yF -> SIL Schaltregler + gefordertem Low ESR am Ausgang. Proz selber hat an den VCC´s 4x 100nF Kerko 0805 Am Portpin hängt ein 1.5K Basiswiderstand / BC847 der die Spule eines Relais was selbstverständlich ne Freilaufdiode hat gegen GND zieht. Die Basis wird mit 2.7K runtergezogen. So sieht die Schaltung für alle Relais aus. Bascom Deklaration:
1 | |
2 | |
3 | |
4 | |
Im Mainloop gebe ich nun stetig den Zustand aus:
1 | |
2 | |
3 | |
4 | |
5 | |
Tritt der Fehler auf so wird der Portzustand auch korrekt angezeigt. Also statt 1 dann 0 Von diesen Relaisplatinen gibt's 3 Stk. alle zeigen das gleiche Verhalten. Gruss Calli
Nachdem kaum jemand so eine Platine und die Software hat, wirst du schon mit etwas mehr herausrücken müssen. Entweder hast du in allen drei Platinen einen Fehler oder was ich eher glaube, du hast einen Softwarefehler. Also Schaltung, Layout und die gesamte SW mit guter Beschreibung.
Karl J. schrieb: > Tritt der Fehler auf so wird der Portzustand auch korrekt angezeigt. > Also statt 1 dann 0 Das ist kein Fehler, mit PortC.2 wird das angezeigt, was du geschaltet hast, nicht der tatsächliche Zustand des Pins. Wenn da also 0 eingelesen wird, hast du in deinem Programm auch irgendwo PortC.2 auf 0 gestellt. > Problem ist das ein Portpin an dem ein Relais hängt sporadisch abfällt. Nein, Problem ist, dass du diesen Pin irgendwo im Programm sporadisch abschaltest.
Gast
#4759960
Hallo ! Ist Dir dieses Verhalten bekannt ? Port C is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). The Port C output buffers have symmetrical drive characteristics with both high sink and source capability. As inputs, Port C pins that are externally pulled low will source current if the pull-up resistors are activated. The Port C pins are tri-stated when a reset condition becomes active, even if the clock is not running. Port C also serves the functions of special features of the Atmel® AVR®ATmega128 as listed on page 76. In ATmega103 compatibility mode, Port C is output only, and the port C pins are not tristated when a reset condition becomes active. Note: The ATmega128 is by default shipped in ATmega103 compatibility mode. Thus, if the parts are not programmed before they are put on the PCB, PORTC will be output during first power up, and until the ATmega103 compatibility mode is disabled.
Gast
#4759971
Hi >Ist Dir dieses Verhalten bekannt ? Karl Junkurt (calibra301) schrieb ausdrücklich: >Der 128er wird auch im richtigem Modus betrieben, das 103 Bit ist >gelöscht. MfG Spess
Karl J. schrieb: > Im Sourcecode wird er an einer Stelle ein und an 4 Stellen > ausgeschaltet. Das ist dein Fehler. Man macht das nur von einer Stelle aus, also eine Routine die die Relais ein/ausschaltet und nicht von verschiedenen Stellen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.