Go Down

Topic: [Problem] ATtiny84A SoftwareSerial gibt nur falsche Zeichen aus. (Read 2416 times) previous topic - next topic

nilscrescendo

Also hallo erstmal,
ich bin in der Regel nicht der, der sofort wegen einem kleinen problem einen Forum Post erstellt aber nun komme ich nach 8 Stunden suchen einfach nicht mehr weiter.

Ich planen einige ATtiny84A 433 mhz Sensoren im Haus zu verteilen und darüber Heizung und Lüftung im Bad (wenn Luftfeuchtigkeit zu hoch etc) zu installieren. Um Strom zu sparen (und Geld natürlich auch) habe ich mit erstmal 5 ATtiny84A bestellt und wollte diese nun mit meinem Sketch flashen. Also alles angeschlossen attiny hardware Bibliothek geladen (http://highlowtech.org/?p=1695), 8 Mhz intern bootloader  gebrannt & test sketch geflashed mit Softwareserial um zu sehen ob der Sensor richtig ausgelesen wird.

Nun weiß ich natürlich das ich 8Mhz für SoftwareSerial brauch aber es kommt nur Blödsinn an. Habe mich sogar schon auf einen einfachen Test reduziert nur um die SoftwareSerial zu testen.

Mein aktueller Sketch:

Code: [Select]

#include <SoftwareSerial.h>

SoftwareSerial mySerial(99, 1); // RX, TX
void setup()  
{
  mySerial.begin(9600);
  delay(1000);  
}

void loop()
{
  mySerial.print("test ");
  delay(100);
}



Serialmonitor kommt nur an

Code: [Select]

������������������������������������������������������������������



  • Baudrate stimmt.
  • normaler Blink Skatch einer LED Funktioniert.
  • mit andere tiny hardware lib hatte ich die gleichen Ergebnisse (https://code.google.com/p/arduino-tiny/) und TinyDebugSerial gleiches Ergebnis.
  • Dachte mir dann ich benutze TinyTuner. Auch damit bekomme ich nur Fragezeichen.
  • Bootloader mit 8Mhz eingestellt und geflashed



Ich bin gedanklich leider echt am ende :smiley-cry:
Ich hoffe jemand kann mir von meiner Leitung Helfen

Danke schonmal

Serenifly

SoftwareSerial + RC Oszillator ist vielleicht keine so gute Idee

Du kannst mal probieren den Oszillator zu kalibrieren:
http://forum.arduino.cc/index.php?topic=246432.msg1764511#msg1764511

Oder mal testweise einen Quarz spendieren ob es dann besser wird.

sschultewolter

Nehm testweise die kleinstmögliche Baudrate der IDE!
Orginal Atmel AVRISP mkII zu verkaufen. Anfrage per PN ;)

Klaus_ww

Du kannst mal probieren den Oszillator zu kalibrieren:
Ich klugscheiße mal: Oszillator "abgleichen" ist richtig, beim Kalibrieren wird die mögliche Abweichung vom Soll festgestellt.


Und jetzt schalte ich den Klugscheißermodus wieder aus  8)
Freizeit-Programmierer mit moderatem Ehrgeiz besseren Code zu schreiben.

michael_x

Stimmt denn die Anzahl Fragezeichen mit der Anzahl Buchstaben überein ?



Code: [Select]

void setup() {
SoftwareSerial mySerial(-1,1);  // Rx mit -1 deaktivieren
}
void loop () {
  mySerial.write('8');
  delay(500);
}


dieses Zeichen  ( 0x38 )   hat zwischen start- und stopbit drei zusammenhängende Bits gesetzt.

Auf einem Logikanalyzer sähe es etwa so aus:


  .....111111110000111001111111111....


Da sollte eigentlich irgendwas "ähnliches" ankommen, sogar bei falscher Baudrate.

Diese Seite http://www.ernstc.dk/arduino/tinycom.html oder was ähnliches scheinst du zu kennen...

nilscrescendo

