Forum: Mikrocontroller und Digitale Elektronik Usart (Fleury) Übertragungsprobleme.


von Daniel F. (mcnanuk)


Lesenswert?

Ich habe aktuelle ein Problem mit meiner RS-232 Schnittstelle. Ich 
verwende die Usart- Libary von peter Fleury, die in der Vergangenheit 
gut funktioniert hat. Neues Board, neues Glück. Diesmal ziert sich das 
Ganze ziemlich.

Ich bekomme nur kryptische Zeichen im HTerm angezeigt. Frequenz und 
Baudrate stimmen wahrscheinlich. 16 Mhz(Quarz) und Baudrate 9600 
erzeugen wohl nur einen Fehler von 0,2% lt. Datenblatt.

#define F_CPU 16000000UL
#define UART_BAUD_RATE      9600

Da ich ja Zeichen empfange schliesse ich mal einen Kabelfehler aus, 
wobei ich mir hier nicht sicher bin, ob GND verbunden werden muss, oder 
ob TX und RX reichen. Ich verwende den Atmega 128 und hier das Interface 
1 an den Ports D.2 und D.3

uart1_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
uart1_puts("Test");

Was kann falsch sein? bzw wo fang ich mit der Fehlersuche an?

von Oliver J. (skriptkiddy)


Lesenswert?

Daniel F. schrieb:
> wobei ich mir hier nicht sicher bin, ob GND verbunden werden muss, oder
> ob TX und RX reichen.

Auf jeden Fall mit verbinden. GND ist das Bezugspotential.

von Daniel F. (mcnanuk)


Lesenswert?

naja egal obs dranhängt oder nicht, die ausgabe im terminal ist immer 
die gleiche. Ich hab jetzt auch schon die Baudraten varriiert, aber 
keine Änderung.

von holger (Gast)


Lesenswert?

Läuft der uC wirklich mit 16MHz? Fuses!
Sind beim MAX232 auch VCC und GND angeschlossen?

von Daniel F. (mcnanuk)


Lesenswert?

Fuses ist auf
Ext Crystal/resonator High Freq Stat-up Time 16K CK + 64 ms gestellt.

Um den RS232 auf meinem Borad nutzen zu können, musste ich zwei 
Lötbrücken schliessen, das habe ich getan. Und da ja irgendwas 
übertragen wird, kann ich doch davon ausgehen, dass das alles korrekt 
läuft.

Yo?????<\0>V??<26>???<23>!<27>57?-#?Y[}e?Y<23><27>-#1?<25><23>!<27>57?-# 
?sg}Yo?????<\0>

Das ist die Ausgabe des Fleury Testprogramms.
1
/*************************************************************************
2
Title:    example program for the Interrupt controlled UART library
3
Author:   Peter Fleury <pfleury@gmx.ch>   http://jump.to/fleury
4
File:     $Id: test_uart.c,v 1.4 2005/07/10 11:46:30 Peter Exp $
5
Software: AVR-GCC 3.3
6
Hardware: any AVR with built-in UART, tested on AT90S8515 at 4 Mhz
7
8
DESCRIPTION:
9
          This example shows how to use the UART library uart.c
10
11
*************************************************************************/
12
#include <stdlib.h>
13
#include <avr/io.h>
14
#include <avr/interrupt.h>
15
#include <avr/signal.h>
16
#include <util/delay.h>
17
#include <avr/pgmspace.h>
18
#include "glcd-Display3000-211.h"
19
20
#include "uart.h"
21
22
23
/* define CPU frequency in Mhz here if not defined in Makefile */
24
#ifndef F_CPU
25
#define F_CPU 16000000UL
26
#endif
27
28
/* 9600 baud */
29
#define UART_BAUD_RATE      9600      
30
31
32
int main(void)
33
{
34
    unsigned int c;
35
    char buffer[7];
36
    int  num=134;
37
38
    LCD_Init();  // caution: this also defines SPI for the display and also PortB (all ports but MISO are output)   
39
  Orientation = Portrait180;
40
  LCD_Cls(black); 
41
42
    /*
43
     *  Initialize UART library, pass baudrate and AVR cpu clock
44
     *  with the macro 
45
     *  UART_BAUD_SELECT() (normal speed mode )
46
     *  or 
47
     *  UART_BAUD_SELECT_DOUBLE_SPEED() ( double speed mode)
48
     */
49
    uart1_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); 
