Hallo Hat jemand von euch Erfahrung mit einem VNC1L von FTDI? Ich möchte das Ding über SPI mit eine ATmega64 steueren. Das Problem ist, nach dem Studium der Datenblätter bin ich mir nicht sicher ob dies reibungslos möglich ist? Ist es richtig, dass er ausser im Input Binär Modus immer das LSB zuerst verlangt? Danke Gruss Hans
Hallo Hans Funktioniert den VNC1L mit dem ATMega64 bereits? Und hast du Erfolg mit deiner Firma Blauweiss AG? Gruss Hätt
Viel schlimmer finde ich, daß der VNC1L 10 Bit pro read/write braucht. Und die meisten MC haben 8...so wie es bei SPI üblich ist. Wie willst Du 10 Bits erzeugen?
Müller Hans wrote: > Hallo > > Hat jemand von euch Erfahrung mit einem VNC1L von FTDI? > Ich möchte das Ding über SPI mit eine ATmega64 steueren. > > Das Problem ist, nach dem Studium der Datenblätter bin ich mir nicht > sicher ob dies reibungslos möglich ist? > > Ist es richtig, dass er ausser im Input Binär Modus immer das LSB zuerst > verlangt? > > Danke > Gruss Hans Ich bin auch gerade dabei. Wenn ich es richtig lese ist der MSB immer zuerst. Unabhängig vom Binär/ASCII Modus was die Kommunikation über dem SPI Modus betrifft. Habe ein kleines Kommunikationsschnippsel erzeugt, ich denke das ist die Routine um erstmal zum synchronisieren zu kommen.Diese Routine wäre eine für den NICHT ShortCommandModus.
1 | ;Aufbau für MASTER(Atmega8) an SLAVE(VDIP1/VNC1L) senden |
2 | ;2 Bytes senden über MOSI |
3 | ; |
4 | ;->1. Byte 00000|D2|D1|D0 |
5 | ; D2=1! Startbit |
6 | ; D1=0! an Slave senden, R/~W |
7 | ; D0=0 ins Datenregister schreiben, D0=1 ins Statusregister schreiben |
8 | ;->2.Byte |
9 | ; Datenbyte aus SPDR senden |
10 | ;Nun Status abwarten: |
11 | ; 1. auf MISO testen, nur ein Bit zulassen indem CS bzw SS 0 gesetzt wird!! |
12 | ; ->Stausbit |
13 | ; A=0 Daten akzeptiert |
14 | ; A=1 Daten nicht akzeptiert/Puffer voll |
15 | ;CS bzw SS auf 0 setzen |
16 | |
17 | SPI_SENDEN_STATUS: |
18 | ;Statusregister ansprechen des VNC1L |
19 | ;1. Byte, vorbereiten des 2.Bytes.; hier soll 2.Byte ein Statuswort sein |
20 | ;beide Bytes vorbereiten |
21 | ldi temp,0x05 ;Slave ansprechen |
22 | ldi temp1,FF ;Echo senden |
23 | ;1.Byte zum Slave |
24 | out SPDR,temp ;"Dienst" setzen des Slaves |
25 | SPI_SENDEN_STATUS_w1: |
26 | sbis SPSR,SPIF ;warten bis Übertragung zu Ende |
27 | rjmp SPI_SENDEN_STATUS_w1 |
28 | ;2.Byte zum Slave |
29 | out SPDR,temp1 ;"Echo senden" für Sync-Zweckes des VNC1L |
30 | SPI_SENDEN_STATUS_w2: |
31 | sbis SPSR,SPIF ;warten bis Übertragung zu Ende |
32 | rjmp SPI_SENDEN_STATUS_w2 |
33 | ret |
34 | ;WAS noch fehlt: |
35 | ; 1.MISO abfragen ob Bit A gesetzt wurde, wenn ja dann Slave Puffer voll |
36 | ; 2.CS bzw. SS für einen Takt auf Null setzen |
Habe meinen VDIP1 gerade in den Himmel gejagt. Muss also erstmal theoretisch den Spass durchspielen. Um Daten an den VNC1L zu senden müsste die obere Routine ja erstmal richtig sein? Was mit noch fehlt steht ja unten im Code. Wie bekomme ich eine Abfrage hin, ob ein Bit im Schieberegister vorhanden ist oder nicht? Meine Idee: Nachdem SPI_SENDEN_STATUS_w2 abgearbeitet ist, 1 Takt die CS Leitung noch 1 lassen, dann 0 setzen(Wie schaff ich nur ein Takt?). Im SPDR muss ja nun der Inhalt vom Slave stehen(welche Position?) und das Bit muss maskiert werden, dann Abfrage ob gesendete Daten vom Master angenommen oder nicht. Damit wäre das Senden erstmal beendet. Nun kommt ja ein Antwort Byte noch.. aber dazu später. Sind meine Ideen erstmal richtig? mfg
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.