Hi,
aus dem Datenblatt habe ich ein paar Programmsegmente kopiert und in ein
C-Programm geschrieben. Compilieren und linken ging ohne Probleme und
dann habe ich das Programm im Debugger ausgeführt und besonders dabei
die Variable UDR0 beobachtet. Bei den anderen Variablen sehe ich, wie
sie sich verändern (zB. nach jedem Schritt in UART_init), aber UDR0 - wo
eigentlich der Wert reinmüsste, den ich mit der Funktion USART_Transmit
übergebe, wird nie dort reingeschrieben, die Bits von UDR0 bleiben alle
ungesetzt. Mach ich da was falsch in dem Programm oder kann ich bei den
IO-Views nicht sehen, wenn ein Zeichen zur Übertragung in UDR0
geschrieben wurde?
Dr G. Reed schrieb:> UDR kann zwar geschrieben werden>> Aber wenn man es liest, wird es den Wert eines vorher empfangenen> Zeichens beinhalten.
Ach so, ich bekomme also im IO-View "nur" bei den Bits etwas angezeigt,
wenn ich ein Signal empfangen habe, nicht jedoch, ob eins versendet
wurde??
also genaugenommen, um etwas zu sehen, müsste ich es "real" machen, also
auf den uC flaschen und dann mit einem Oszi das Signal abreifen und dann
meine Bits von dem gesendeten Zeichen anhand der Flanken erkennen?
Anfänger schrieb:> also genaugenommen, um etwas zu sehen, müsste ich es "real" machen, also> auf den uC flaschen und dann mit einem Oszi das Signal abreifen und dann> meine Bits von dem gesendeten Zeichen anhand der Flanken erkennen?
Vielleicht bist Du auch in der glücklichen Lage noch einen PC mit
serieller Schnittstelle zu besitzen (oder einen RS232/USB-Umsetzer).
Dann kannst Du mit einem Terminalprogramm ganz einfach mitlesen was da
so gesendet wird.
Das ist wesentlich komfortabler als ein Oszi.
mfG
Ulli
Ich hab mit dem Simulator noch fast nie was gemacht, vielleicht kann man
bei dem ja auch virtuell den RX und TX Pin verbinden, dann müsste man ja
im UDR Register nach einiger Zeit das gesendete Zeichen wieder empfangen
können.
Kann man das ?
Ulli B. schrieb:> Vielleicht bist Du auch in der glücklichen Lage noch einen PC mit> serieller Schnittstelle zu besitzen (oder einen RS232/USB-Umsetzer).> Dann kannst Du mit einem Terminalprogramm ganz einfach mitlesen was da> so gesendet wird.
hab ich schon, aber ich wollte es erstmal im Simulator ausprobieren, ob
dann das Programm alles klappt, so hab ich den ganzen "Aufwand" auch mit
dem Überspielen des Programms auf den AVR und das wollte ich mir erstmal
vermeiden und alles im Debugger simulieren, aber dass geht nun scheinbar
nicht :-(.
Aufwand mit Überspielen etc:
Wenn Du es ein paarmal gemacht hast, ist das wirklich kein Aufwand mehr.
Grad im Zusammenspiel mit UART-Bootloader kann man hier sehr schön
entwickeln.
Den Simulator vermisse absolut überhaupt nicht.
Eine Frage hab ich nochmal, ich hab das AVRISPmkII.
Muss ich eigentlich dazu den uC so wie hier aufbauen:
http://www.mikrocontroller.net/wikifiles/f/f6/Mega8_Tutorial.png
Oder ist es zum Flashen eines Prgraamms ausreichend, wenn ich lediglich
die entsprechenden Kontakte wie MISO, MOSI ... miteinander verinde und
den Quarz und den ganzen Rest, den ich da herum habe, weglasse?
Die Frage deshalb, weil ich einen uC in einer Platine drinnen hab, wo
viele Kontakte vorhanden sind, mit Tastern, LEDS ..., aber diese Platine
nicht für das dierekte Flashen geeignet, sondern dass müsste ich dierekt
machen.
Daher - muss die Grundschaltung wie in dem Link so angegeben komplett
auch für das Flashen so aufgebaut sein?
Anfänger schrieb:> Daher - muss die Grundschaltung wie in dem Link so angegeben komplett> auch für das Flashen so aufgebaut sein?
Den 6-poligen ISP-Anschluss brauchst du. Mehr nicht. Die Schaltung
braucht eine eigene Stromversorgung. Der Avrisp versorgt die nicht!
Und deinen Uart testest du so:
1
voidUSART_Transmit(unsignedchardata)
2
{
3
/* Wait for empty transmit buffer */
4
while(!(UCSR0A&(1<<UDRE0)));
5
/* Put data into buffer, sends the data */
6
UDR0=data;
7
}
8
9
intmain(void)
10
{
11
USART_Init(9600);
12
while(1)
13
{
14
if(UCSR0A&(1<<RXC0))
15
{
16
USART_Transmit(UDR0);
17
}
18
}
19
}
Dann hängst du deinen PC mit Hyperterminal ran (RS232-Pegel beachten!)
und wenn du ein Zeichen sendest, schickt der µC das wieder zurück. Damit
hast du rundum alles getestet.
mfg.