Probleme beim Umstieg von AVR Mega103 auf Mega128

Gast #40659
Hallo,

momentan verzweifle ich an folgendem Problem:

nach der Umstellung von Mega103 auf 128 läuft mein
Xilinx-FPGA-Design-Loader nicht mehr (im 103 Kompatibilitätsmodus
läufts prima :-). Kurz umrissen:

3.68 MHz AVR-Taktfrequenz, USART0, bei 115200 Baud, AVR empfängt Daten
vom PC und programmiert FPGA damit, Checksumme der übertragenen
seriellen Daten ist ok, es werden auch alle übertragen... ABER: FPGA
"bootet" nach Übertragung des Designs nicht mehr!

Die eigentliche Programmier-Sequenz ist nicht geändert worden. Ich
nutze ein paar Pins von Port E als Steuerleitungen zum AVR und 8 Bit
auf Port D als Dateneingang zum FPGA. Ich vermute nun, das hier
eventuell eine Kollision mit dem im AVR128 Modus vorhandenem JTAG
Interface auftreten...

Oder hat jemand eine bessere Idee oder eine Vermutung, wo ich noch
suchen könnte???

Vielen Dank,

Christoph Munkelt

PS: relevente Code Snippets (ich bin mir bewußt, daß inp und outp
mitlerweile veraltet sind, Code ist aber schon älter und läuft auf
AVR103 wunderbar, deshalb wollte ich erstmal so wenig wie möglich
ändern...)

//
// Port E, Pinbelegung
//
#define CCLK  0x80    // (7:output) Clock-Signal
#define PROG  0x40    // (6:output) Program-Signal
#define  WRITE  0x20    // (5:output) Write-Signal
#define  CS  0x10    // (4:output) Chip-Select-Signal

#define  INIT  0x08    // (3:input) Init-Signal
#define DONE  0x04    // (2:input) Done-Signal

// Empfangsroutine:

data  = inp( PORTE );
data &= ~CS;      // CS auf LOW
outp( data, PORTE);

do {
  cbi( PORTE, 7);    // CCLK auf LOW
  uartReceiveByte( 0, &data );  // Byte empfangen

  outp( data, PORTD );    // und zum FPGA schreiben

  sbi( PORTE, 7);    // CCLK auf HIGH
  count ++;      // Zaehler erhoehen...

  // solange noch Daten gepuffert sind...
} while( uartReceiveBufferIsEmpty( 0 ) == FALSE );

data  = inp( PORTE );
data |= CS;      // CS auf HIGH
outp( data, PORTE);

data  = inp( PORTE );
data |= WRITE;      // WRITE auf HIGH
outp( data, PORTE);
Gast
Ja, JTAG ist standardmäßig eingeschaltet, den mußt Du komplett außer
Betrieb nehmen (per fuse-bit), wenn Du die entsprechenden Port-Pins
benutzen willst.  Da habe ich auch schon mal 'ne Weile dran gesucht,
warum ein halber Port nicht richtig gehen wollte...  Aber ohne
nachzugucken würde ich jetzt sagen, daß JTAG auf dem Port F sitzt.

-mmcu=atmega128 beim Linken hast Du aber gesetzt?  Der ATmega128 hat
ja seinen RAM weiter oben angesiedelt.  Allerdings sollte der 103er
Adreßbereich eigentlich auch laufen, man verplempert nur paar Byte RAM.
Gast
Ahm, richtig, JTAG liegt auf PORT F, sollte also kein Problem sein. Ich
hab' grad nochmal in der Doku nachgeschaut, und gesehen, daß USART1 ja
als "alternate function" auf Port D liegt -- und die AVRLIB-Routinen
zur seriellen Kommunikation (glaube ich) diesen enablen...

Ich check das mal schnell, genauso wie die "USART0 external clock"
auf PIN2 von Port E, man kann nie wissen...

Aber Danke ersteinmal...

Christoph Munkelt

PS: ich denke schon, daß bei den gängigen Makefiles die --mmcu Option
automatisch richtig gesetzt wird, ich schau aber auch da nochmal...
Gast
Hallo allezusammen,

also, Problem gelöst: es war der durch die AVRLIB default-mässig
eingeschaltete zweite USART (USART1), der 2 Pins auf meinem Datenport D
"umdefinierte". Und weils den ja in der AVR103 Emulation nicht gibt,
lief dort auch alles wunderbar, nur im 128 Mode plötzlich nicht mehr
;-)

Vielen Dank,
Christoph Munkelt

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.