Serial.write durch Serial.print ersetzen. AVR Kompilierungsfehler function

OP #7395614
Lesenswert?

Ich möchte Serial.write durch Serial.print ersetzen, da ich eine Hex-Ausgabe im Arduino Monitor benötige. Einfaches ersetzen geht nicht, Fehlermeldung: function-definition is not allowed here.

Aber auch in einer anderen Funktion heißt es: no matching function for call to...

Auch eine längere Websuche brachte mir keine Hilfe. Da dreht sich alles nur um die unterschiedliche Ausgabe, die ist klar. Geht ggf. eine Stringumwandlung? Liegt es an Serial.available oben?

Wer kann helfen? Vielen Dank!

1
byte readWord[1] = {0}
2

3
void loop() {
4
  if (Serial.available() > 0) {
5
    while (addressCounter != 512) {    
6
      PORTC = (addressCounter & 512) >> 8; // (hier A8.  255 ?)
7
      PORTA = addressCounter & 255; 
8
      digitalWrite(40, LOW); 
9
      digitalWrite(41, LOW); 
10
      digitalWrite(39, LOW); 
11
      readWord[0] = PINL; 
12
      //Serial.write(readWord, 1);    --- Original
13
      //Serial.print(readWord);          ---geht nicht      
14
      digitalWrite(41, HIGH); 
15
    }
16
  }
17
}   
18
      void loop1(){
19
      if (Serial.available() > 0) {                       
20
      Serial.print(readWord);          // geht auch nicht
21
      }
22
    }
OP #7395661
Lesenswert?

Hier ist der komplette code mit Fehlermeldungen. Tippfehler hatte ich keine.

1
long addressCounter = 0;
2
byte readWord[1] = {0}; 
3
void setup() {
4
  DDRA = B11111111; //A0-A7 
5
  DDRL = B00000000; //Q0-Q7
6
  DDRC = B11111111; //A8  C0 
7
  pinMode(41, OUTPUT); // CE1
8
  pinMode(40, OUTPUT); // CE2
9
  pinMode(39, OUTPUT); // CS
10
  Serial.begin(115200); 
11
  digitalWrite(40, HIGH); 
12
  digitalWrite(41, HIGH); 
13
  digitalWrite(39, HIGH);
14

15
}
16

17
void loop() {
18
  if (Serial.available() > 0) {
19
    while (addressCounter != 512) {    
20
      PORTC = (addressCounter & 512) >> 8; 
21
      PORTA = addressCounter & 255; 
22
      digitalWrite(40, LOW); 
23
      digitalWrite(41, LOW); 
24
      digitalWrite(39, LOW); 
25
      readWord[0] = PINL; 
26
      Serial.print(readWord, HEX);                
27
      digitalWrite(41, HIGH); 
28
    }
29
  }
30

31
      addressCounter++;
32

33
}

In function 'void loop()': 49:33: error: no matching function for call to 'print(byte [1], int)' Serial.print(readWord, HEX);
Print.h:66:12: note: candidate: size_t Print::print(const String&) <near match> size_t print(const String &); note: conversion of argument 1 would be ill-formed: note: candidate: size_t Print::print(const char*) <near match> size_t print(const char[]);

OP #7395695
Lesenswert?

Vielen Dank! Es funktioniert.

Das Ergebnis ist zwar nicht wie gewünscht, aber das hat mir erst mal geholfen. Ich muss mich da weiter einlesen.

Der Code war ursprünglich für ein größeres PROM geschrieben und da wurden 2 Bytes gelesen oder 19 bit.

byte readWord[2] = {0, 0};

Ich hatte eigentlich alles ausprobiert, Serial.print(readWord[1], HEX); , Serial.print(readWord[0], 1); usw

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