Forum: Mikrocontroller und Digitale Elektronik BTM-222 und MAX3232


von Alexis (Gast)


Lesenswert?

Hallo

Ich möchte ein BTM222 Modul mit einem AVR koppeln. Kann ich als 
Levelshifter einen MAX3232 benutzen (3,3V - 5V) oder ist der MAX nur zur 
Kopplung an eine RS-232 gedacht?

Gruß
Alexis

von Michael H. (morph1)


Lesenswert?

wähle einen 3V3 volt AVR, alles andere macht nur kummer

und nein, das is nicht der richtige levelshifter :)

von Alexis (Gast)


Lesenswert?

Die Schaltung besteht schon und die muss mit 5V laufen...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

In Richtung zum BTM tun es Spannungsteiler, in Richtung zum 5V-AVR kann 
man die 3V des Moduls noch als High durchgehen lassen. Ansonsten gilt 
zuvor Gesagtes.

von Alexis (Gast)


Lesenswert?

Ich hab nun einen Spannungsteiler eingefügt und das ganze verkabelt.
Zum Testen habe ich folgendes Programm gefunden:

#include <avr/io.h>

#define SYSCLK    8000000
#define BAUD    115200
#define UBRR_BAUD  ((SYSCLK/(16*BAUD))-1)

/* USART initialisieren */
void uart_init(void);


int main(void)
{
  unsigned char buffer;
DDRA=0xff;


  /* USART initialisieren */
  uart_init();

  while (1)
  {

    /* Warten bis Daten empfangen wurden */
    while (! (UCSRA & (1<<RXC)) )
      ;

    /* Empfangsregister auslesen */
    buffer = UDR;
    PORTA=buffer;

    /* Warten bis der Sendepuffer frei ist */
    while (!( UCSRA & (1<<UDRE)) )
      ;

    /* Daten in den Puffer schreiben und damit senden */
    UDR = buffer;
  }
}

/* USART initialisieren */
void uart_init(void)
{
  /* Baudrate einstellen ( Normaler Modus ) */
  UBRRH = (unsigned char) (UBRR_BAUD>>8);
  UBRRL = (unsigned char) UBRR_BAUD;

  /* Aktivieren von receiver und transmitter */
  UCSRB = (1<<RXEN)|(1<<TXEN);

  /* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
  UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}




Beim Compilieren schreibt AVR-Studio jedoch:
../Blink.c:24: error: 'UCSRA' undeclared (first use in this function)
../Blink.c:24: error: (Each undeclared identifier is reported only once
../Blink.c:24: error: for each function it appears in.)
../Blink.c:24: error: 'RXC' undeclared (first use in this function)
../Blink.c:28: error: 'UDR' undeclared (first use in this function)
../Blink.c:32: error: 'UDRE' undeclared (first use in this function)
../Blink.c: In function 'uart_init':
../Blink.c:44: error: 'UBRRH' undeclared (first use in this function)
../Blink.c:45: error: 'UBRRL' undeclared (first use in this function)
../Blink.c:48: error: 'UCSRB' undeclared (first use in this function)
../Blink.c:48: error: 'RXEN' undeclared (first use in this function)
../Blink.c:48: error: 'TXEN' undeclared (first use in this function)
../Blink.c:51: error: 'UCSRC' undeclared (first use in this function)
../Blink.c:51: error: 'URSEL' undeclared (first use in this function)
../Blink.c:51: error: 'UCSZ1' undeclared (first use in this function)
../Blink.c:51: error: 'UCSZ0' undeclared (first use in this function)
make: *** [Blink.o] Error 1
Build failed with 15 errors and 0 warnings...

was mache ich falsch?

von 1.8T-Passat (Gast)


Lesenswert?

Undeclared heißt, dass der Name nicht definiert ist. Welchen AVR benutzt 
Du? Du musst im Datenblatt gucken, ob die Register evtl. anders heißen. 
Da gibt´s zum Teil Unterschiede zwischen den AVRs.

von Alexis (Gast)


Lesenswert?

Atmega 2560

ich mach mich mal auf die Suche

von Tilo (Gast)


Lesenswert?

Versuch mal

#include "avr/io.h"

von Tilo (Gast)


Lesenswert?

Nee, sorry.
Das würde wohl auch nicht funktionieren.

von Tilo (Gast)


Lesenswert?

1.8T-Passat hat recht, die Register heißen anders.
Wenn du die betreffenden Register änderst sollte es funktionieren.

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.