PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten am PC anzeigen



Rosenthal
04.07.2005, 08:52
Hallo, ich bin auf der Suche nach einem Prog, mit dem man Daten von einem AVR (ADC Eingang) am PC-Bildschirm anzeigen lassen kann. Ich benutzte als Programmierplattform Imagecraft ICCV7 mit einem STK500(MEGA163). Ich habe schon öffters von einem solchen Programm gehört, nur fällt mir leider der Name nicht mehr ein.

Vielen Dank im Voraus

Z80
04.07.2005, 12:24
Nennt sich dieses Programm eventuel HyperTerminal? Er zeigt die auf der rs232 empfangenen Daten an. START -> Programme -> Zubehör -> Komunikation -> Hyperterminal

schamp
04.07.2005, 13:25
Hyperterminal funktioniert bei mir nicht .. :-&
Aus welchen Gründen auch immer, ich weis es nicht !!

Ich empfehle dir TeraTerm Pro. Am besten einfach ma googlen.

Gruß
schamp

Rosenthal
04.07.2005, 15:44
Hallo, Danke schon mal.

@ Z80 das Prog meinte ich. Wusste nicht, dass es zu WinDoof gehört. Ich benutze jetzt aber Realterm. Habe bis jetzt zumindest geschafft, dass ich über UART die LEDs vom PC (RxD)aus angesteuert bekomme. Werde jetzt mal versuchen, mir die Taster vom STK500 am PC anzeigen zu lassen.

Rosenthal
04.07.2005, 16:50
Hei, bekomme es irgendwie nicht hin, vom Controller Daten an den PC zu Senden. Ich poste mal meinen Code, vielleicht erkennt ja jemand einen Fehler. Das senden vom PC zum Controller funktioniert aber weiterhin.

#include <iom163v.h>
#include <macros.h>

void port_init(void)
{
DDRA = 0x00;// Taster am STK500
DDRB = 0xff;//LEDs am STK500
DDRD = 0x02;// RXD an PD0 und TXD an PD1
}

//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0,2%)
void uart0_init(void)
{
UBRR = 0x19; //set baud rate
UCSRB = 0xD8; //enable
}

#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
PORTB=UDR;
}

#pragma interrupt_handler uart0_tx_isr:14
void uart0_tx_isr(void)
{
UDR=PINA;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
uart0_init();

MCUCR= 0x00;
GIMSK= 0x00;
TIMSK= 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
int main(void)
{
init_devices();
while(1);
}

Rosenthal
04.07.2005, 17:35
Habs geschaft. Ich musste den Befehl UDR=PINA in eine while(1)-Schleife packen. Mir ist nur noch nicht so ganz klar, wesshalb ich das bei PORTB=UDR nicht machen muss.
Geht das nicht auch ohne while-Schleife, da ansonsten der Controller ja ständig in der Schleife hängt?

RCO
04.07.2005, 17:48
Tja, ich würde dafür sprintf und den ADC-Interrupt benutzen.

Könntest du nochmal deinen aktuellsten Code posten, dann wird das mit Pin und port vielleicht offentsichtlich.

Rosenthal
04.07.2005, 17:50
Hier ist mein aktueller Code:


#include <iom163v.h>
#include <macros.h>

void port_init(void)
{
DDRA = 0x00;// Taster am STK500
DDRB = 0xff;//LEDs am STK500
DDRD = 0x02;// RXD an PD0 und TXD an PD1
}

//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0,2%)
void uart0_init(void)
{
UBRR = 0x19; //set baud rate
UCSRB = 0xD8; //enable
}

#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
PORTB=UDR;
}

