Software Serial auf PIN12 trotz TLC 5940

Hallo,
mal wieder ein vorher nicht erkanntes Problem:
Ich habe mir eine günstige Platine ätzen lassen, dabei für mein Software Serial PIN 8 und 12 eingeplant.
Der TLC benötigt ja nur die PINs 3, 9,10,11 und 13.

Beim testen habe ich jetzt gemerkt, dass ich mit dem XBEE wohl empfangen kann (auf 8 ) aber nicht senden kann.
Wenn ich die TLC Library auskommentiere klappt alles. Muss also an dem PIN 12 liegen.

Habe auch schon diverses ausprobiert:

  1. die PIN Outs der TLC Library auf PIN 5 gelegt/angepasst: ATmega_xx8.h =>
/** XERR (Arduino digital pin 12) -> XERR (TLC pin 16)  */
#define DEFAULT_XERR_PIN    PD5    //PB4
#define DEFAULT_XERR_PORT   PORTB
#define DEFAULT_XERR_DDR    DDRB
#define DEFAULT_XERR_PINS   PINB
  1. mit der tlc_config.h rumgetestet:
/** Enables/disables XERR (TLC pin 16) functionality to check for shorted/broken
    LEDs
    - 0 XERR is not connected (default)
    - 1 XERR is connected
    \note XERR is active low */
#define XERR_ENABLED    1 / oder 0
  1. die arduino PINs angepasst: pins_arduino.h
static const uint8_t SS   = 10;
static const uint8_t MOSI = 11;
static const uint8_t MISO = 5; //12
static const uint8_t SCK  = 13;

Leider hat nix bisher erfolg gebracht. Kann mir jemand helfen?
Ich nutze einen Arduino Nano mit Atmega 328 und Arduino 1.04

VG

Zuerst einmal zukünftige Schaltungen auf einem Steckbrett gründlich auf mögliche Fehler überprüfen und erst dann die Platine ätzen !

Hi
Habe ich auch allerdings nicht in genau der pinbelwgung und mit einem Mega.
Danke für den Tipp!
Habe ich denn nun softwareseitig ne Möglichkeit. Ansonsten muss ich halt ne Brücke einlöten. Halt eher die unschöne Variante aber in meinem fall machbar.
Gruß

Meistens ist allerdings eine Brücke einlöten leichter, als pei allen ATMegas die Pinbelegung zum ändern :wink:

static const uint8_t MISO = 5; //12

Du gehst aber nicht davon aus, dass die Umdefinition irgendeinen Einfluss auf die Hardware hat (MISO ist der SPI-Pin der Daten vom Slave zum Master leitet)?

In der TLC-Bibliothek musst Du die Änderungen schon komplett machen:

/** XERR (Arduino digital pin 5 [was 12]) -> XERR (TLC pin 16)  */
#define DEFAULT_XERR_PIN    PD5    //PB4
#define DEFAULT_XERR_PORT   PORTD  // PORTB
#define DEFAULT_XERR_DDR    DDRD  //DDRB
#define DEFAULT_XERR_PINS   PIND  // PINB

Geht es vielleicht damit? Normalerweise ist XERR aber gar nicht aktiviert. Mit welcher Konfiguration arbeitest Du denn? Hast Du den SPI per Hardware aktiviert? In diesem Fall ist der Pin nicht frei, weil die Hardware sich den schnappt. Du müsstest also auf die (deutliche langsamere) Software-Emulation umschalten (TLC_BITBANG).

Hi,
wieso der XERR aktiviert ist kann ich dir nicht sagen - ich hätte jetzt vermutet dass das die TLC Bibliothek voreingestellt macht, da es auch Anwendungsbeispiel gibt, wo der genutzt wird/werden kann (wenn ich das richtig gelesen habe).

Habe jetzt aber einfach eine Brücke auf einen anderen PIN gelegt und damit ging es.

Trotzdem danke, ggfs teste ich das die Tage noch mal.

Gruß
Thorsten