50
    
51
    /*
52
     * now enable interrupt, since UART library is interrupt controlled
53
     */
54
    sei();
55
    
56
    /*
57
     *  Transmit string to UART
58
     *  The string is buffered by the uart library in a circular buffer
59
     *  and one character at a time is transmitted to the UART using interrupts.
60
     *  uart_puts() blocks if it can not write the whole string to the circular 
61
     *  buffer
62
     */
63
    uart1_puts("String stored in SRAM\n");
64
    
65
    /*
66
     * Transmit string from program memory to UART
67
     */
68
    uart1_puts_P("String stored in FLASH\n");
69
    
70
        
71
    /* 
72
     * Use standard avr-libc functions to convert numbers into string
73
     * before transmitting via UART
74
     */     
75
    itoa( num, buffer, 10);   // convert interger into string (decimal format)         
76
    uart1_puts(buffer);        // and transmit string to UART
77
78
    
79
    /*
80
     * Transmit single character to UART
81
     */
82
    uart1_putc('\r');
83
    LCD_Print("Höhe:", 1, 160, 2, 1, 1, green, black);
84
    for(;;)
85
    {
86
        /*
87
         * Get received character from ringbuffer
88
         * uart_getc() returns in the lower byte the received character and 
89
         * in the higher byte (bitmask) the last receive error
90
         * UART_NO_DATA is returned when no data is available.
91
         *
92
         */
93
        c = uart1_getc();
94
        if ( c & UART_NO_DATA )
95
        {
96
            /* 
97
             * no data available from UART 
98
             */
99
        }
100
        else
101
        {
102
            /*
103
             * new data available from UART
104
             * check for Frame or Overrun error
105
             */
106
            if ( c & UART_FRAME_ERROR )
107
            {
108
                /* Framing Error detected, i.e no stop bit detected */
109
                uart_puts_P("UART Frame Error: ");
110
            }
111
            if ( c & UART_OVERRUN_ERROR )
112
            {
113
                /* 
114
                 * Overrun, a character already present in the UART UDR register was 
115
                 * not read by the interrupt handler before the next character arrived,
116
                 * one or more received characters have been dropped
117
                 */
118
                uart1_puts_P("UART Overrun Error: ");
119
            }
120
            if ( c & UART_BUFFER_OVERFLOW )
121
            {
122
                /* 
123
                 * We are not reading the receive buffer fast enough,
124
                 * one or more received character have been dropped 
125
                 */
126
                uart1_puts_P("Buffer overflow error: ");
127
            }
128
            /* 
129
             * send received character back
130
             */
131
            uart1_putc( (unsigned char)c );
132
        }
133
    }
134
    
135
}
136
137
//  Enhanced delay-routine (wait) as as the standard delay routine (_delay_ms) is not able to delay
138
//  more than 17 ms maximum as of the used 8-bit-timer (depending on used crystal)
139
void delay_ms(uint16_t period)   //delay routine (milliseconds)
140
{
141
  for(unsigned int i=0; i<=period; i++)
142
    _delay_ms(1);
143
}

von holger (Gast)


Lesenswert?

#include "uart.h"


/* define CPU frequency in Mhz here if not defined in Makefile */
#ifndef F_CPU
#define F_CPU 16000000UL
#endif


Und woher bekommt uart.h seine F_CPU? Hoffentlich aus dem
makefile.

von Daniel F. (mcnanuk)


Lesenswert?

UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1)

Dieses Makro wird an die Init Methode übergeben.
und wenn ich das richtig deute, dann ist
>uart1_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
völlig in Ordnung.

