Forum: Compiler & IDEs Fehler im ADC Teil der iox64a3u.h


von Stephan P. (sapeterich)


Lesenswert?

Hi,

ich hab einen Fehler in der iox64a3u.h gefunden, wo kann ich diesen 
Melden (bugtracker).

Ich wechsele gerade bei einem bestehenden Projekt vom ATXMega128A1 zum 
neueren ATXMega64A3U.
Dabei ist mir aufgefallen, das mein ADC Funktionen teilweise nicht mehr 
funktionieren, nach langer Suche habe ich heraus gefunden, das einige 
Register Adressen falsch sind.
&(config->ADCx->CH0) Liefert die richtige Adresse.
&(config->ADCx->CH1) Liefert ein Byte zu niedrig
&(config->ADCx->CH2) Liefert zwei Byte zu niedrig
...
Ursache ist ein Fehler im aktuellen Header iox64a3u.h von Atmel (AVRGCC 
3.4.0.65)
1
...
2
#define ADCA_CH3RES  _SFR_MEM16(0x0216)
3
#define ADCA_CMP  _SFR_MEM16(0x0218)
4
#define ADCA_CH0_CTRL  _SFR_MEM8(0x0220)
5
#define ADCA_CH0_MUXCTRL  _SFR_MEM8(0x0221)
6
#define ADCA_CH0_INTCTRL  _SFR_MEM8(0x0222)
7
#define ADCA_CH0_INTFLAGS  _SFR_MEM8(0x0223)
8
#define ADCA_CH0_RES  _SFR_MEM16(0x0224)
9
#define ADCA_CH0_SCAN  _SFR_MEM8(0x0226)
10
#define ADCA_CH1_CTRL  _SFR_MEM8(0x0228)
Zwischen ADCA_CH0_SCAN und ADCA_CH1_CTRL ist ein Register frei
Welches aber in den Struct ADC_ch_t nicht berücksichtig ist
1
/* ADC Channel */
2
typedef struct ADC_CH_struct
3
{
4
    register8_t CTRL;  /* Control Register */
5
    register8_t MUXCTRL;  /* MUX Control */
6
    register8_t INTCTRL;  /* Channel Interrupt Control Register */
7
    register8_t INTFLAGS;  /* Interrupt Flags */
8
    _WORDREGISTER(RES);  /* Channel Result */
9
    register8_t SCAN;  /* Input Channel Scan */
10
} ADC_CH_t;
11
12
/* Analog-to-Digital Converter */
13
typedef struct ADC_struct
14
{
15
    register8_t CTRLA;  /* Control Register A */
16
    register8_t CTRLB;  /* Control Register B */
17
    register8_t REFCTRL;  /* Reference Control */
18
    register8_t EVCTRL;  /* Event Control */
19
    register8_t PRESCALER;  /* Clock Prescaler */
20
    register8_t reserved_0x05;
21
    register8_t INTFLAGS;  /* Interrupt Flags */
22
    register8_t TEMP;  /* Temporary Register */
23
    register8_t reserved_0x08;
24
    register8_t reserved_0x09;
25
    register8_t reserved_0x0A;
26
    register8_t reserved_0x0B;
27
    _WORDREGISTER(CAL);  /* Calibration Value */
28
    register8_t reserved_0x0E;
29
    register8_t reserved_0x0F;
30
    _WORDREGISTER(CH0RES);  /* Channel 0 Result */
31
    _WORDREGISTER(CH1RES);  /* Channel 1 Result */
32
    _WORDREGISTER(CH2RES);  /* Channel 2 Result */
33
    _WORDREGISTER(CH3RES);  /* Channel 3 Result */
34
    _WORDREGISTER(CMP);  /* Compare Value */
35
    register8_t reserved_0x1A;
36
    register8_t reserved_0x1B;
37
    register8_t reserved_0x1C;
38
    register8_t reserved_0x1D;
39
    register8_t reserved_0x1E;
40
    register8_t reserved_0x1F;
41
    ADC_CH_t CH0;  /* ADC Channel 0 */
42
    ADC_CH_t CH1;  /* ADC Channel 1 */
43
    ADC_CH_t CH2;  /* ADC Channel 2 */
44
    ADC_CH_t CH3;  /* ADC Channel 3 */
45
} ADC_t;

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stephan Peterich schrieb:

> ich hab einen Fehler in der iox64a3u.h gefunden, wo kann ich diesen
> Melden (bugtracker).

> Ursache ist ein Fehler im aktuellen Header iox64a3u.h von Atmel (AVRGCC
> 3.4.0.65)

Davon abgesehen, dass das die Atmel-eigene Nummerierung ihrer
Toolchain ist (der GCC darin dürfte ein GCC 4.6.x sein), dort steht
auch gleich, wem du diesen Fehler melden kannst: Atmel selbst.  Diese
Headerdatei haben sie noch nicht in die avr-libc integrieren lassen,
damit sind sie bislang alleinig selbst verantwortlich für deren
Korrektheit.

von Stephan P. (sapeterich)


Lesenswert?

Das hatte ich befürchtet.

Nur die Info zur Empfohlenen Kontaktaufnahme zu Atmel habe ich nicht 
gefunden. Kann mir wer verraten wie ich Atmel am besten dazu erreiche 
oder lege ich das ganze einfach in Ablage "P" ab?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

avr -ät- atmel -punkt- com

von Stephan P. (sapeterich)


Lesenswert?

Dann nehme ich doch lieber den BUGTRACKER fürs ASF siehe 
http://asf.atmel.com/docs/latest/bug_tracker.html

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stephan Peterich schrieb:
> Dann nehme ich doch lieber den BUGTRACKER fürs ASF siehe

OK, wenn sie das dort mit akzeptieren, dann tu das.  Die Toolchain
ist ja an sich nicht Bestandteil von ASF selbst.

von Stephan P. (sapeterich)


Lesenswert?

Es ist auf jeden Fall möglich auch BUGs im AVR Studio 6.0 zu melden und 
es sind auch schon einige zu Registern etc. gemeldet.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dann hoffen wir mal, dass dein Toolchain-Bug damit die richtigen
Adressaten findet. ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.