PIC18F252, CCS-IDE 3.9

OP #5835562
Lesenswert?
• ▲
▼
PIC18F252, CCS-IDE 3.9

Um überhaupt ein Debug-Mittel bei der Erweiterung eines Uralt-Systems 
zur
Hand zu haben, wollte ich in einem Fifo zwischengespeicherte Debug-Werte
alternierende zur Temperatur üner die serielle Schnittstelle ausgeben.

In einem ersten Schritt habe ich mal zwei Nibble meines ms-Timers 
ausgegeben
und schon damit Problem:

- gebe ich die beiden unteren Nibble des 16bit Return-Wertes aus, 
klappern
  auch die beiden Nibble auf der RS232-Leitung
- gebe ich aber die mittleren beiden Nibble aus (time = ((uint16_t) 
msTime()) >> 4;),
  klappert auf der RS232-Leitung nur noch der untere Nibble
- und gebe ich schließlich die oberen beiden Nibble aus ( >> 8 ),
  klappert gar nichts mehr, ich habe permanent die Ausgabe "@00".

Das Gleiche dann wiederholt mit einer lokalen statischen Variablen 
(tick), mit dem gleichen Ergebnis - wenn ich das ober Byte der 16bit 
Variable ausgebe ( >> 8), sehe ich auf der RS232-Leitung nur "@00" - 
überschreibe ich die berechneten Werte mit den Werten, die ich beim 
ersten Durchlauf erwarte, erhalte ich als Ausgabe auch "@12", das 
Problem muss also bei shift/and/or liegen! Sieht jemand meinen Fehler?
1
              static signed int tick = 0x1234;
2

3
              static uint8_t toggle = 0;
4

5
              tick += 7;
6

7
              toggle ^= 1;
8

9
              if (toggle)
10

11
              {
12

13
                  uint16_t time;
14

15
                  char h, l;
16
                  
17
                  //time = ((uint16_t) msTime()) >> 8;
18

19
                  time = ((uint16_t) tick);
20

21
                  time >>= 8;
22

23
                  h = (char) (((time >> 4) & 0xF) | 0x30);
24

25
                  l = (char) (((time >> 0) & 0xF) | 0x30);
26

27
                  //h = '1';
28

29
                  //l = '2';
30

31
                  tx_state_a[1] = '@';
32

33
                  tx_state_a[2] = h;
34

35
                  tx_state_a[3] = l;
36

37
                  //tx_state_a[2] = Conv4bitsToAscii(((char) ((time >> 4) & 0xF)));
38

39
                  //tx_state_a[3] = Conv4bitsToAscii(((char) ((time >> 0) & 0xF)));
40

41
              }
OP #5835752
Lesenswert?
• ▲
▼
Scheibenkleister - mein Compiler mag mich nicht!

Unter TDM-GCC kommt das raus, was ich erwarte!

Jemand eine Idee, was dem CCS-PIC18-Compiler an meiner Formulierung 
nicht gefällt?
1
i=00000 => @12
2
i=00026 => @12
3
i=00052 => @13
4
i=00078 => @14
5
i=00104 => @15
6
i=00130 => @15
7
i=00156 => @16
8
i=00182 => @17
9
i=00208 => @17
10
i=00234 => @18
11
i=00260 => @19
12
i=00286 => @1:
13
i=00312 => @1:
14
i=00338 => @1;
15
i=00364 => @1<
16
i=00390 => @1<
17
i=00416 => @1=
18
i=00442 => @1>
19
i=00468 => @1?
20
i=00494 => @1?
21
i=00520 => @20
22
i=00546 => @21
23
i=00572 => @21
24
i=00598 => @22
25
i=00624 => @23
26
i=00650 => @24
27
i=00676 => @24
28
i=00702 => @25
OP #5837572
Lesenswert?
• ▲
▼
Ich verwende eigentlich immer die Typen aus "stdint.h", also int8_t, 
int16_t uint8_t, uint16_t, ..  -  nur liefert(e?) der CCS-Compiler keine 
stdin.h mit. weshalb ich sie selbst geschrieben habe und das ging halt 
in die Hosen! Mit einem 8bit int hatte ich nicht gerechnet.

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.