Abgesehen davon steht im Makefile auch eine Baudrate von 16 Mhz
1
###############################################################################
2
# Makefile for the project uarttest
3
###############################################################################
4
5
## General Flags
6
PROJECT = uarttest
7
MCU = atmega128
8
TARGET = uarttest.elf
9
CC = avr-gcc
10
11
## Options common to compile, link and assembly rules
12
COMMON = -mmcu=$(MCU)
13
14
## Compile options common for all C compilation units.
15
CFLAGS = $(COMMON)
16
CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
17
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d 
18
19
## Assembly specific flags
20
ASMFLAGS = $(COMMON)
21
ASMFLAGS += $(CFLAGS)
22
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
23
24
## Linker flags
25
LDFLAGS = $(COMMON)
26
LDFLAGS +=  -Wl,-Map=uarttest.map
27
28
29
## Intel Hex file production flags
30
HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature
31
32
HEX_EEPROM_FLAGS = -j .eeprom
33
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
34
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
35
36
37
## Objects that must be built in order to link
38
OBJECTS = uarttest.o uart.o glcd-Display3000-211.o font_f-5x8.o font_f-8x14.o 
39
40
## Objects explicitly added by the user
41
LINKONLYOBJECTS = 
42
43
## Build
44
all: $(TARGET) uarttest.hex uarttest.eep uarttest.lss size
45
46
## Compile
47
uarttest.o: ../uarttest.c
48
  $(CC) $(INCLUDES) $(CFLAGS) -c  $<
49
50
uart.o: ../uart.c
51
  $(CC) $(INCLUDES) $(CFLAGS) -c  $<
52
53
glcd-Display3000-211.o: ../glcd-Display3000-211.c
54
  $(CC) $(INCLUDES) $(CFLAGS) -c  $<
55
56
font_f-5x8.o: ../font_f-5x8.c
57
  $(CC) $(INCLUDES) $(CFLAGS) -c  $<
58
59
font_f-8x14.o: ../font_f-8x14.c
60
  $(CC) $(INCLUDES) $(CFLAGS) -c  $<
61
62
##Link
63
$(TARGET): $(OBJECTS)
64
   $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
65
66
%.hex: $(TARGET)
67
  avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@
68
69
%.eep: $(TARGET)
70
  -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
71
72
%.lss: $(TARGET)
73
  avr-objdump -h -S $< > $@
74
75
size: ${TARGET}
76
  @echo
77
  @avr-size -C --mcu=${MCU} ${TARGET}
