FPSLIC AVR-FPGA Interface

Gast #252557
Lesenswert?

Hi folks,

ich sitze seit einiger Zeit am AVR-FPGA Interface und die
Datenübertragung vom AVR zum FPGA funktioniert aber nicht umgekehrt.
Der Interrupt "RCO" (INT0) sollte im AVR die ISR aufrufen um die
Daten vom Bus zu lesen, leider kommt kein Interrupt durch. Was mache
ich falsch?



  process (CLOCK, RESET, INPUT, ENABLE, FIOREA)      --sensivity list
  variable rRCO : std_logic;
  variable varOUT : std_logic_vector(7 downto 0);
  begin
    if CLOCK'event and CLOCK = '0' then
      if (ENABLE = '1' and FIOREA = '1') then
        varOUT := "01000001";
        rRCO := '1';

      else
        varOUT := "ZZZZZZZZ";
        rRCO := '0';

      end if;
    end if;
        RCO <= rRCO;        -- Interrupt for AVR
    OUTPUT <= varOUT;      -- data output
--
  end process;

Was mache ich mit dem ENABLE? In den Atmel Beispielen wird es nie mit
einem Kontakt verbunden..

Danke für jegliche Hilfe.

Thomas
Gast #252558
Lesenswert?

Sorry, mit dem Stück Sourcecode ist kaum eine Analyse
möglich. Warum sind varOUT und rRC0 Variablen ? Nimm
doch besser Signale dafür. Warum stehen RESET und INPUT
in der Sens-List, wenn sie gar nicht verwendet werden ?
Hast Du das ganze mal mit ModelSim simuliert ? Das wäre
das erste, was ich machen würde.

Hast Du mit nem Scope auf der Interrupt-Leitung gemessen
dass der INT wirklich nicht kommt?
Gast #252559
Lesenswert?

Ich habe den Code mit Modelsim simuliert und herausgefunden, dass das
ganze Problem wirklich nur am Interrupt liegt. In der Dokumentation
(Seite 59)steht, wie man den setzt aber  das klappt irgendwie nicht
URL: http://www.atmel.com/dyn/resources/prod_documents/doc1138.pdf

In den Beispielen von Atmel wurden Variablen statt der Signale benutzt,
deshalb habe ich daran auch nix geändert.

Die ISR setzt das ENABLE und FIOREA, d.h. der Interrupt muss vor dem
Schleifeneintritt aufgerufen werden.
Quellcode ISR:

SIGNAL (SIG_FPGA_INTERRUPT0)
{

  FISCR = ((1 << XFIS0) | (0 << XFIS1));   //Configure FPGA I/O Select
Lines - clear XFIS1 and XFIS0

  receive = FISUA;  //recv Data fom FPGA and set FIOREA

}

Kann mir jemand weiterhelfen, wie man den Interrupt setzt? Die
Beschreibung in der Doku klingt kompliziert.

Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren