Serial über GPIO

  • Hallo ich versuche eine serielle Verbindung zwischen Raspberry PI und einem ATtiny85 aufzubauen. Ziel ist es auf dem Raspi einen Debugger laufen zu lassen um DebugOutputs vom Attiny zu lesen.

    Der Tiny läuft mit 3.3V. Es sind nur RX vom Raspi und TX vom Tiny (Arduino Pin 1) verbunden. Der Sketch auf dem Tiny sieht folgendermaßen aus (übernommen von hier:(


    Minicom ist folgendermaßen konfiguriert:

    Beim Start von Minicom wird jetzt zwar etwas übertragen jedoch klappt die Darstellung nicht:

    Im UTF-8 Modus sieht man (im Forum) nicht darstellbare Zeichen.

    Hat jemand eine Idee was man noch ausprobieren kann?

  • Hi
    getty ist in der inittab deaktiviert. Vorher ging gar keine Kommunikation mit dem Pi.
    Massen sind verbunden, da die Stromversorgung für den Tiny aktuell noch vom Pi kommt.

    Code
    $ grep ttyAMA0 /etc/inittab 
    # T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

    /boot/cmdline.txt:

    Code
    dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait


    Automatisch zusammengefügt:
    Ich habe die Spannungsversorgung am atiny wegen der RS232 Kommunikation mit dem Pi auf 3.3V gesetzt weil ich keinen LogicLevel Konverter 5V->3.3V zur Hand habe. Könnte das ein Problem bei den Atmegas sein?

    Einmal editiert, zuletzt von kellerkind (29. August 2015 um 21:43)

  • Einen hab' ich doch noch: check mal, inwieweit der Tiny auch wirklich mit der Taktfrequenz arbeitet, von der Dein sketch ausgeht.
    Aus dem Takt wird ja mittels Teiler der Takt für die rs232 erzeugt. Wenn das Programm z.B. von 4 MHz ausgeht, der µC aber mit 8 MHz läuft, stimmt das natürlich nicht mehr ...


    cu,
    -ds-

  • Hi DS,

    danke für deine Einfälle.
    Beim Kompilieren im Arduino habe ich als Board Attiny 8 Mhz gewählt. Bei 1Mhz kamen folgende Fehlermeldungen:

    Code
    /usr/share/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:125:2: error: #error This version of SoftwareSerial supports only 20, 16 and 8MHz processors
    /usr/share/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function ‘void SoftwareSerial::begin(long int)’:
    /usr/share/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:380:31: error: ‘table’ was not declared in this scope
    /usr/share/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function ‘virtual size_t SoftwareSerial::write(uint8_t)’:
    /usr/share/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:455:26: error: ‘XMIT_START_ADJUSTMENT’ was not declared in this scope

    Vielleicht liegt es ja auch an meiner kruden Breadboard Verkabelung, wobei ich dann aber auch etwas mehr "Datensalat" erwartet hätte. :s

  • Mit welcher Frequenz fährt denn der ATTiny von Dir?
    Möglicher workaround (aber jetzt nur eine spontane Idee): statt 9600 Baud z.B. 9600/8 Baud nehmen und dann auf der Gegenstelle allerdings 9600 einstellen.
    btw: afaik funktioniert die Software-Serial nur bis ca. 19200 ... würde also imho nix bringen, auf der Gegenstelle jetzt 76800 einzustellen ...
    cu,
    -ds-

  • Hi DS,

    Du bist mein Held!

    Nach Ändern des Minicom Setups auf 1200 Baud funktioniert die Kommunikation auf einmal:

    Muss ich das verstehen und warum ist das in den ganzen Tutorials nicht einmal ansatzweise erwähnt?

  • Naja ... die Software errechnet einen Teiler um die Frequenz des AVR auf die geforderte Baudrate zu bringen, mit der dann die Zeichen übertragen werden.
    Wenn die Software jetzt von einem Takt von 8 MHz ausgeht, der Chip aber real nur mit 1 MHz läuft, ist der Teiler natürlich viel zu gross (Faktor 8) ...
    Stellst Du nun 9600 Baud ein, sind das real halt nur ein Achtel davon - also in Deinem Fall 1200 Bd ;)


    Schön, dass wir das noch gefunden haben,
    mehr Ideen hätte ich jetzt auch nicht mehr gehabt.

    Viel Spass noch,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!