78
79
## Clean target
80
.PHONY: clean
81
clean:
82
  -rm -rf $(OBJECTS) uarttest.elf dep/* uarttest.hex uarttest.eep uarttest.lss uarttest.map
83
84
85
## Other dependencies
86
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)

von holger (Gast)


Lesenswert?

Was ist mit der CKOPT und der M103C Fuse?

von Daniel F. (mcnanuk)


Lesenswert?

Sind beide nicht aktiv ... ich habe so wenig wie möglich dort geändert, 
da ich mir schon einmal das Board verfused habe :)

von Daniel F. (mcnanuk)


Lesenswert?

M103C ist neu für mich, und ich darf das auf keinen Fall einstellen. Ich 
brauche TWI den Port C teilweise als Eingang und ganz wichtig Uart 
Interface 1. 0 ist wohl mit der ISP Schnittstelle belegt.

CKOpt klingt nach der Lösung des Problems, aber ich bin nicht sicher, ob 
ich nicht irgendwas kaputt mache, wenn ich dieses Fuse Bit setze.
Ich glaube meine Nerfen ertragen keinen verfusten µC.

von holger (Gast)


Lesenswert?

>M103C ist neu für mich, und ich darf das auf keinen Fall einstellen.

Ich wollte ja nur sichergehen das du die NICHT aktiviert hast.

>CKOpt klingt nach der Lösung des Problems, aber ich bin nicht sicher, ob
>ich nicht irgendwas kaputt mache, wenn ich dieses Fuse Bit setze.

Nö, warum?

von Daniel F. (mcnanuk)


Lesenswert?

naja grundsätzliche Angst dort was zu ändern... zu oft in diese 
Steckdose gefasst :)

ich habs mal probiert (CKOpt), und es bringt keinerlei Änderungen. Alles 
bleibt beim Alten. Exakt die selben Ausgaben.

von holger (Gast)


Lesenswert?

>ich habs mal probiert (CKOpt), und es bringt keinerlei Änderungen. Alles
>bleibt beim Alten. Exakt die selben Ausgaben.

Auch wenn du die Baudrate änderst? Bist du sicher das du das
richtige Hexfile brennst?

von Daniel F. (mcnanuk)


Lesenswert?

Das hab ich schon überprüft.... Auch wenn ich die Baudrate ändere sieht 
die Ausgabe im Terminal gleich aus. Sollte sie ja auch, da ja das 
gleiche ankommt.

?::<\n><\0>
Das ist mein String "Hallo".

von holger (Gast)


Lesenswert?

>Auch wenn ich die Baudrate ändere sieht
>die Ausgabe im Terminal gleich aus. Sollte sie ja auch, da ja das
>gleiche ankommt.

Sag mal hast du üerhaupt einen MAX232 Pegelwandler auf deinem Board?

von Daniel F. (mcnanuk)


Lesenswert?

Ich zitiere mal aus der Anleitung des Boards. Ich denke ja, es gibt 
diesen Pegelwandler. Alles andere würde hier keinen Sinn machen. 
Jedenfalls wenn ich folgenden Text richtig verstehe.



Das Interface 1 steht an den Ports D.2 und D.3 zur Verfügung. Diese 
beiden Ports sind mit dem RS-232-Interface-Chip auf dem Board verbunden, 
denn der Mikrocontroller kennt nur den Pegel von 5 Volt und wie Sie oben 
lesen konnten, sind für RS-232 Spannungen notwendig, die nicht 
Mikrocontroller-tauglich sind. Wenn Sie die RS-232 Leitung des PCs 
direkt an den Mikrocontroller anschließen würden, würde dieser 
vermutlich zerstört werden. Achtung:
Um RS232 nutzen zu können, müssen Sie zuerst 2 Lötbrücken schließen.
Mehr dazu auf Seite 31.



Da der RS232-Transceiver an die Ports D2 und D3 angeschlossen ist (Rx1 
und Tx1 des Mikrocontrollers),würde der Transceiver diese Ports 
beeinflussen, selbst wenn kein RS232- Empfang oder Sendebetrieb 
stattfindet. Wenn Sie also eine „echte“ RS232-Verbindung (über die 
beiden Anschlüsse RX und TX) nutzen möchten, können Sie nicht auch 
gleichzeitig die Ports D.2 und D.3 nutzen.
Daher wurde der Transceiver durch diese beiden Brücken abgekoppelt. Das 
bedeutet,wenn Sie RS232 nutzen möchten, so müssen Sie J6 und J7 zuerst 
schließen.
D.2 und D.3 stehen trotzdem immer an der Pfostenleiste zur Verfügung, 
lediglich die Verbindung zum RS232 Chip wird durch die Brücken 
geschlossen.

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Brenn mal diese HEX Datei. Es wird dauernd ein U gesendet.
ATMega128, 16MHz, 9600Baud

von Daniel F. (mcnanuk)


Lesenswert?

Da kommt gar nix an

von holger (Gast)


Lesenswert?

>Da kommt gar nix an

Kann ja auch nicht, war für UART0 und nicht UART1.
Gibts noch nen Anschluss für UART0 wo du mal nachsehen kannst?

Was für ein Board ist das überhaupt?

von Daniel F. (mcnanuk)


Lesenswert?

kann es sein, dass die Libary von Peter Fleury mit dem Atmega128 gar 
nicht funktioniert. Ich sehe hier in der init Methode eine Variable 
URSEL1 im UCSR1C Register. Die gibt es laut Datenblatt gar nicht.

von Daniel F. (mcnanuk)


Lesenswert?

holger schrieb:
>>Da kommt gar nix an
>
> Kann ja auch nicht, war für UART0 und nicht UART1.
> Gibts noch nen Anschluss für UART0 wo du mal nachsehen kannst?
>
> Was für ein Board ist das überhaupt?

Es steht ausdrücklich im Handbuch meines Boards, dass Interface 1 zu 
verwenden ist, da Interface 0 schon genutzt wird.
Zitat: das andere ist das Interface 0 – wir nutzen es hier nicht, da die 
Ports dieser Schnittstelle gleichzeitig auch für die ISP-Programmierung 
genutzt werden – mehr dazu im ATMega128-Datenblatt

Es ist das D072 von Display3000.

von Daniel F. (mcnanuk)


Lesenswert?

Das kann doch nicht angehen.

Es folgt mein neuer Code. Ich habe mich jetzt exakt ans Datenblatt 
gehalten und immer noch sendet der µC nur Mist.

Ich denke der Code stimmt so, also muss es vielleicht doch entweder an 
den Fuses liegen oder an der Hardware. Die Fuses hab ich nochmals 
überprüft und es auch mit CKOpt versucht. Keine Veränderung. Das Board 
selbst hat keine Jumper und läuft ziemlich sicher mit 16 Mhz. Sowohl I2C 
als auch ADC und so weiter laufen korrekt. (hier in diesem Beispiel 
nicht aktiviert.)

Fuses sind wie folgt:
Extended 0xFF
High 0xC1
Low 0xBF

Ausgabe im Terminal
ASCII USt<\0>
HEX   55 53 74 00
1
/* Programmkopf mit Headerdateien*/
2
#include <stdlib.h>
3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
#include <avr/pgmspace.h>
6
#include <util/delay.h>
7
#include <string.h>
8
#include <stdio.h>
9
#define F_CPU 16000000UL  //Quarzfrequenz
10
#define BAUD 38400UL      //Baudrate für UART Übertragung
11
#define MYUBRR F_CPU/16/BAUD-1
12
13
//****************************** UART
14
// UART Einstellung    
15
16
void uart_init(unsigned int ubrr)
17
{
18
19
  UBRR1H = (unsigned char)(ubrr>>8);
20
  UBRR1L = (unsigned char)ubrr;
21
  UCSR1B = (1<<RXEN1)|(1<<TXEN1);            //UART TX einschalten
22
  //UCSR1C = (1<<USBS1)|(3<<UCSZ10);
23
  UCSR0C = (0<<UMSEL1)|(0<<USBS1)|(3<<UCSZ11);    //Asynchron 8N1
24
}
25
void USART_Transmit( unsigned char data )
26
{
27
/* Wait for empty transmit buffer */
28
while ( !( UCSR1A & (1<<UDRE1)) )
29
;
30
/* Put data into buffer, sends the data */
31
UDR1 = data;
32
}
33
34
void put_s(const char *s )
35
{
36
    while (*s) 
37
      USART_Transmit(*s++);
38
39
}/* uart1_puts */
40
41
int main(void)
42
{
43
    uart_init( MYUBRR); 
44
 
45
    sei();
46
   
47
   
48
    for(;;)
49
    { 
50
    delay_ms(1000);
51
    put_s("Test");
52
   
53
    
54
    }
55
    
56
}
57
58
//    Enhanced delay-routine (wait) as as the standard delay routine (_delay_ms) is not able to delay
59
//    more than 17 ms maximum as of the used 8-bit-timer (depending on used crystal)
60
void delay_ms(uint16_t period)     //delay routine (milliseconds)
61
{
62
    for(unsigned int i=0; i<=period; i++)
63
        _delay_ms(1);
64
}