#pragma interrupt_handler uart0_tx_isr:14
void uart0_tx_isr(void)
{
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
uart0_init();

MCUCR= 0x00;
GIMSK= 0x00;
TIMSK= 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
int main(void)
{
init_devices();
while(1)
{
UDR=~PINA;
}
}

Rosenthal
05.07.2005, 16:12
Habe es geschafft, mir die AD-Werte am Terminal anzeigen zu lassen. Als Referenzspg habe ich 1Volt. Der Terminal zeigt mit dann bei 0V 00 an und bei 1V ff. Dazwischen natürlich die jeweiligen Werte.

Gibt es eine Möglichkeit, mir diese Werte direkt (online) in Excel einzulesen? Hat damit jemand eventuell Erfahrung und kann mir einen Tip geben?

jay-1982
07.07.2005, 14:15
Hallo.
Ich habe ein ähnliches Problem.
Bin zwar soweit dass ich Zeichen bzw. Zeichenketten über den UART senden bzw. empfangen und auch verarbeiten kann mit dem Controller.
Ich benutze das Programm HTerm.

Allerdings stört es mich, dass ein empfangener Wert ja immer neu geschrieben wird auf dem Bildschirm.
Ich woll ein Programm schreiben, am besten kleines Konsolenprogramm, mit welchem die Werte immer aktualisiert werden, in etwa so:
Anzeige:
"AD-Wert = xxxx"
Dabei soll sich der Wert 'xxxx' immer aktualisieren wenn der Wert neu empfangen wurde.

Vielleicht kann mir da jemand helfen !?!?!?
Ich bräuchte also Infos, wie man dan COM-Port z.B. mit Visual C++ ansprechen kann...
Besten Dank!

PS: Habe natürlich schon viel gesuch im Netz, leider nichts passendes gefunden... :(

michaelb
07.07.2005, 14:52
Hi Jay,
um den COM anzusteuern musst du dich mit der WinAPI auseinander setzen!
Gruß Michi

PicNick
07.07.2005, 15:28
Ich woll ein Programm schreiben, am besten kleines Konsolenprogramm, mit welchem die Werte immer aktualisiert werden, in etwa so:
Anzeige:
"AD-Wert = xxxx"
Dabei soll sich der Wert 'xxxx' immer aktualisieren wenn der Wert neu empfangen wurde.

Eine einfache Möglichkeit ist es, einfach immer nur in die gleiche Zeile zu schreiben, also

"\rAD-Wert = xxxx "

ein paar blanks hinten, damit der alte wert sicher überschrieben wird.

Du kannst auch an eine bestimmte Stelle des Schirms fahren
Ein paar Infos über Terminals findest du da

https://www.roboternetz.de/wiki/pmwiki.php?n=Main.TermANSII

Donald.Duck
07.07.2005, 17:32
Hallo

kann man das alles, was man auf dem HyperTerminal sieht auch in z.B. einer .txt-Datei mitprotokollieren?

jay-1982
07.07.2005, 20:33
Wenn man das Programm schliesst, wird man gefragt ob man speichern will. Ausserdem kann man bei
Übertragung > Test aufzeichnen
den Text mitloggen und speichern.

Danke PicNick für den Link!
Habe es mit dem befhel nicht so 100%ig hinbekommen, werde es jetzt allerdings etwas anders lösen.
Trotzdem Danke!

MfG.

Donald.Duck
11.07.2005, 12:56
Danke jay-1982e, hast mir sehr geholfen.

MarioLemieux
25.07.2005, 15:43
Hallo, ich habe ein ähnliches Problem:
Ich möchte mit einem Butterfly (Atmega 169) Daten vom A/D- Wandeler loggen und diese dann über die serielle Schnittstelle zum PC übertragen.
Da ich leider noch nie was mit den Atmel Chips gemacht habe, stehe ich zur Zeit noch recht im Schilf.
Kann mir vielleicht jemand kurz schreiben, welche Register initialisiert werden müssen? Oder hat vielleicht jemand gerade ein Demoprogramm zu Hand? Würde mir sehr helfen.
Ich arbeite mir der IAR Embedded Workbench.

Gruss MarioLemieux

PicNick
25.07.2005, 15:48
Is nicht deine Konfiguration, aber ein paar tips gibt's da

https://www.roboternetz.de/wiki/pmwiki.php?n=Main.BasComVergleich1

jay-1982
25.07.2005, 16:06
Hilfreich ist auch folgender Link:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Unter 'UART' siehst du einzelne Schritte.
Weiterhelfen tut auch die Library welche bei Win-AVR mitgeliefert wird.

Aber oben genannter Link von PicNick sollte Dir auch schon weiterhelfen.

MfG.

MarioLemieux
25.07.2005, 16:10
Hmm, habs jetzt gerade versucht 1 zu 1 zu kopieren und die h-files vom Win-AVR einzubinden, aber jetzt hab ich ca 20 Fehler, weil er die Registernamen nicht kennt...
Und mit dem Win_AVR komm ich gar nicht zurecht. Irgendwie kann ichs dort gar nocht kompilieren...

jay-1982
25.07.2005, 16:14
1:1 klappt meistens nicht wirklich...

Hast du das Win-AVR?? Bzw. dich schon damit beschäftigt???

MarioLemieux
25.07.2005, 16:22
also, ich habs runtergeladen und installiert. Dann gibts ja 3 Icons:
MFile [WinAVR]
Programmers Notepad [WinAVR]
TkInfo [WinAVR]

Also im Programmers Notepad kann ich das ganze kopieren, aber dann weiss ich nicht, wie kompilieren...

jay-1982
25.07.2005, 16:36
Ok, ich versuchs dir mal zu erklären:

Als erstes musst du ein Verzeichnis anlegen wo du das C-File speicherst, egal mit welchem Editor.

Dann öffnest du das Programm 'MFile'
An der Menüleiste 'Makefile' anklicken
-MCU-Typ auswählen
-Debug-Format ->AVR Studio 3.x oder 4.07 (je nachdem mit was du programmierst)
-C/C++ source file(s) auswählen, also Pfad angeben

Jetzt auf 'File' in der Menüleiste und 'Save as'

Wenn du das makefile gespeichert hast, auch in den Ordner in welchem sich dein C-File befindet (so sind alle Dateien leicht zu finden), öffnest du das DOS-Eingabefenster und gehst in den Ordner wo sich die Datein befinden.

Jetzt 'make' eingeben.
Der Compiler arbeitet jetzt. Eventuelle Fehler zeigt er auch an.

MarioLemieux
26.07.2005, 08:38
Hat hier wirklich noch niemand mir der IAR Entwicklungsumgebung die RS232 Schnittstelle gebraucht?

Kann mir nicht jemand schreiben, welche Register initialisiert werden müssen? Seh voll nicht durch!

Kjion
26.07.2005, 10:17
RTFM

Sorry, aber im Datenblat stehts wirklich genau drinnen. Du suchst dir einfach die Registerbeschreibung zum UART deines AVRs ( also ATmega169 ) und gehts die Register nacheinander durch, überlegst dir welche Bits du setzen musst und übernimmst das in einen Code.

Es gibt so ein C-Code Bespiel zur Initialisierung ( Seite 156 )!

MfG Kjion

MarioLemieux
26.07.2005, 10:51
machmal ists schon zu kotzen! Habe vergessen, das TXEN auf 1 zu setzen! Jetzt funktionierts!

Ich bedanke mich bei allen, die sich geopfert haben, mir zu helfen!