SoftwareSerial.h mit ATTiny45/85/84

OP #4499249
Hi all ;-)

Es gibt zwar etliche Beispiele im Netz, ATTiny85/45/84 mit der Library 
<SoftwareSerial.h> zur seriellen Ausgabe (UART) zu bewegen, leider 
funktioniert keins bei mir.
Dann kanns eigentlich nur an den eingesetzten Versionen liegen.
Ich nutze Arduino SDK 1.6.7 und zum hochladen auf den µC, einen Raspi3 
(avrdude) mit einem USB-SPI-programer:
1
#avrdude -p t84 -P /dev/ttyACM0 -c stk500v2 -U flash:w:/myprogs/avr/softseriell.ino.tiny14.hex:i

Das generieren eines hex mit 'Kompilierte Binärdatei exportieren' bietet 
nur der ATTiny-core (Boardverwalter) von
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
an

Die Spannungsversorgung und UART kommt vom Pi3 (3,3V).
ACHTUNG: Zum deaktivieren der Ausgabe beim Start siehe:
http://kampis-elektroecke.de/?page_id=1682
muss beim Pi3 noch in der /boot/config.txt -> core_freq=250 hinzugefügt 
werden. Der UART ist dann /dev/ttyS0 !!

Beispiel aus dem Netz:
1
#include <SoftwareSerial.h>
2
//const int rx = PB3; // ATTiny45
3
//const int tx = PB1; // ATTiny45
4
// ** ATTiny84
5
const int rx = PA7; 
6
const int tx = PA3;
7
SoftwareSerial mySerial(rx, tx);
8
int i = 0;
9
char buf[12];
10

11
void setup()
12
{
13
  pinMode(rx, INPUT);
14
  pinMode(tx, OUTPUT);
15
  mySerial.begin(9600);
16
}
17

18
void loop()
19
{
20
  if (mySerial.available() > 0) {
21
    buf[i] = mySerial.read();
22
    if (int(buf[i]) == 13 || int(buf[i]) == 10 ) { //If Carriage return has been reached
23
      mySerial.println(buf);
24
      for (int x = 0; x <= 10; x++) {
25
        buf[x] = ' ';
26
      }
27
      i = 0; //start over again
28

29
    } //if enter
30
    i++;
31
  } //If mySerial.available
32
}//LOOP

Hat jemand eine Idee, warum der Tiny nix rausgibt?
VG aus LA
ralphi
Gast
Ralphi M. schrieb:
> Es gibt zwar etliche Beispiele im Netz, ATTiny85/45/84 mit der Library
> <SoftwareSerial.h> zur seriellen Ausgabe (UART) zu bewegen, leider
> funktioniert keins bei mir.

Ich kann Dir definitiv sagen, dass Arduino Ver 1.5.0 an einem PC und 
Windows 7 + Diamex AVR Programmer + "TinyDebugSerial" den Attiny84 zur 
Ausgabe bewegt, so wie es soll. Allerdings mit Fehlzeichen bei 
verwendung des internen RC Osc. Die Ausgabe ist fix auf einen Pin gelegt 
und lässt sich auch nicht ändern.

Was hier steht ist meiner Erfahrung nach nicht richtig. Der Attiny84 ist 
ja auch ein 14 Pinner. Und da ist Pin 2 die Uart. Den Pin ändern hat bei 
mir nie geklappt.

http://www.ernstc.dk/arduino/tinycom.html

Ist allerdings die besagte "TinyDebugSerial"

Richtiger Core? Da gibt's mehrere..

Liegt also wohl an diesem Raspi-Dingsda, wozu das gut sein soll weiss 
ich nicht.
OP
Hi,
danke für den Tipp mit TinyDebugSerial.h.
Hier find ich allerdings kein Beispiel, wie/ob ich auch lesen kann.
Also duplex TX/RX. Für debug brauchts eigentlich nur ne Ausgabe.

Fürs erste (zum Testen) nutz ich minicom auf dem Raspi.
Später natürlich php, Python oder C je nach Laune um Sensordaten 
einzulesen.
Ich kuck auch mit dem Oszilloskop am TX und RX, ob überhaupt was vom 
Tiny kommt. Nicht nur die Ausgabe am Terminal!

Hier noch das ausstehende Anschlussbild (mit Fritzing erstaunlich leicht 
:-)

ralphi
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.