von Daniel F. (mcnanuk)


Lesenswert?

for(;;)
    {
  delay_ms(1000);
   USART_Transmit('D');

    }

Wenn ich das hier Sende, kommt <\0> oder in Hex 0x00 an.
Hilft das eventuell weiter?

Langsam verzweifle ich wirklich.

von holger (Gast)


Lesenswert?

>Das Board
>selbst hat keine Jumper und läuft ziemlich sicher mit 16 Mhz.

Laut Datenblatt mit 8MHz. Hast du den Quarz nachgerüstet
oder ist da einer drauf? Ohne würde es mit deinen Fuses aber
gar nicht laufen. RS232 Kabel selber gebaut? Dann könntest
du einen Dreher bei GND und TxD haben.

von Daniel F. (mcnanuk)


Lesenswert?

Ja es ist ein Quarz nachgerüstet...

Wenn ich TX und RX vertausche bekomm ich keine ausgabe im Terminal. Wird 
also stimmen. GND ist auch verbunden.

Ich habe grade ein LED Blinkprogramm geschrieben, und die LED blinkt 
fein im Sekundentakt. Also ist 1Mhz und 8Mhz ausgeschlossen. (Mal 
abgesehen von der richtig gesetzten Fuse)

An was kann es denn liegen dass es nicht geht? Kann Interface 0 stören, 
da hier SPI verbunden ist?

von holger (Gast)


Lesenswert?

UCSR0C = (0<<UMSEL1)|(0<<USBS1)|(3<<UCSZ11);    //Asynchron 8N1
    ^
    |
    |

Fällt dir da was auf?

von Daniel F. (mcnanuk)


Lesenswert?

Jop ... ändert die Sache ein wenig

