Der Smiley ist natuerlich 8 )
Hallo allerseits,
ich versuche verzweifelt eine Verbindung von meinem Board zu meinem PC herzustellen. Hab in dem Datenblatt vom stk500 gesehen, dass PD0 &1 mit RXD und TXD ueber ein Kabel verbunden werden. Hab ich auch gemacht. Hab dann aus den Tutorials Die Texte rauskopiert und ein Programm auf mein Board geladen.
Und wo wird jetzt die Variable X angezeigt ? Benötige ich da noch software ?
Hier mein Programm:
#include <avr/io.h>
#include <inttypes.h>
#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 4000000"
#define F_CPU 4000000UL // Systemtakt in Hz - Definition als unsigned long beachten
// Ohne ergeben sich unten Fehler in der Berechnung
#endif
#define BAUD 9600UL // Baudrate
// Berechnungen
#define UBRR_VAL ((F_CPU+BAUD*/(BAUD*16)-1) // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.
#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
#error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch!
#endif
/* UART-Init Bsp. ATmega16 */
void uart_init(void)
{
UCSRB |= (1<<TXEN); // UART TX einschalten
UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
}
int main(void) {
uart_init();
while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
{
}
UDR = 'x'; /* schreibt das Zeichen x auf die Schnittstelle */
}
Vielen Dank und viele Gruesse,
Jimmy
Der Smiley ist natuerlich 8 )
Am PC brauchst du noch ein Terminalprogramm, im Windows Hyperterminal.
Dort auch 9800 8n1 einstellen, kein Hardwarefluss.
Es könnte dann noch RX und TX verdreht sein.
Hab das Programm HTerm installiert und jetzt ? Stimmt obiges Programm zum Ausgeben von X? Und wo soll X dann angezeigt werden !? Muss ich mit PORTD nicht noch irgendwas zuweisen ?hab ja da nur die Verbingung zu RDX und TDX
Wenn du im Hterm die nötigen Einstellungen gemacht hast, solltest du schon was sehen.
PortD musst du nichts zuweisen.
Du kannst aber probieren ob in der Leitung alles richtig ist.
Wenn du den Stecker der auf PortD geht abziehst und eine Brücke hinein steckst, dann solltest du eine Eingabe am HTerm als Echo zurückbekommen.
mhhh also jetzt kommt was an lauter rechtecke und den wert 255...ich nehm an wegen der while schleife...aber wie krieg ich da ein x hin![]()
also was da komisch ist, wenn ich in Hterm die Baudrate veränder, wird mir immer ein anderes Zeichen gesendet !? Woran liegt das und wie sende ich dann genau und immer mein x?
Viele Gruesse und vielen Dank,
Jimmy
Wenn du mit dem internen Oszillator arbeitest kann es sein das dessen Frequenz nicht genau genug ist. Dann musst du einen Quarz nehmen.
Im HTerm musst du 9800 8n1 einstellen, kein Hardwarefluss oder Handshake.
also bei HTErm hab ich die Einstellungen so vorgenommen und da wird mir kein x angezeigt. Wenn ich die Baudrate auf 38400 erhöhe werden plötzlich x angezeigt !? Woran liegt denn das ?
Das ist schwierig festzustellen. Probier mal ein Wort auszugeben.
Möglich wäre das dein Takt nicht stimmt und du tatsächlich vier mal so schnell bist.
Lesezeichen