Forum: Mikrocontroller und Digitale Elektronik ATMEGA8 USART buggy in Windowsplattform


von JD (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein Atmega8 16PU chip mit 16MHz Quarz angeschlossen.
Ich benutze eclipse mit AVR plugin, AVR Tool chain und in ISP Programmer
st500v2.

habe es in einem Apple Laptop probiert, es läuft wie geschmiert.
Baudrat 9600. Ich bekomme auch richtige Ausgabe in meinem Client.

Die identische code und selber fuse wieder von ein windows rechner aus
auf dem chip geladen, dann bekomme ich nur laut null als Rückgabe.
Vermutlich die Takt stimmt nicht mehr.

Warum läuft es mit Windows nicht? winavr ist doch gut getestet.
Weisst vielleicht jemand woran es liegt? Das Plattform sollte doch
nicht so viel unterschied machen. Schließlich kann ja nicht jeder MAC 
kaufen.

Gruß,
JD

von ... (Gast)


Lesenswert?

JD schrieb:
> Warum läuft es mit Windows nicht? winavr ist doch gut getestet.
> Weisst vielleicht jemand woran es liegt? Das Plattform sollte doch
> nicht so viel unterschied machen. Schließlich kann ja nicht jeder MAC
> kaufen.

Du bist wahrscheinlich der einzige, der unter Windows versucht einen 
ATmega zu programmieren ;-)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Lies doch mal unter Windows die Fuses des vom Apple programmierten Chip 
und umgekehrt. Dann kommst du dem Problem vermutlich schnell auf die 
Spur.

... schrieb:
> Du bist wahrscheinlich der einzige, der unter Windows versucht einen
> ATmega zu programmieren ;-)

Nö, er muss der zweite sein, denn ich tue das auch :P

von Rene B. (themason) Benutzerseite


Lesenswert?

Vllt auch der dritte. Ich programmiere AVRs auch schonmal mit Windows 
:-)

von JD (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Lies doch mal unter Windows die Fuses des vom Apple programmierten Chip
> und umgekehrt. Dann kommst du dem Problem vermutlich schnell auf die
> Spur.

Hallo Matthias,

vielen Dank für die Tipps. Ich habe mit Burn-o-Mat die aus MAC gesetzte 
Fuse auf dem chip in windows ausgelesen. Und auch das gleiche Umgekehrt 
in MAC die Fuse aus Windows gelesen. Es war für ATmega8 identisch.

Das gleiche Versuch habe ich mit ATtiny45 gemacht. MAC setzte ATtiny45 
Fuse richtig und Windows schreibte Fuse für ATtiny 45 False, habe schon
ein paar ATtiny45 zerstört. Blöde ist das AVRDUDE sagte mir in allen
Platform die Fuse war für ATmega8 richtig gesetzt.

Ich kann auch servos mit "falschem" Takt in ATmega8 betreiben, was 
meiner Meinung nach auch relativ taktsensible Tätigkeit ist. Nur für 
USART Tätigkeit ist die Taktabweichung zu groß.

@Alle
Ich habe auch die Entwicklung in VMware guest System Opensuse 12.1
und guest System Windows XP in den gleichen Windows 7 Host probiert. Das 
Verhalten ist ganz unterschiedlich. (Um die unwichtige Infos zu sparen, 
gehe ich hier nicht mehr genau ein, kurz gesagt, es hat für USART Task 
nichts gebracht).

Nehme ich an, dass die Fuse von Windowsumgebung richtig gesetzt ist, was 
ich auch eigentlich von AVRDUDE weiss, kann mein Problem irgendwo 
anderes liegen?

Ich habe auch schon Fuse in MAC setzen lassen und dann code in Flash von 
MAC aufsetzen lassen, Lesen und Senden in USART lief richtig. Im 
gleichen Chip Fuse unverändert bleibt, identisches Code für Chip von 
Windowsumgebung (virtualisiertes windows xp und nicht virtualisiertes 
windows7 )in Flash aufladen lassen, dann zerhaue ich die Takt.

Das ist was ich nicht verstehe, hat Flash code, Bootloader in ATmega8 
Einfluß auf Fuse? Die Platformabhängige Implementierung von avr-lib 
sollte aber nicht der Grund für mein Problem oder irre ich mich? Ist es 
ein Fuse Problem?

Ich freue mich auf Eure Antwort. Mich reizt es sehr dass ich die Ursache 
meines Problems auf dem Grund gehen kann.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Viel kann ich da nicht zu sagen, da ich meine AVRs immer unter Win XP 
mit dem AVRISP MkII brenne. Ich vermute ein Interpretationsproblem, d.h. 
manche Software mag eine Fuse als 'burned' sehen, wenn sie gelöscht ist, 
während andere Software diese Fuse genau umgekehrt interpretiert.
Ein Hinweis wäre, rauszufinden, was genau in den Tiny45 'misfused' ist. 
Ich will auch nicht ausschliessen, das manche Brennsoftware vllt. nicht 
genau nach Datenblatt interpretiert. Wichtig ist auf alle Fälle, das das 
zu brennende Device in der Kommandozeile oder im Brenndialog richtig 
angegeben ist, da die Fuses zwischen den AVRs doch sehr unterschiedlich 
sind. Ein ATMega8 z.B. hat völlig andere Fuses als der Tiny45.

von JD (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Viel kann ich da nicht zu sagen, da ich meine AVRs immer unter Win XP
> mit dem AVRISP MkII brenne. Ich vermute ein Interpretationsproblem, d.h.
> manche Software mag eine Fuse als 'burned' sehen, wenn sie gelöscht ist,
> während andere Software diese Fuse genau umgekehrt interpretiert.

Vielen Dank, ich habe ein "MySmart USB light", es ist auch nicht mehr 
viel
aktuell. Habe nur gedacht für ATmega8 und mein Zweg reicht es.

Mein Fazit: man sollte schon ein wenig mehr in das Tooling investieren, 
somit
spart man mehr Zeit. Wenn ich mehr ausfinde, dann gebe ich noch 
bescheid.

Best Grüße
JD

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.