ECp<\0> ist jetzt die Ausgabe... nicht wirklich besser. Ich habe das 
ganze grade auf dem Interface0 versucht. Da ist die Ausgabe genau die 
Gleiche wie jetzt auf Interface1.

von holger (Gast)


Lesenswert?

>Ich habe das
>ganze grade auf dem Interface0 versucht. Da ist die Ausgabe genau die
>Gleiche wie jetzt auf Interface1.

Könnte es sein das du tatsächlich die Pins D2, D3 benutzt
statt RX und TX?

von Daniel F. (mcnanuk)


Lesenswert?

hmmm wie stell ich das fest?

Ich habe die Anleitung befolgt, und diese sagte mir: Schliesse die 
Lötbrücken J6 und J7 um RS232 zu verwenden. Damit soll laut Handbuch die 
Verwendung von D2 und D3 unterbunden sein. Also gehe ich davon aus, dass 
ich wirklich TX und RX verwende.

Ich habe grade etwas versucht. Ich habe einen Char gesendet und das 
terminal immer wieder verbunden, und getrennt... Folge: Das was ankommt 
ist inner was anderes (bekomme son 3-4 verschiedene Ausgaben die sich 
immer wieder wiederholen.)
Habe ich in meiner while schliefe nen Delay ist die Ausgabe hier immer 
00.

Ich bin jetzt völlig ratlos. Dachte ich hätte es verstanden, aber dem 
ist wohl nicht so. Ich mach das ja nicht zum ersten Mal. Auf meinem STK 
500 habe ich nen Atmega 644 und da klappt es alles prima. Wobei ich eben 
nicht weiss, was mir das STK500 alles abnimmt. Vielleicht ist wirklich 
der MAX232 (Pegelwandler?) gar nicht vorhanden auf dem Board D072. Aber 
ich finde keinen Hinweis darauf im Handbuch.

von holger (Gast)


Lesenswert?

>hmmm wie stell ich das fest?

Auf das Board schauen? Neben den Pins für PORTF
sieht man doch deutlich ein RX und ein TX aufgedruckt.

von Bernhard (Gast)


Lesenswert?

Hallo,
hast Du das Signal schon mal mit dem Oszi angeschaut, so vorhanden?

Bernhard

von Daniel F. (mcnanuk)


Lesenswert?

das ist doch für Uart Interface 0 oder?

>Das Interface 1 steht an den Ports D.2 und D.3 zur Verfügung.
Das steht so im Handbuch.

Ich habs mal umgesteckt... und naja das ergebnis ist genau das 
Gleiche..... also ob D2 und D3 oder TX RX Pins... kein Unterschied.

von Daniel F. (mcnanuk)


Lesenswert?

Bernhard schrieb:
> Hallo,
> hast Du das Signal schon mal mit dem Oszi angeschaut, so vorhanden?
>
> Bernhard

Hab ich leider keines zur Verfügung. Leider ...

von holger (Gast)


Lesenswert?

>Ich habs mal umgesteckt... und naja das ergebnis ist genau das
>Gleiche..... also ob D2 und D3 oder TX RX Pins... kein Unterschied.

Dann ist irgendwas kaputt. Laut dem Handbuch liegen auf RX/TX
RS232 Signale mit mehr als 5V. Da musst du ran und nirgendwo anders.
GND muss natürlich auch verbunden werden. Wenn du dann die richtige
Baudrate beim uC UND beim PC einstellst dann sollte es auch passen.

von Daniel F. (mcnanuk)


Lesenswert?

6,7 V etwa ... schwankt etwas.

Kaputt... darf nicht sein, kann nicht sein :) Hab ich oft gedacht, dann 
wars wieder irgendwas anderes ...

Kann es ein Fehler sein bei der Baudratenberechnung ?
Oder doch der Takt ? Würde mein µC denn überhaupt funktionieren wennd er 
Takt falsch wäre ? Ich meien nach den Fuses muss es stimmen.

von Daniel F. (mcnanuk)


Lesenswert?

DANKE DANKE DANKE !!!

ich habe grade die Fleury Lib wieder eingebunden. Und siehe da... es 
tut. Ich bekomme der verfluchten Text übersendet. Es lag tatsächlich an 
den doofen Pins.

Da wär ich wahrscheinlich nieee drauf gekommen.
3 Tage Horror haben nun ein Ende :)

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.