Forum: Projekte & Code UART Empfang in C (AT90S2333), ohne STK


von Niki Hammler (Gast)


Lesenswert?

Das folgende Programm ist in AVR-GCC geschrieben und für AT90S2333 oder 
kompatibie. macht nichts anderes als:
Wenn das Zeichen 'a' geschickt wird, geht die LED an Port P0 aus, wenn 
das Zeichen 's' empfangen wurde geht die LED wieder an.
Hervorragend zum Testen geeignet.

#define CPU_CLOCK  4000000 // Frequenz in Hertz, ggf ändern

#include <io.h> // Für allgemeine I/O Funktionen
#include <sig-avr.h> // Für interrupts notwendig
#include <interrupt.h> // --''--


void init_serial(void)
{
  // Das UART für den Empfang aktivieren
  sbi(UCSRB, RXEN);
  sbi(UCSRB, RXCIE);
  // Baudrate einstellen (ich weiss, geht über outp besser)
  asm volatile("ldi r16,4000000/(9600*16)-1" "\n\t" "out 0x09,r16");
}

SIGNAL(SIG_UART_RECV)
{
  switch(inp(UDR))
  {
    case 'a': outp(0xFF, PORTB); break;
    case 's': outp(0x00, PORTB); break;
    default: break;
  }
}

void init_io(void)
{
  // Alle Pins von Port B als Ausgänge konfigurieren
  outp(0xFF, DDRB);
}

int main(void)
{
  init_serial(); // Alle seriellen Sachen initialisieren
  init_io();  // I/O Ports konfigurieren
  sei();   // Interrupts einschalten
  while(1);  // Warteschleife
  return(0);
}

von Sala (Gast)


Lesenswert?

Sorry ich möchte nur wissen was STK zu bedeuten hat?
Danke!

Sala

von edd (Gast)


Lesenswert?

Hi,

STK steht für Starter-Kit. Mehr Infos dazu findest Du im Wiki:
http://www.mikrocontroller.net/wiki/STK200

cya
  edd

von Sala (Gast)


Lesenswert?

Danke für die Antwort!

Sala!

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.