Probleme mit Serial.begin(9600) bei Attiny 45

Hallo zusammen,

ich bin neu in diesem Forum und habe eine Frage, die Ihr mir hoffentlich beantworten könnt.

Ich habe mir ein Programm umgeschrieben und möchte dieses auf einen Attiny 45 brennen. Das Programm läuft auf einen Arduino UNO problemlos. Es lässt sich aber nicht auf einen Attiny 45 brennen. Jedes mal kommt die Fehlermeldung "'Serial' was not declared in this scope". Lasse ich das Serial.begin(9600) im Programm weg, lässt es sich auf den Attiny 45 problemlos brennen nur macht es nicht das, was es machen soll. Am Anfang habe ich auch schon #include <SoftwareSerial.h> stehen. Soweit könnte ich mich belesen. Dennoch funktioniert es nicht. Ich hoffe Ihr könnt mir helfen woran es liegen könnte das es mit Serial.begin(9600) nicht auf einen Attiny 45 brennen lässt.

LG
Tim

Wir können besonders gut helfen, wenn Du Deinen Sketch geheim hälst.
Setze ihn bitte in Codetags (</> oben links im Editor).

Gruß Tommy

Willkommen im Forum

Wie du schon erkannt hast, funktioniert "Serial.begin(...)" auf einem Tiny45 NICHT - weil die übliche serielle Schnittstelle via Hardware dort nicht vorhanden ist. Im Gegensatz dazu wird SoftSerial.h verwendet. Die Bibliothek dazu hast du auch schon eingebunden.

In diesem Zusammenhang musst du aber in setup() mit "SoftSerial.begin(9600)" arbeiten, dann klappt das auch. Vorzugsweise solltest du dir das Beispiel dazu in "...\hardware\arduino\avr\libraries\SoftwareSerial\examples\SoftwareSerialExample" anschauen, weil du noch die PINs vorgeben musst, über welche die Signale gesendet / empfangen werden sollen.

Ob es vom Speicherplatz her reicht kann ich nicht beurteilen. Auf einem Tiny85 (gleiche Bauart aber mehr Flash) funktioniert es auf jeden Fall. Habe es selbst schon im Einsatz.

LG, Rudi

Um einen ATtiny zu verwenden brauchst du eine "Core", weil die Arduino-IDE ATtinys nicht direkt unterstützt. Es gibt verschiedene Cores für ATtinys. Ich verwende oft ATtinys und verwende diese
Core von DrAzzy (Spence Konde), der im (englischen Teil) dieses Forums recht aktiv ist:

Diese Core hat SoftwareSerial breits "integriert"

It has a built-in software serial named Serial (like the real serial on boards that have hardware serial) that uses the analog comparator interrupt, not a PCINT). TX is AIN0 (pin 0), RX is AIN1 (pin 1). Then use „Serial“ instead of creating a software serial instance, and you can use PCINT“s freely.

Eine wichtige Frage ist auch, woher der Takt des ATtiny kommt. Interner Takt ist möglich, kann aber mitunter recht ungenau sein und eine seielle Kommunikation erschweren.

RudiDL5:
Ob es vom Speicherplatz her reicht kann ich nicht beurteilen.

ATtiny45 mit 8 MHz intern:

Der Sketch verwendet 3.154 Bytes (77%) des Programmspeicherplatzes. Das Maximum sind 4.096 Bytes.
Globale Variablen verwenden 121 Bytes (47%) des dynamischen Speichers, 135 Bytes für lokale Variablen verbleiben. Das Maximum sind 256 Bytes.

Wenn man nur senden möchte:

SoftwareSerial softSerial(99, 3);   // RX (wir wollen nur senden), TX

uxomm:
Interner Takt ist möglich, kann aber mitunter recht ungenau sein und eine seielle Kommunikation erschweren.

Bei mir auf dem Rechner finde ich dies:

// OSCCAL calibration for Atmega controllers using internal clock @8 MHz
// Coded by 'jurs' for German Arduino Forum

Leider fehlt mir der Link ins Forum.

Mit dem Wert von der Kalibrierung kann man dann weitermachen:

void setup()  {
    OSCCAL = 170;     // individueller Tuning-Wert für DIESEN ATtiny 45/85
    softSerial.begin(9600);
    softSerial.println(F("Hier spricht dein ATtiny85"));
}

Ob man das auch für den Core von DrAzzy verwenden kann, habe ich noch nicht probiert.

Der Sketch verwendet 3.154 Bytes (77%) des Programmspeicherplatzes.

Oh oh, das klingt nach "sehr eng" und schreit ganz laut nach massiven Optimierungen - oder anderen Lösungen.

Also die "Informationslage" ist ja zur Zeit noch ein wenig "dünn" :slight_smile:
Noch wissen wir nicht was "es funktioniert nicht" genau bedeutet, wie die Fuses gesetzt sind, welche Core verwendet wird und wie der Sketch aussieht.
Etwas wenig für konkrete Hilfestellung finde ich :slight_smile:
Na vielleicht meldet sich der TO ja nochmal in den nächsten Tagen.