Gast
#1354787
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
|
Anzeige
|
BTM-222 und MAX3232
Gast
#1354787
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 wähle einen 3V3 volt AVR, alles andere macht nur kummer und nein, das is nicht der richtige levelshifter :)
Gast
#1354832
Die Schaltung besteht schon und die muss mit 5V laufen... 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.
Gast
#1355136
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?
Gast
#1355148
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.
Gast
#1355155
Atmega 2560 ich mach mich mal auf die Suche
Gast
#1355159
Versuch mal #include "avr/io.h"
Gast
#1355163
Nee, sorry. Das würde wohl auch nicht funktionieren.
Gast
#1355172
1.8T-Passat hat recht, die Register heißen anders. Wenn du die betreffenden Register änderst sollte es funktionieren. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|