Forum: Mikrocontroller und Digitale Elektronik Gleich mehrfach ins Knie geschossen


von Thomas B. (escamoteur)


Angehängte Dateien:

Lesenswert?

Hi,

ich hab in meinem jugendlichen Leichtsinn für die anhängende Schaltung 
gleich ne Platine machen lassen.

Bei der Inbetriebname musste ich jetzt feststellen, dass ich mir gleich 
mehrfach ins Knie geschossen habe.

Ich dachte, dass ich den Reset-Pin als Ausgang verwenden könnte, wusste 
aber nicht, dass dann ISP nicht mehr geht.

Ok, dachte ich nun, keine Katastrophe, ich kann ja den CS des 
LED-Kontrollers einfach an POWERON hängen, da ich ja sonst kein 
SPI-Device verwende. Beim genaueren Studium des Datenblatts des 
Kontrollers (Seite 8) lese ich un, dass das CSN Signal nicht einfach als 
CS dient, sondern zu einem bestimmten Zeitpunkt gesetzt werden muss, da 
der Kontroller sonst die Werte gar nicht übernimmt wenn ich das richtig 
verstehe.

D.h. ich brauche defintiv ein getrenntes CSN dass den Controller zu 
Datenübernahme bewegt.

Ich sehe jetzt folgende Möglickeiten:

1. Einen Bootloader zu verwenden und ein Serieles Kabel anlöten, was mir 
eigentlich nicht ganz so gefällt, zumal das Programmieren per ISP doch 
ganz komfortabel ist.

2. Ich schließe den MISO Pin nicht an den LED-Controller (ausgelesen 
kann sowieso nichts werden) sondern verbinde den MISO des AVRs mit dem 
CSN und dann folgendes Vorgehen um neue Werte zu setzen:

1. SPI Interface aktivieren
2. Daten an LED-Controller schicken
3. SPI Interface ausschalten und PB1 wieder als Ausgang schalten und 
damit das CSN-Signal geben

Meint Ihr das könnte funktionieren? Oder hab ich das mit dem CSN Signal 
falsch verstanden und kann es einfach die ganze Zeit auf High setzen?

Gruß

Tom

von MaWin (Gast)


Lesenswert?

Warum hängst du ihn nicht um auf PB1,
selbst PB3 könnte gehen, es gibt nur Knackser im Piezo.


[AustriaMicroSystems]
Toole Firma, Datenblatt nicht downloadbar, tja, wenn man keine Kunden 
will und pleite gehen will, überlässt man das Geschäft denjenigen, die 
es besser können.

von Gastofatz (Gast)


Lesenswert?

Hardware-SPI nicht verwenden und den AS1106 einfach durch passendes, 
softwareerzeugtes Pingewackel ansteuern? Ist ja mit ein paar simplen 
Zeilen Code erledigt. Dann hast Du völlige Wahlfreiheit bei den Pins.

von Thomas B. (escamoteur)


Lesenswert?

MaWin schrieb:
> Warum hängst du ihn nicht um auf PB1,
> selbst PB3 könnte gehen, es gibt nur Knackser im Piezo.

PB1 geht doch nicht wenn ich den hardware SPI anhabe.

Hatte das Datenblatt doch angehängt.

Gruß
Tom

von Thomas B. (escamoteur)


Lesenswert?

Gastofatz schrieb:
> Hardware-SPI nicht verwenden und den AS1106 einfach durch passendes,
> softwareerzeugtes Pingewackel ansteuern? Ist ja mit ein paar simplen
> Zeilen Code erledigt. Dann hast Du völlige Wahlfreiheit bei den Pins.

Stimmt, das war die dritte Möglichkeit, hatte ich oben völlg vergessen.
Ist dass nicht wegen des Timmings für das CLK Signal etwas aufwendig? 
Hab ich bisher noch nie gemacht.

Gruß
Tom

von Thomas B. (escamoteur)


Lesenswert?

> [AustriaMicroSystems]
> Toole Firma, Datenblatt nicht downloadbar, tja, wenn man keine Kunden
> will und pleite gehen will, überlässt man das Geschäft denjenigen, die
> es besser können.


Wieso? Ich konnte es gerade ohne Probleme runterladen

http://www.austriamicrosystems.com/eng/Products/Lighting-Management/LED-Driver-ICs

von Gastofatz (Gast)


Lesenswert?

