Forum: Mikrocontroller und Digitale Elektronik STK500 + MS-Terminal = Programmprobleme


von Eric S. (eazy)


Angehängte Dateien:

Lesenswert?

Hallo MC-Freunde,

ich stehe hier vor einem Problem, bei dem ich nicht weiter komme.
Ich arbeite mit dem STK500 Board mit Atmega16.
Im Anhang habe ich ein Programm geschrieben, mit dem ich mit dem 
MS-Terminal kommunizieren möchte.

Für das Empfangen des STK500:
Wenn ich im Terminal ein "E" eingebe, sollen alle LEDs leuchten.
Wenn ich ein "A" eingabe, sollen sich alle LEDs wieder ausschalten.

Für das Senden des STK500:
Wenn ich Taster 1 am Board drücke, soll er mir im Terminal "1" anzeigen.
Für Taster 2, soll er mir "2" ausgeben usw.

Ich weiß leider nicht wo hier mein Fehler steckt. Der Terminal reagiert 
überhaupt nicht. Die Verbindung ist korrekt.
Z.B. habe ich versucht endlos "T"s dem Terminal zu schicken. Das hat 
auch funktioniert. Also an der Verbindung liegt das schon einmal nicht.

Kann mir jemand bitte helfen?
Danke im Voraus!

Grüße Eric

von STK300 (Gast)


Lesenswert?

Hast du auch im HT die Flusssteuerung auf -> "Kein" gesetzt?

von Eric S. (eazy)


Lesenswert?

STK300 wrote:
> Hast du auch im HT die Flusssteuerung auf -> "Kein" gesetzt?

Ja, habe ich.

von STK300 (Gast)


Lesenswert?

Bekommst du irgend welche Warnungen beim compilieren?
Welche IDE hast du?

von MNR (Gast)


Lesenswert?

Statt
1
DDRD&=(~(1<<PD6))|(~(1<<PD7));
wolltest du sicher
1
DDRD &= (~(1<<PD6)) & (~(1<<PD7));

Gruß, Matthias

von STK300 (Gast)


Lesenswert?

Lass das Programm mal im Simulator laufen.
Vielleicht fällt dir was auf.

von Eric S. (eazy)


Lesenswert?

MNR wrote:
> Statt
1
DDRD&=(~(1<<PD6))|(~(1<<PD7));
> wolltest du sicher
>
1
DDRD &= (~(1<<PD6)) & (~(1<<PD7));
>
> Gruß, Matthias

ok, fehler ist behoben, danke! Trotzdem funktioniert nichts. Wenn ich 
wenigstens ein "E" eingebe, dann sollten die LEDs leuchten.
Irgendwas passt in meinem Quelltext nicht...Kann mir denn niemand 
helfen?

von xyz (Gast)


Lesenswert?

Aus -> ISR(EXT_INT0_vect) mach -> ISR(INT0_vect)
Aus -> ISR(EXT_INT1_vect) mach -> ISR(INT1_vect)

1MHz Takt und 9600Baud ergibt einen Fehler von -7%
das ist zuviel.
Nimm 4MHz dann sind es noch 0,2%.
Der interne RC-Oszil. ist zu ungenau.
Also einen ext. Quarz benutzen.
Dann funktioniert es auch.

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.