mikrocontroller.net

Forum: FPGA, VHDL & Co. Resetleitung von einem Mikrocontroller


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe am FPGA (virtex2) einen Atmega angeschlossen, von dem eine 
Leitung(reset) zum FPGA geht. Diese setze ich beim power ab, kurzzeitig 
auf high und dann wieder low. Die Input-Leitung am FPGA ist LVTTL und 
hat im ucf file noch einen Pulldown Widerstand bekommen. Komischerweise 
wird mein FPGA trotzdem noch in unregelmäßigen Abständen resettet. Ich 
habe leider keinen Scope da, der mir einmalig auf das Signal triggert 
und das Bild behält (um  herauszukriegen kann, was das für ein h-Pegel 
ist und wie das Signal aussieht0). Das Signal kommt auf jeden Fall vom 
Atmega, habe es überprüft, der wird 100% nicht neugestartet, also kann 
das Reset-Signal nicht durch Fkt-Aufruf zum Anfang des Programms 
ausgelöst.

Vielleicht mache ich aber doch noch was falsch und das sieht jemand 
sofort.
MC Code:
#define  CONTROL_REG   DDRC
#define  CONTROL_PORT   PORTC
#define  RESET    PC3
...
CONTROL_REG   |=   (1<<RESET);
....
CONTROL_PORT   |=   (1<<RESET);
LONGDELAY;
CONTROL_PORT   &=  ~(1<<RESET);
...
----------------------------------
FPGA:
(ucf)
NET "RESET"   LOC = "U12";
NET "RESET"    PULLDOWN;
(vhd)
rstinbuf_mc : bufg port map(i => RESET, o => RESET_INT);

-----------------------------------------------------------------------
2 Sachen noch. (a) Reset vom MC klappt nach dem Einschalten, (b) wenn 
ich die Leitung danach fest auf Masse lege, passieren diese ungewollten 
Resets nicht.

Autor: Frager (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmiere ist FPGA ein Reset-RAM rein. Dann weist Du, was passiert.

Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde ja mal versuchen das noch über einen Transistor (Inverter) zu 
schalten. Atmel an Basis, FPGA Reset an Kollektor

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass du irgendwo sonst im Code noch auf den CONTROL_PORT 
schreibst und dabei versehentlich etwas an RESET änderst? Oder 
alternativ auch am entsprechenden DDR? Könnte es sein, dass du 
versehentlich Atmega-Peripherie auf dem betroffenen Port aktivierst?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eventuell kommt das Signal auch nicht von Atmega, sondern eine unsaubere 
oder unterdimensionierte Spannungsversorgung des FPGAs löst dessen Reset 
aus. Würde ich zumidnest nicht ausschließen, aber um das zu überprüfen 
bräuchte man auch wieder ein Scope.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Frager: verstehe nicht was du damit meinst
@ David: hilft bei meinem Problem wahrscheinlich auch nicht weiter
@ mr.chip: Ja, die anderen Pins des Ports haben auch ihren Einsatz, 
jedoch wird RESET Pin dabei nicht angefasst.
@  Matthias: Nein, wenn ich die Resetleitung fest auf GND Pin anklemme, 
wird auch kein RESET ausgelöst und das FPGA Board läuft fröhlich weiter.

Ich werde heute testweise eine andere Leitung am MC nehmen und darauf 
RESET legen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>@ mr.chip: Ja, die anderen Pins des Ports haben auch ihren Einsatz,
>jedoch wird RESET Pin dabei nicht angefasst.

Glaubst du das oder WEISST du das? Wenn es schliesslich mit einer auf 
Masse gelegten Leitung geht, dann scheint ja doch was faul zu sein. Nur 
ein kleiner Schreibzugriff auf den Port , und schwups!

>@  Matthias: Nein, wenn ich die Resetleitung fest auf GND Pin anklemme,
>wird auch kein RESET ausgelöst und das FPGA Board läuft fröhlich weiter.

Eben!

MFG
Falk

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Glaubst du das oder WEISST du das?

Ich weiß es, hab mir alle C Dateien genau angeguckt, Reset kommt dabei 
nicht vor und anderen PINS auf dem PortC werden per Oder-Verknüpfung 
geändert, dass RESET dabei so bleibt, wie nach dem Aufruf der 
Reset-Funktion.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>Ich weiß es, hab mir alle C Dateien genau angeguckt, Reset kommt dabei

Dann glaubst du immer noch. WISSEN tust du es erst, wenn du mit nem Oszi 
das Pin anschaust und WIRKLICH keine Spikes siehst.

>nicht vor und anderen PINS auf dem PortC werden per Oder-Verknüpfung
>geändert, dass RESET dabei so bleibt, wie nach dem Aufruf der
>Reset-Funktion.

Und du hast sicher keinen einzigen Befehl übersehen .. . ?

MfG
Falk

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Und du hast sicher keinen einzigen Befehl übersehen .. . ?
Ja 100%, ich habe es auch alles selbst programmiert.

>> WISSEN tust du es erst, wenn du mit nem Oszi das Pin.......
Ich meinte doch oben, dass kein Oszi da ist, der einmalig auf das Signal 
triggern kann.

Und mich hinsetzen und die Leitung 4h beobachten (manchmal kommt sowas 
erst nach 4h), kann ich mir nicht leisten, da macht mein Chef nicht mit 
und meine Augen erst Recht nicht :)

