Forum: Mikrocontroller und Digitale Elektronik Kann AVR auslesen, aber nicht brennen - warum??


von Franz K. (franko22)


Lesenswert?

Hallo µC-Profis,

vielleicht kann mir jemand von Euch einen Rat zu folgendem Problem 
geben:

Ich bin Mikrocontroller-Anfänger mit einigen Elektronik-Grundkenntnissen 
und möchte mich in die AVR-Programmierung einarbeiten. Habe mir hierzu 
das Lehrbuch von Roland Walter besorgt (Spitze gemacht) und das darin 
vorgestellte Experimentierboard auf Lochstreifenrasterplatine aufgebaut.

Da mein alter Rechner (mit Windows 98), den ich zu diesem Zeitpunkt 
hatte, eine furchtbar schlechte parallele Schnittstelle hatte 
(High-Pegel bei 1,6 V!), habe ich auf einem Experimentierboard einen 
SP12-Bustreiber mit Transistoren und Leuchtdioden zur Anzeige der 
Aktivität der einzelnen Kanäle aufgebaut. Damit konnte ich einen ATMEGA 
8 direkt aus BASCOM heraus brennen (Einstellung "Universal MKS 
Interface" und "WinAVR and SP12"). Habe damit die  ersten 
Übungsbeispiele von Roland Walter durchgearbeitet und war glücklich. 
Brennen und Auslesen des ATMEGA 8 funktionierten ohne Probleme.

Ich hielt es dann für eine gute Idee, wegen häufiger Win98-Abstürze 
meinen Rechner aufzurüsten und auf Windows XP umzusteigen. Also neues 
Mainboard besorgt, neue CPU, Speicher, Festplatte und Grafikkarte 
eingebaut und XP installiert. Prima, läuft endlich wieder stabil, bin 
sehr zufrieden.

Aber: Nun kann ich meinen vorher schon programmierten ATMEGA 8 zwar 
auslesen (BASCOM erkennt auch selbständig den richtigen Typ ATMEGA 8), 
aber nicht mehr überschreiben.

Ich habe auch gemäß Roland Walters Hinweis auf S. 31 den Treiber 
userport.sys installiert und gestartet. Es geht aber trotzdem nicht.

Elektrische Probleme am AVR kann ich, denke ich, ausschließen. Ich habe 
zigmal die Spannung an den AVR-Pins (und zwar wirklich direkt an den 
Pins) Reset, Gnd, Vcc, SCK und MOSI bei sowohl High-Pegel, als auch 
Low-Pegel an den LPT-Pins 2, 3 und 9 gemessen. Ergebnis: 4,99 V bei 
High-Pegel und 0,12 V bei Low-Pegel, Gnd natürlich 0,00 V. Bei AVR-MISO 
High- und Low habe ich 4,99 V und 0,28 V an LPT-Pin 11. Das müsste doch 
passen, oder?

Beim Brennversuch flackern alle vier Leuchtdioden für MISO, MOSI, SCK 
und Reset, also kommt offensichtlich ein Signal aus dem LPT-Port raus. 
Die Pegel am AVR passen auch. Warum klappt das mit dem Brennen dann 
nicht (Grübel und Kopfkratz....)?

Vielleicht habe ich ja aus irgendeinem Versehen beim letzten 
erfolgreichen Brennen unter Win98 unwissentlich irgendein Fusebit 
verstellt. Also programmierten ATMEGA 8 raus aus der Fassung und 
jungfräulichen, fabrikneuen ATMEGA 8 rein  in die Fassung. Brennversuch, 
Leuchtdiodenflacker, nix is programmiert. Warum klappt das nicht (Grübel 
und großes Kopfkratz....)?

Vielleicht liegt es ja doch am userport.sys. Im Gerätemanager stehen bei 
den Ressourcen für den LPT-Port folgende Einträge: "E/A Bereich 
0378-037F",  "E/A Bereich 0778-077B" und "DMA 03". Ich konnte aber nur 
den ersten E/A Bereich in den userport.sys übernehmen, den zweiten E/A 
Bereich von 0778-077B nicht, denn dort lassen sich nur Werte zwischen 
000 und 3FF eingeben. Kann es also daran liegen, dass dieser zweite E/A 
Bereich des LPT-Ports nicht vom userport.sys freigeschaltet ist?

Ich wäre sehr dankbar, wenn mir hierzu jemand einen Rat geben könnte, 
denn ich weiß nun wirklich nicht mehr, wo der Fehler noch liegen könnte.

Besten Dank schon im voraus!

Viele Grüße
franko22

von sechsnullfuenf (Gast)


Lesenswert?

Ein Timingproblem ?

von Chris :. (fr34k)


Lesenswert?

... würd ich auch vermuten ...

von Wolfram Q. (quehl)


Lesenswert?

mal im abgesicherten Modus versuchen. Da werden keine Treiber geladen 
und dann gibt es da auch weniger Timing Probleme. Zumindest einen 
Versuch wäre es ja wert. Auch wenns dann nicht hilft.

mfg

von Benedikt S. (Firma: embedded projects GmbH) (flopper)


Lesenswert?

ui wenn du frisch dabei bist dann schau dir doch lieber das C Tutorial 
hier im Wiki an. Glaub da hast du mehr Spass und Freiheit als mit 
Bascom.

von sechsnullfuenf (Gast)


Lesenswert?

Ein richtiger Programmer mit eigenem Prozessor wird das Timing problem 
nicht haben.

von Roland Z. (r-zimmermann)


Lesenswert?

@Benedikt Sauter,

C ist als Programmiersprache mächtiger, keine Frage, zumindest je 
nachdem was man damit anstellen möchte. Aber Bascom ist für Einsteiger 
einfacher und führt schneller zum ersten Erfolg, so zumindest meine 
Erfahrung als ein Kollege in die uC-Sachen eingestiegen ist. :)

