Forum: Mikrocontroller und Digitale Elektronik [AVR] Mode2+3 SPI und aktuelle AVRs


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Blubber1 (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Guten Abend,

beim ATTiny84 hab ich festgestellt, dass das ehemalige SPI-Interface zur 
USI umgebaut wurde. Dummerweise kann man die Clock-Polarität jetzt nicht 
mehr ändern, weshalb Mode2+3 weg fallen.

Die Frage die sich mir jetzt stellt: Muss man extern den Clock 
invertieren für Mode2+3-Peripherie wie die 128x64 COG-Displays?

Clock per Software stelle ich mehr unangenehm ineffizient vor ...

Viele Grüße
Blubber1

von Blubber1 (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Eine Frage, die für die geballte Fachkompetenz des Forums zu schwierig 
ist? xD

von c-hater (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Blubber1 schrieb:

> beim ATTiny84 hab ich festgestellt, dass das ehemalige SPI-Interface zur
> USI umgebaut wurde.

Das ist Bullshit, der dich als Mann ohne Überblick outet.

Bei den ollen Tinys gab es noch nie ein Hardware-SPI, sondern immer nur 
USI. Wenn es denn überhaupt irgendeine Hardwareunterstützung für 
seriellen Zauber gab, etliche Devices haben nichtmal das USI...

Bei einigen wenigen neueren Tinys ist das allerdings anders. Z.B. ATtiny 
441/841. Die haben nicht nur das klassische Hardware-SPI, was du (wohl 
von den ATmegas) kennst, sondern auch SPI-Master-fähige USARTs, wie es 
sie ebenfalls bei den (neueren) ATmegas gibt. Damit kann man schon was 
anfangen...

> Dummerweise kann man die Clock-Polarität jetzt nicht
> mehr ändern, weshalb Mode2+3 weg fallen.

Du hast das USI und seine Möglichkeiten ganz offensichtlich nicht 
wirklich verstanden. Lies' am besten nochmal das Datenblatt!

von Pappnase (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Besorge Dir mal die AppNote AVR319 und siehe es Dir an. Vielleicht 
klingelts dann.

mfg

von Johnny (Gast)


Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Bei einigen wenigen neueren Tinys ist das allerdings anders. Z.B. ATtiny
> 441/841. Die haben nicht nur das klassische Hardware-SPI, was du (wohl
> von den ATmegas) kennst, sondern auch SPI-Master-fähige USARTs, wie es
> sie ebenfalls bei den (neueren) ATmegas gibt. Damit kann man schon was
> anfangen...


Naja, sicherlich kann man darüber streiten, was "neuer" heißt, aber ich 
denke, die Mehrheit würde z.B. einen 10 Jahre alten ATmega644P nicht als 
neuer bezeichnen, auch wenn er neuer als ein ATmega8515 ist...

von Blubber1 (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
c-hater schrieb:
>> Dummerweise kann man die Clock-Polarität jetzt nicht
>> mehr ändern, weshalb Mode2+3 weg fallen.
>
> Du hast das USI und seine Möglichkeiten ganz offensichtlich nicht
> wirklich verstanden. Lies' am besten nochmal das Datenblatt!

Hab ich ... Es gibt keinen Bit, das äquivalent zu CPOL ist, wie es die 
AVRs mit SPI-Peripherie hatten ...

Über Erleuchtung würde ich mich freuen :)

von Blubber1 (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Pappnase schrieb:
> AVR319

Das war ein kurzes Lesevergnügen ... Seite 1: "Supports SPI Mode 0 and 
1"

von Blubber1 (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Aber zurück zur eigentlichen Frage ... Reicht es den Clock einfach 
extern zu invertieren, wenn ich z.B. ein LCD, das nur Mode2+3 kann, an 
den Tiny anschließen möchte?

von Pappnase (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Blubber1 wrote:
> Das war ein kurzes Lesevergnügen ... Seite 1: "Supports SPI Mode 0 and
> 1"

Vielleicht schaffst Du es ja irgendwann einmal bis Seite 5.
Die Datei avr319.zip enthält im Übrigen ein Codebeispiel.

von Blubber1 (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Pappnase schrieb:
> Vielleicht schaffst Du es ja irgendwann einmal bis Seite 5.
> Die Datei avr319.zip enthält im Übrigen ein Codebeispiel.

Hör bitte auf, meine Zeit damit zu verschwenden ... Auf Seite 5 stehen 
die SPI-Modes, die allgemein bekannt sind - mir auch.

Die USIs des Tinys HABEN KEIN CPOL BIT!

Von Seite 6:"The USI Three-wire mode is compliant with the Serial 
Peripheral Interface (SPI) Mode 0 and 1, "


Wenn du keine Ahnung hast, dann brauchst du auch nicht antworten ...

von Blubber1 (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Auch dein hochgelobtes Code-Beispiel unterstützt nur Mode 0 und 1:
1
/* Test application for the SPI-via-USI-driver. */
2
3
#include "spi_via_usi_driver.c"
4
5
6
7
#define SPIMODE 0  // Sample on leading _rising_ edge, setup on trailing _falling_ edge.
8
//#define SPIMODE 1  // Sample on leading _falling_ edge, setup on trailing _rising_ edge.
9
10
11
12
void main()
13
{
14
  unsigned char val = 0;    // Temp value to send.
15
  DDRB = 0xFF;      // Set PORTB to all output.
16
//  spiX_initmaster(SPIMODE);  // Init SPI driver as master.
17
  spiX_initslave(SPIMODE);  // Init SPI driver as slave.
18
  __enable_interrupt();    // Must do this to make driver work.
19
  do {
20
    spiX_put( val++ );  // Send temp value to SPI and increment,
21
    spiX_wait();    // wait for transmission to finish
22
    PORTB = spiX_get();  // and finally put result on PORTB.
23
  } while(1);      // Loop forever...
24
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.