Ich glaube jetzt jedoch das Problem gefunden zu haben.
>> #define  RESET    PC3
>> ...
>> CONTROL_REG   |=   (1<<RESET);

sollte eigentlich heißen:
#define  RESET    DDC3

CONTROL_REG   |=   (1<<RESET);

wobei im Endeffekt hinter jedem #DEFINE ob PC3, oder DDC3 immer eine 3 
steht oder?

>>Für den Compiler sind die Ausdrücke (1<<PC7), (1<<DDC7) und (1<<PINC7) 
>>identisch: (1<<7) (genauer: der Präprozessor ersetzt die Ausdrücke 
>>(1<<PC7),... zu (1<<7))
>

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)


>> Und du hast sicher keinen einzigen Befehl übersehen .. . ?
>Ja 100%, ich habe es auch alles selbst programmiert.

Mag sein, aber sowas übersieht man schon mal.

>Und mich hinsetzen und die Leitung 4h beobachten (manchmal kommt sowas
>erst nach 4h), kann ich mir nicht leisten, da macht mein Chef nicht mit
>und meine Augen erst Recht nicht :)

Dann bau dir einen Low-Cost-Oszi. Nimm ein 74HC74 und leg dein Reset an 
den Takteingang. D auf VCC. mit CLR löschst du den Ausgang. Wenn nun ein 
böser Puls kommt, lädt das FlipFlop eine 1, die am Ausgang per LED 
angezeigt weren kann. Läuft alles automatisch.

>wobei im Endeffekt hinter jedem #DEFINE ob PC3, oder DDC3 immer eine 3
>steht oder?

Sicher.

MfG
Falk

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>wobei im Endeffekt hinter jedem #DEFINE ob PC3, oder DDC3 immer eine 3
>>steht oder?

>Sicher
@ Falk:
(sicher = ja, das ist egal) || (sicher = sicher macht das ein 
Unterschied)
????

>> Dann bau dir einen Low-Cost-Oszi.
Gibt aber keine Aussage über die Impulsbreite und den Spannungspegel.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>(sicher = ja, das ist egal) || (sicher = sicher macht das ein
>Unterschied)

Es ist sicher das gleiche.

>> Dann bau dir einen Low-Cost-Oszi.
>Gibt aber keine Aussage über die Impulsbreite und den Spannungspegel.

Aber es gibt eine chance, einen Puls durch einen Programmierfehler zu 
finden. Der ist nämlich mind. 1 Takt breit. Glitches oder EMV wird man 
nicht zuverlässig finden, aber ggf. eine Ahnung entwickeln.
MFG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.