PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega2560 hat undefinierte Schaltzustände bei Spannungswied



Steffen44
03.08.2007, 18:58
Hallo,

ich habe ein Problem mit dem RN-MEGA2560 Board. Sowie ich es von der Spannung trenne und wieder ans Netz nehme schalten ab und zu einfach ein paar Ausgänge auf 5 Volt obwohl ich das im µC nicht programmiert habe.


Ich habe schon das komplette Programm im Bascom auf die Anweisung für den Quarz und das Def File begrenzt und trotzdem passiert es wieder.

Wenn ich den µC komplett leere also kein Programm mehr drinn ist, schaltet er auch nicht mehr irgendwas.


Kann es sein das das Definitionsfile die Ursache ist das die Ausgänge beim neustart undefiniert schalten ?


Gruß
Steffen

linux_80
03.08.2007, 23:11
Hallo,

hast du mal ein kleines Testprogramm, das solches Verhalten zeigt, dann kann man mal im Assembler forschen was Bascom da draus gemacht hat.

Steffen44
04.08.2007, 10:49
Hallo linux_80,

wiedermal schön mit dir zu "tippen" :-)


Ein Testprogramm kann man dazu schon fast nicht mehr sagen weil fast nichts mehr da ist ^^



'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44

$crystal = 16000000 'Quarzfrequenz


Wie du siehst ist es einfach nur die Definition des Controllers und die Quarzfrequenz.

Das Verhalten der undefinierten Schaltzustände tritt unregelmäßig auf ich mußte den Prozessor manchmal 10-15 mal vom Netz nehmen und wieder ans Netz nehmen und dann haben ein paar Ausgänge geschalten.

Das komische ist schon das keine Ausgänge definiert sind aber schalten tun sie trotzdem das verstehe ich überhaupt nicht.

Kann man so ein Verhalten im Assambler nachvollziehen ?


Gruß

Steffen

linux_80
04.08.2007, 23:36
Hallo,

mit Assembler kann man nur das finden was die Software macht, und das was Basom hier draus macht ist nur Stackpointer setzen und Speicher löschen, dann gehts in die Endlosschleife. Bzw. wenn man überhaupt kein Programm angibt (Do..Loop, oder End) macht er das immer wieder mit dem Speicherlöschen, da am Ende wieder zum Reset gesprungen wird.
Also nix bewegendes eigentlich.

Kannst Du mal etwas zu deiner Schaltung sagen, denn nach einem Reset sind alle Ports auf Eingang.
Ist an diesen Ports irgendwas angeschlossen, das nur grad nicht gebraucht wird ?

Hanni
05.08.2007, 09:38
und das was Basom hier draus macht ist nur Stackpointer setzen und Speicher löschen, dann gehts in die Endlosschleife.

Nuja, damit ist doch sein Problem geklärt. Denn wie schon richtig erkannt sind die einzelnen Pins nach einem reset als Eingang definiert. Als TriState Eingang übrigens.

Wenn man sich die Mühe machen würde, den Pins einfach einen definierten Zustand zu geben (z.B. mit dem internem Pullup) bekommt man auch reproduzierbar das gleiche Ergebniss.

Grüße,
Hanni

Steffen44
05.08.2007, 10:06
meine Ausgänge haben Transistoren als Schalter dahinter und dahinter hängt ein Optokopplerrelais um das Schaltvermögen zu erhöhen.


Wieso sollte denn ein Transistor bei Zustand "Reset" schalten ?


Gruß
Steffen

linux_80
05.08.2007, 10:52
Es könnte ja sein, das irgendwas bei low aktiviert wird, dann könnte ab dem Reset des µC bis zum gewünschten initialisieren des Ports durchaus etwas aktiv sein was so nicht gewollt ist. :-k

Steffen44
05.08.2007, 12:17
ja das wäre eine Variante únd deswegen habe ich mit meinem Bascom Programm gleich nach dem initilisieren gesagt er soll alle Port auf Low ziehen.

Das hat aber nichts gebracht. Wenn der Controller gestartet hat dann bleiben die Ausgänge die eigentlich nicht schalten dürften trotzdem auf high.

Ich habe noch eine LED vor dem Transistor zur Kontrolle und diese leuchtet ebenfalls das heißt dann also das die Transistoransteuerung einwandfrei funktioniert und nur das tut was auch der Schaltausgang vom µC tut.

fluchtpunkt
06.08.2007, 19:02
werden die betreffenden Pins zufaellig fuer JTAG benutzt?

Steffen44
07.08.2007, 15:55
ich denke nein zumindest sagt mir "jtag" nicht viel.

Gruß
Steffen

linux_80
07.08.2007, 19:48
Wenn Du dich noch nicht um JTAG gekümmert hast, ist es aktiviert, und die entsprechenden Pins keine normalen IOs.
Ich wollte schon mal danach fragen, aber oben in der $prog-Zeile steht "JTAG aus", deswegen dachte ich passt schon, überprüft hab ich das nicht !
Es sind aber nur max. 4 Pins davon betroffen (PF4-PF7).

Schau mal in die Fusebits, da geht das zum ausschalten.

Steffen44
08.08.2007, 18:53
ok da schaue ich morgen mal nach bin mir aber schon fast sicher das es nicht aktiviert ist ... Jetzt kommt gleich Stargate ^^ .

Die Progzeile entspricht auch meinem Programm es ist nur davon rauskopiert also gehe ich auch davon aus das JTAG aus ist.


Ich habe mal noch eine andere Frage. Ich hatte ja bisher ne ganze Menge Probleme mit dem ADC und dem ATMega2560 und habe jetzt nachdem das Teil fertig programmiert ist festgestellt das ich vermutlich irgendeine Brummspannung oder sowas in der Art auf dem ADC habe so das dieser teils um 0,8 Volt schwankt also +0,4 bis -0,4 um den Messwert.

Gibt es etwas was ich probieren könnte ohne das man ein Oszi hat um herauszufinden wo das Problem liegt ?

Das Problem resultiert vermutlich daher das ich viele Messwandler die über 230 Volt versorgt werden angeschlossen habe und bis jetzt ist mir nichts eingefallen wie ich die Messsignale entkoppeln könnte. Ich habe ebenfalls mal ein Messwandler mit 24 Volt Versorgung angeschlossen und dort ist der Messwert am ADC auch super stabil.

Ich denke mal da es ein Spannungssignal 0-5 Volt ist unterliegt es zuvielen Störgrößen das es ein vernümpftig konstant messbarer Wert ist als wie ein reines Stromsignal.

Ein linearer Optokoppler denke ich geht vermutlich auch nicht da er mir Spannungen unter 1 Volt wegschneidet. Mir fällt kein Bauteil und keine Schaltung ein die da irgendwas bringt :-(

Gruß
Steffen

fluchtpunkt
09.08.2007, 03:43
Ich habe mal noch eine andere Frage. Ich hatte ja bisher ne ganze Menge Probleme mit dem ADC und dem ATMega2560 und habe jetzt nachdem das Teil fertig programmiert ist festgestellt das ich vermutlich irgendeine Brummspannung oder sowas in der Art auf dem ADC habe so das dieser teils um 0,8 Volt schwankt also +0,4 bis -0,4 um den Messwert.
mal Schaltplan + Layout posten