Xmega256d3 Ports zu langsam?

Gast #2793449
Lesenswert?

Hallo,

ich habe leider immernoch Schwierigkeiten mit meinem Display, die aber 
scheinbar von einem unsauberen Pegel verursacht werden.

Deshalb habe ich einen kleinen Test geschrieben:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#define CTRL_PORT PORTA
4
#define WR_PIN 0
5
#define WR_H CTRL_PORT.OUTSET = 1<<WR_PIN; 
6
#define WR_L CTRL_PORT.OUTCLR = 1<<WR_PIN;
7

8
void Clock_init(void)
9
{
10
  OSC.CTRL |= OSC_RC32MEN_bm;
11
  while(!(OSC.STATUS & OSC_RC32MRDY_bm));
12
  CCP = CCP_IOREG_gc;
13
  CLK.CTRL = 0x01;
14
}
15
int main(void)
16
{
17
  Clock_init();
18
  _delay_ms(150);
19
  CTRL_PORT.DIR = 0xFF;
20
  while(1)
21
  {
22
    WR_L
23
    _delay_us(1);
24
    WR_H
25
    _delay_ms(1);
26
  }
27
}

F_CPU ist in der GCC Toolchain in AVR Studio 6 auf 32000000 gesetzt.
CPU ist ein ATXMEGA256D3. Dieser wird betrieben auf einem STK600 und 
einem JTAG ICE MKii.


Ich habe nun das Ausgangssignal am PORTA.0 gemessen. Signal siehe 
Anlage.
Zum Zeitpunkt der Messung habe ich außer einem kurzem Stück Kabel nichts 
anderes am besagten Portpin angeschlossen.

Warum ist dies kein sauberes Rechtecksignal?

Gruß
Philipp
Angehängte Dateien:
Gast #2793634
Lesenswert?

Hier ein paar mehr Informationen und Messergebnisse:

Vergleich Atmega2560 - Atxmega256d3


Code:
mega
1
#include <avr/io.h>
2
int main (void)
3
{
4
  DDRA= 0xFF;
5
  while(1)
6
  {
7
    PORTA = 0x00;
8
    _delay_us(1);
9
    PORTA = 0x01;
10
    _delay_us(15);
11
  }
12
}


xmega
1
#include <avr/io.h>
2
void Clock_init(void)
3
{
4
  OSC.CTRL |= OSC_RC32MEN_bm;
5
  while(!(OSC.STATUS & OSC_RC32MRDY_bm));
6
  CCP = CCP_IOREG_gc;
7
  CLK.CTRL = 0x01;
8
}
9
int main(void)
10
{
11
  Clock_init();
12
  CTRL_PORT.DIR = 0xFF;
13
  CTRL_PORT.PIN0CTRL = PORT_OPC_TOTEM_gc;
14
  
15
  while(1)
16
  {
17
    PORTA_OUT = 0x00;
18
    _delay_us(1);
19
    PORTA_OUT = 0x01;
20
    _delay_us(15);
21
  }

Praktisch das gleiche oder?
Im Anhang sieht man die Ausgabe. Beide CPUs sind auf das selbe STK600 
gesteckt worden.
Hierfür wird verwendet:
-mitgeliefertes STK600-ATMEGA2560
-STK600-RC064X-14 & STK600-TQFP64
Angehängte Dateien:

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