von Franz K. (franko22)


Lesenswert?

Hallo Leute,

vielen Dank schon mal für Eure Hinweise.

Ich verstehe noch nicht ganz, was ein "Timingproblem" ist. Tritt das 
dann auf, wenn mehrere Programme gleichzeitig versuchen, auf den 
LPT-Port zuzugreifen? Oder muss ich für den LPT-Port irgendwo in der 
Systemsteuerung eine bestimmte Frequenz oder Geschwindigkeit einstellen, 
wie bei den seriellen Ports? Oder muss ich in BASCOM irgendwo den 
Prozessortakt oder den FSB-Takt angeben?

Ich habe auf jeden Fall mal den Tip von quehl aufgegriffen und XP im 
abgesicherten Modus gestartet. Konnte damit aber BASCOM leider nicht 
starten. Es kam die Fehlermeldung "Access violation at address 004E7617 
in module "bascavr.exe". Read of address 0000005C." Dementsprechend 
konnte ich natürlich auch nichts Brennen.

@ sechsnullfuenf:
Meinst Du mit einem "richtigen Programmer mit eigenem Prozessor" so 
etwas wie das STK 500 von Atmel? Ich denke in der Zwischenzeit ernsthaft 
daran, mir so etwas zuzulegen.
Denkt Ihr, dass das Brennen mit dem STK 500 klappen würde? Und kann man 
damit sonst noch etwas machen, was mit dem Rowalt-Board nicht geht?

Vielen Dank und viele Grüße
franko22

von Roland Z. (r-zimmermann)


Lesenswert?

Hallo,

wenn du deine AVRs "in System" Proggen willst reicht zum einstieg auch 
nen einfaches AVRISP (die sind mittlerweile sehr günstig) oder nen 
AVR910 Progger. Ich würde dir wenn du aber selbst nen Programmer bauen 
willst lieber gleich raten einen mit USB-Anschluß zu bauen, da die 
Paralell/seriell-Schnittstelle langsam aber sicher am Aussterben ist. Je 
nach Anwendung bringt die USB-Variante auch gleich die Stromquelle für 
kleinere Schaltungen mit. :)
Was ich dir an USB-Proggern empfehlen kann, der Progger von Benedikt 
Sauter ist sehr gut den hab ich für mich selbst und auch schon für 
einige Kollegen die keine möglichkeit zum Ätzen haben gebaut. Astrein 
das Ding. Stand letztens auch in der Elektor.

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.