Interessanterweise ist die Anzahl der Zeichen bei einem der ATtiny84 (bei ein und dem selben Sketch) immer gleich lang aber länger "test" sinn machen würde, bei einem anderen (habe ich mal getestet um einen Defekt aus zu schließe) sendet er unendlich viele sehr schnell.
Quarz werde ich mir mal besorgen (fehlt eh noch in meiner Sammlung) und kalibrieren bzw nachjustieren werde ich mal probieren solange bis der Quarz geliefert wird.

Mich wundert nur das es unendlich viele Tuts gibt bei denen alles auf anhieb funktioniert und bei mir nicht. Konnte mir aber auch nicht vorstellen was, da es ja nicht all zu schwierig ist. Da hatte ich die Befürchtung ich übersehen irgendwas grundlegendes wie Fusebit oder ka.
Aber immer her mit den tipps :)

Habe sogar mal das alte Hameq Oszi raus geholt nur leider scheitere ich daran etwas. Bin wohl doch nur n GUI Klick DSO Kind und verwöhnt von unseren XTausend € Oszis aus der FH die alles alleine machen.

Serenifly

Oder wie von sschultewolter einfach mal eine niedrigere Baudrate probieren. Das geht auch viel kleiner. Kann sein dass 9600 schon zu hoch ist.

erni-berni

Wenn du einen Blink Sketch hochlädst, stimmt dann die Blinkfrequenz?
Kannst du die Fuses auslesen?

nilscrescendo

Frequenz stimmt beim Sketch.
Wie kann man die auslesen? Ich seh nur was in bootloader hinterlegt ist und ich somit aufspiele.
Hab leider gerade vor lauter Ärger und mutwilligem Ausprobieren meinen Nano geschossen. Hoch den optokopplern die dazwischen waren. Hatte schon Angst um mein MacBook  :o
Morgen ab 9 hab ich dank Semesterferien wieder den ganzen Tag Zeit.
Gute Nacht erstmal :)

nilscrescendo

Aktuelle Zusammenfassung:
Ext. Quarz kein erfolg. Es wird immer wieder die gleiche Anzahl von falschen Zeichen gesendet.
langsam bin ich wirklich fraglos

Serenifly


nilscrescendo

andere Bausrate leider nein.
Es kommt immer Z.B. bei
mySerial.println("test");
-->> ����� (also 5 mal-> bei 4 Char plus \n passt das zumindest von der Anzahl der Zeichen)
Anderer ATtiny auch nicht.

ich wollte mal andere Librarys probieren wie tinydebugserial allerdings finde ich dazu wenig Informationen.

Gut rein theoretisch geht es ja nur um debug aber langsam gehts mir ums Prinzip das ich das zum laufen bringen will. ich könnte auch ein Sketch schreiben auf m UNO zum laufen bringen und dann nur noch alles richtig verkabeln und sehen ob es läuft. Aber ich benötige früher oder später auch mal die Möglichkeit auch mal Werte so aus zu lesen.

Serenifly

Das ist sehr seltsam. Dass SoftwareSerial irgendwann nicht mehr geht ist normal, aber sehr niedrige Baudraten sollten eigentlich funktionieren.

jurs

Es kommt immer Z.B. bei
mySerial.println("test");
-->> ����� (also 5 mal-> bei 4 Char plus \n passt das zumindest von der Anzahl der Zeichen)
Anderer ATtiny auch nicht.
Welche Version der Arduino IDE verwendest Du?

SoftwareSerial funktioniert mit der neuen GCC-Compilerversion (IDE Version 1.5.7 oder höher bei Windows, bei Linux abhängig von installierten Paketen) noch viel beschissener als es mit der alten Compilerversion bereits der Fall ist.

Falls Du unter Windows arbeitest: Hast Du auch mal eine IDE Version 1.0.x getestet, ob dann mit SoftwareSerial derselbe Fehler auftritt?

nilscrescendo

Aktuell verwende ich die Aktuellste 1.6.1 Java 8 auf meinem mac.
Danke für den Hinweis bez. der Version. Ich werde mal mit der 1.0 usw probieren.
Die alternativen TinyCores funktionieren mit er 1.6 ja eh nicht. Den Gedankengang hatte ich heute nacht aber mir nicht gemerkt. (jetzt kommts mit wieder)

werde jetzt erstmal die Freundin bekochen, sonst darf ich nachher nicht weiter basteln :smiley-mr-green:

Go Up