Wiewaswo? Der Baustein übernimmt den Zustand auf der Data-Leitung, wenn 
auf der Clock-Leitung ne L-H-Flanke auftritt (nennt sich "synchrone 
Übertragung"). Wie gleich- oder ungleichmäßig diese Flanken kommen, 
interessiert niemand. Daher ist das Timing ausgesprochen UNkritisch. Das 
ist sozusagen der Gegenwert, den Du für die Clockleitung bekommst 
(asynchrone Übertragung: nur eine Leitung, aber dafür genau 
einzuhaltendes Timing).

von Thomas B. (escamoteur)


Lesenswert?

D.h. egal auch wenn ich schnarchlangsam sende sollte der Baustein das 
immer noch verstehen? Nur zu schnell darf ich wahrscheinlich nicht sein. 
Werde ich einfach probieren. Ist wahrscheinlich wirklich die 
vernünftigste Lösung

Gruß
Tom

von Gastofatz (Gast)


Lesenswert?

Du könntest die Daten problemlos mit 1 Hz per Hand reintakten g

Ich würds so proggen, dass die Clock-Frequenz irgendwo zwischen 10 kHz 
und 50 kHz liegt.

Na dann viel Spaß.

von MaWin (Gast)


Lesenswert?

> Wieso? Ich konnte es gerade ohne Probleme runterladen

Wenn ich hier auf Datasheet Downlaod klicke, kommt nichts:
http://www.austriamicrosystems.com/eng/Products/Lighting-Management/LED-Driver-ICs/AS1107

> PB1 geht doch nicht wenn ich den hardware SPI anhabe.

Du musst doch nur nach dem Aussenden der 16 bit per SPI ein mal PB1 oder 
PB3 togglen.

von Klaus (Gast)


Lesenswert?

MaWin schrieb:
> Wenn ich hier auf Datasheet Downlaod klicke, kommt nichts:
> http://www.austriamicrosystems.com/eng/Products/Li...

Geht hier ohne Probleme

von Peter -NL (Gast)


Lesenswert?

MaWin schrieb:
> Wenn ich hier auf Datasheet Downlaod klicke, kommt nichts:
> http://www.austriamicrosystems.com/eng/Products/Li...

Geht hier ebenfalls problemlos.

von Peter D. (peda)


Lesenswert?

Das scheint ein MAX7219-Clone zu sein.


Peter

von Thomas B. (escamoteur)


Lesenswert?

MaWin schrieb:
> Du musst doch nur nach dem Aussenden der 16 bit per SPI ein mal PB1 oder
> PB3 togglen

Ich denke ich kann PB1 nicht als IO verwenden wenn SPI aktiv ist, wie 
soll ich dass dann schalten?

PB3 will ich nicht, da ich nicht den Beeper unabhängig halten will.

Also von Hand :-)


[AustriaMicroSystems]
Ich hatte den Controller zufällig bei RS gefunden, da ich mir nicht 
sicher war ob MAXIM mir die Samples wirklich schickt (jetzt hab ich hier 
gleich 4 rumliegen)

Hab mich auf der Webseite von AustriaMicroSystems mal etwas umgeschaut, 
die haben ja ganz interessante Sachen, unter anderem einen ARM9 µC mit 
SD-Card Interface

Gruß
Tom

von Thomas B. (escamoteur)


Angehängte Dateien:

Lesenswert?

Hallo,

funktioniert prima.

Gruß
Tom

von Gastofatz (Gast)


Lesenswert?

Eigenbau-angesteuert oder mit Hardware-SPI?

Auf jeden Fall muss das so aussehen.

von Thomas B. (escamoteur)


Lesenswert?

void writeCommand(uint16_t toSend)
{
  uint16_t mask  = 1 << 15;

  for(int i = 0; i<16; i++)
  {
    if (toSend & mask)
    {
      PORTB |= (1<<MOSI);
    }
    else
    {
      PORTB &= ~(1<<MOSI);
    }
    _delay_us(10);

    PORTB |= (1<<SCL);
    _delay_us(10);
    PORTB &= ~(1<<SCL);
    mask = mask >>1;
  }
  PORTB |= (1<<LOAD);
  _delay_us(10);
  PORTB &= ~(1<LOAD);
}

:-)

Tom

von Gastofatz (Gast)


Lesenswert?

Ja super... hätts nich besser machen können g

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.