Hallo Leute, so jetzt bin ichs nochmal.
Ich bin heut schon fast am verzweifeln, weil ich versuche eine
Verbindung zwischen meinem Arduino Mega2560 Board und dem PC aufzubauen.
Das ganze soll ohne die Arduino IDE durchgeführt werden.
-> C-Program über Atmel Studio 7
Das Ziel ist eigentlich die Bibliothek von Peter Fleury zu verwenden.
(ebenfalls probiert und das Programm läuft auch nicht)
Da das aber jetzt nicht geklappt hat wollte ich es vorerst mal ohne die
Bibliothek probieren - leider funktionierts wieder nicht.
Eig. sollte das Board z.B. test empfangen und wieder an den PC
zurückschicken.
Als Terminalprogramm verwende ich das von Atmel Studio bereitgestellte.
@Stefan G. (steff_123)
>Ich bin heut schon fast am verzweifeln, weil ich versuche eine>Verbindung zwischen meinem Arduino Mega2560 Board und dem PC aufzubauen.
Woran die Jugend heute schon verzweifelt . . .
>Das ganze soll ohne die Arduino IDE durchgeführt werden.>-> C-Program über Atmel Studio 7
Warum? Bist du schon soooo fit, das ohne Arduino hinzukriegen? Ist die
Arduino-Funktion sooo schlecht?
>Das Ziel ist eigentlich die Bibliothek von Peter Fleury zu verwenden.>(ebenfalls probiert und das Programm läuft auch nicht)
Die macht am Ende auch nicht mehr als der Arduino, denn der hat auch
einen Software-FIFO.
Dein Programm sieht erstmal OK aus. Versuch erstmal, nur "Hello World"
zu senden und per PC zu empfangen. Richtigen COM-Port am PC ausgewählt?
Nimm mal ein normales Terminalprogramm, Tera Term ist gut.
Test zuerst mal mit einer Loopback Verbindung:
Lege den REST Pin des µC fest auf Low, damit er inaktiv bleibt.
Mach dann eine Brücke von Rx nach Tx.
Dann schau mit einem Tewrminalprogramm, ob die gesendeten Texte zurück
kommen.
Wenn das nicht funktioniert, hast du ein Problem auf dem PC oder der
USB-UART Chip funktioniert nicht.
Erst danach würde ich die eigene Software untersuchen, weil das
schwieriger ist.
Zur Berechnung der Baudrate solltest du die setbaud.h bentzen, um Fehler
zu vermeiden. Sie ist in der avr-libc ausführlich dokumentiert - sehr
lesenswerter Stoff.
Hi,
meiner ehrlichen Meinung nach fehlt der Max232 oder ähnlicher
Schnittstellenbaustein auf dem
http://circuit-diagramz.com/wp-content/uploads/2016/05/Schematic-Circuit-Diagram-for-Arduino-Mega-2560.jpg
Mega Board.
Die Kommunikation mit dem PC erfolgt nach alter Väter Sitte nach dem
V24er Standard und Rs232 Protokoll mit + - 12V über Sub D Min 9 pol
male socket am PC ?....
Oder wieder über den ("ominös hostmäßig umgebogenen") USB Port?
ciao
gustav
@ Karl B. (gustav)
>meiner ehrlichen Meinung nach fehlt der Max232 oder ähnlicher
Schnittstellenbaustein auf dem>
>http://circuit-diagramz.com/wp-content/uploads/201...>Board.
Wer redet in dieser Diskussion von diesem Board? Zumal der Link nicht
funktioniert.
>Oder wieder über den ("ominös hostmäßig umgebogenen") USB Port?
Der ArduinoMEGA hat eine USB-Anbindung mit virtuellem COM-Port.
@ Karl B. (gustav)
>Wie wird jetzt der USB-Port richtig konfiguriert?
Das macht die Installation der Arduino-IDE schon richtig.
@OP
Schreib mal ein kleines Testprogramm in der Arduino-IDE, dann weißt du,
ob das damit funktioniert.
Das Einfachste ist Das USRT zu initialisieren und einen Character
repetitiv zu senden, zum Beispiel 0x55, zB alle Sekunde. Daran kann man
mit dem Oszilloskop schon die Baudrate kontrollieren.
Falk B. schrieb:> Schreib mal ein kleines Testprogramm in der Arduino-IDE, dann weißt du,> ob das damit funktioniert.Stefan G. schrieb:> Das ganze soll ohne die Arduino IDE durchgeführt werden.> -> C-Program über Atmel Studio 7
OK.
Testprog. in ASM füt ATMega32U2 beigefügt. Ist nicht derselbe MC. OK.
Die Strings sind vergleichbar können sicher auf die korrekte
Target-"Syntax" umgeschrieben werden.
Achtung!
Der Bootloader wird evtl. überschrieben.
Überneme keine Garantie für zerschossene Target MCs und
Kollateralschäden!!!
ciao
gustav
Hallo Leute - vielen Dank für eure Tipps und Hinweise.
Dieses Forum ist echt klasse.
Karl B. schrieb:
>Der Bootloader wird evtl. überschrieben.>Überneme keine Garantie für zerschossene Target MCs und>Kollateralschäden!!!
Das ganze is mir doch bisschen zu heiß - versuche jetzt vorerst
anwerweitig ans Ziel zu gelangen - aber danke für die Mühe.
Falk B. schrieb:
>Schreib mal ein kleines Testprogramm in der Arduino-IDE, dann weißt du,>ob das damit funktioniert.
Habe ich gemacht und es funktioniert einwandfrei - sowohl senden als
auch empfangen.
Somit sollte es kein hardwareseitiges Problem sein. (hoffe ich)
1. Mein erstes Testprogramm läuft jetzt.
Falls ich jedoch über das Terminal "test" an das Board schicke
bekomme
ich nur "tes" zurück - also er schneidet nach 3 Buchstaben ab.
Könnte mir hier evtl. jemand weiterhelfen.
2. Hab jetzt auch schon mal die Bilbiothek von Peter Fleury eingebunden
und versuche einen Text an den PC zu senden:
Der Code ist der Beispielcode, der bei dir Bibliothek von Peter Fleury
angehängt ist.
Es wird jedoch kein "Hallo" übertragen, sondern irgendwelche Zeichen.
Baudrate am Terminal ist auch auf 9600 eingestellt.
Habe ich hier irgendwas übersehen?
In Atmel Studio 7 habe ich sowohl die *.h & *.c Datei von Hr. Fleury
"geaddet".
1
#include<avr/io.h>
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
8
#include"uart.h"
9
10
/* define CPU frequency in Hz in Makefile */
11
#ifndef F_CPU
12
#define F_CPU 16000000UL
13
#endif
14
15
/* Define UART buad rate here */
16
#define UART_BAUD_RATE 9600
17
18
19
intmain(void)
20
{
21
//unsigned int c;
22
//char buffer[7];
23
//int num=134;
24
25
26
/*
27
* Initialize UART library, pass baudrate and AVR cpu clock
Zum 1. Problem: Was passiert denn, wenn du mehr las "test" sendest. geht
dann auch immer nur das letzte Zeichen verloren? Und was passiert, wenn
du die drei Zeichen mit etwas Pause dazwischen sendest (geht beim Hammer
Terminal übder den ASEND Button)?
Hast du die CPU Freuqenz im Makefile bzw in den Projekteinstellungen der
IDE eingerichtet? Im Quelltext gehört das nicht hin und könnte schon die
Ursache deines 2. Problems sein.