PIC18F Structure Problem (xc8)

OP Persönliche Seite #3713794
Lesenswert?
• ▲
▼
Hallo,

ich arbeite gerade an einem Projekt mit einem PIC18F26K80 (mein erster 
PIC ;-) und habe ein Problem mit einer Structure. Je nachdem wie groß 
ich diese mache (34 oder 66 Byte) läuft das Programm oder es zeigt Murks 
(bei ...SIZE 64 gehts - bei 32 nicht).

Hier der Codeausschnitt:
main.h
1
#define SERIAL_BUFFER_SIZE      32
2
...
3
/* circular buffer */
4
typedef struct serial_buffer_t {
5
    unsigned char head;
6
    unsigned char tail;
7
    unsigned char data[SERIAL_BUFFER_SIZE];
8
};
main.c
1
#include "main.h"
2
#include "usart.h"
3

4
const char * s1 = "circular buffer is working!\r\n";
5
const char * s2 = "USART is working!\r\n";
6

7
volatile unsigned char timer_ticks=0;
8
struct serial_buffer_t tx_fifo, rx_fifo;
9
...
10
void main(void) {
11
...
12
    tx_fifo.head=0;
13
    tx_fifo.tail=0;
14
    rx_fifo.head=0;
15
    rx_fifo.tail=0;

Output (Size 32 Byte Data):
1
:7A
2
:7B
3
:7C
4
:7D
5
:7E

Output (Size 64 Byte Data):
1
USART is working!
2
r:01
3
USART is working!
4
r:02
5
USART is working!
6
r:03
7
USART is working!
8
r:04

Der Compiler ist: xc8 v1.30

Später soll der Ring Buffer benutzt werden um die Kommunikation über die 
serielle Schnistelle zu entzerren, aber schon bei der Deklarierung bzw. 
Speicherbelegung stimmt etwas nicht.
Hat jemand eine Idee, was ich falsch mache ?

Vielen Dank und Grüße

Gerd
Angehängte Dateien:
OP Persönliche Seite #3714680
Lesenswert?
• ▲
▼
Vielen Dank Tom für Deine Antwort. Ich habe typedef mal rausgenommen, 
wie es auch im K&R Standardwerk beschrieben ist. Es ist kein 
Unterschied; es funktioniert immer noch nicht.

Tom W. schrieb:
> Müsste es net
>
>
1
typedef struct{
2
     unsigned char head;
3
     unsigned char tail;
4
     unsigned char data[SERIAL_BUFFER_SIZE];
5
 }serial_buffer_t;
>
> heißen? Wobei das natürlich net erklärt, warum es mit 32 klappt, mit 64
> aber net.
>
> Tom

Wie gesagt, mit 64 Byte funktioniert es , mit 32 Byte Data nicht. Ich 
habe auch mal auf xc8 v 1.32 upgedated - kein Unterschied.

Gruß

Gerd

Antwort schreiben

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.

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.