Ich beschäftige mich ganz neu mit MC und steige mit einem Xmega in diese
Welt ein.
Hat mit jemand ein SPI oder UART- Ansteuerung für den Xemga. (zum
nachvollziehen)?
Wie stelle ich z.B. den SPI-Mode ein. In der include steht:
typedef enum SPI_MODE_enum
{
SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */
SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */
SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */
SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */
} SPI_MODE_t;
#endif /* !defined (_ASSEMBLER_) */
Wahrscheinlich ist es ganz einfach- habe aber noch keine Anhung.
Ganz neu wrote:
> Ich beschäftige mich ganz neu mit MC und steige mit einem Xmega in diese> Welt ein.
Schöne Idee, mit den neuesten Chips anzufangen.
Da betritt man Neuland und braucht nicht mit der Hilfe von anderen zu
rechnen.
> Hat mit jemand ein SPI oder UART- Ansteuerung für den Xemga. (zum> nachvollziehen)?
Wenn Atmel nicht schon entsprechende Application-Notes hat.
Ansonsten haben wohl kaum Leute Zeit, ständig neue Chips zu nehmen und
schnell man Beispielcode dafür zu schreiben, den sie auch noch
veröffentlichen.
Peter
Damit is der Uart Initialisiert übergabewerte sind eben die Werte für
die Baudrateneinstellung die du dir errechnen musst laut datenblatt
zum senden einfach das register USARTC0.DATA schreiben
zum empfang dieses lesen
Ich hätte eigentlich vermutet, daß Atmel auch bei den Xmega Bitnamen
vergeben hat, die man anstelle kryptischer Hexwerte verwenden sollte.
> zum senden einfach das register USARTC0.DATA schreiben
Bisher kannte ich UARTs eigentlich so, daß man vorher ein Flag prüfen
muß, ob das Senderegister frei ist.
> zum empfang dieses lesen
Bisher kannte ich UARTs eigentlich so, daß man vorher ein Flag prüfen
muß, ob das Empfangsregister voll ist.
Ich sage mal, so eine Art Beispielcode ist nicht hilfreich für Anfänger.
Peter
in meinem include file vom IAR sind nur Bitmasken enthalten und ich hab
keine lust die langen wörter zu tippen
ja es is wohl bequemlichkeit aber solange es mich und meine kollegen
nicht stört...
ok ja hab das vergessen zu erwähnen man sollte natürlich immer die
status bits abfragen bevor man schreibt
da ich lesen nur mit interrupt mache ist das dabei nicht erforderlich
unbekannt wrote:
> wenn du keine Lust hast zu helfen - dann lass es doch!!! Brauchst echt> nicht alles kommentieren.
Ich kommentiere ja nicht, sondern ich zeige Ungenauigkeiten auf und das
ist bestimmt sehr hilfreich für nen Anfänger.
Der kann ja nicht wissen, was für alte Programmierhasen offensichtlich
ist.
Peter
@Peter:
Lies doch einfach mal die Netiquette. Wenn jemand im Forum eine Frage
stellt und man hat keine direkte Antwort darauf, postet man einfach
nicht und wartet, bis jemand postet der eine Antwort hat.
Ich persönlich habe schon vor einiger Zeit Code für den XMega
geschrieben. Dein allererster Kommentar ist einfach unnütz spiegelt aber
das allgemeine Zwischenmenschliche Verhalten speziell in diesem Forum
wieder - möglichst schön aufeinander rumhacken.
Außerdem: Wenn niemand eine Antwort zum XMega hat, bleibt dieser Thread
eben leer. Aber jetzt muß sich jeder der eine ähnliche Frage hat, durch
sinnlose Kommentare quälen (meinen eigenen eingeschlossen).
So vieleicht schaffen wir es ja diesmal diesen Thread aufgrund meines
Posts nicht in einen Flamewar ausarten zu lassen und Du überlegst Dir
einfach mal ob ich nicht ein bisschen recht haben könnte.
Schönen Gruss
Guile
Peter:
Ungenauigkeiten aufzuzeigen und Fachleute (die schnell helfen wollen)
oder Anfänger (die es nicht besser wissen können) zu kritisieren sind
zwei verschiedene Dinge. Letzteres ist aber nicht konstruktiv.
also meines wissens gibts das nicht habe aber auch nicht danach gesucht
sondern den prozessor erstmal(was ich recht hilfreich empfinde) in
Assembler programmiert habe 1-2 tage mit kleinen spielreien wie
lauflichtern, tastern, timern usw um die Register besser kennenzulernen
und somit konnte ich dann schön drauf los programmieren
Hallo Heinz,
ok. Werde mich am WE noch einmal mit den "Grundlagen" beschäftigen.
Trotzdem kann mir vielleicht jemand erklären mit welchem Befehl ich den
SPI-Mode setze:
Der Befeht muss ja auf die include-Daten zugreifen:
dort steht:
typedef enum SPI_MODE_enum
{
SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */
SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */
SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */
SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */
} SPI_MODE_t;
#endif /* !defined (ASSEMBLER) */
>OK. Aber wie frage ich ihn ab, ob etwas da ist?
Das läßt Du am besten den Interrupt machen, oder für Fortgeschrittene:
die DMA-Einheit. Fehlerbehandlung nicht vergessen.
Muß ich den Interrupt (wenn etwas empfangen wurde) rücksetzen? Damit der
MC vom Interrupt-Register wieder in die main springt?
Wenn ja wie mach ich es? Habe bis jetzt erst das hier:
ISR(USARTE0_RXC_vect)
{
receivedData = USARTE0.DATA;
}