Forum: Mikrocontroller und Digitale Elektronik avrdude, gui, problem mit hex.file


von waldhamster (Gast)


Lesenswert?

Hallo,

hier schreibt ein atmel neuling :)
Folgendes ist mein momentaner IST-Zustand. Ich habe mir AVRdude 
runtergeladen, dazu noch folgende gui 
http://www.pcfilter.de/AVR-Ecke/Page5.html  Ich verwende einen Usbtiny 
Programmer (den Bausatz, den es hier im Forum zu kaufen gab...). Dazu 
habe ich mir schon eine kleine Schaltung mit einem Tiny 12 aufgebaut und 
mit dem Programmer verbunden. Die Gui sagt, dass Verbindungstechnisch 
alles i.O. ist. Soweit also schon mal gut :)

Nun zum Problem: Da ich des Programmierens in C nicht mächtig bin, 
sondern irgendwann mal etwas Pascal gelernt habe, habe ich mir 
MikroPascal von Mikroelektronika runtergeladen und damit mein erstes 
Programm geschrieben. Hiernach habe ich ein hex.file abgespeichert um 
dieses in der o.g. gui zu öffnen und in den tiny zu übertragen.

Wenn ich die hex.file öffnen möchte kommt folgende Fehlermeldung:

"Das Verzeichnis oder die Datei C:\.... enthält Leerzeichen.Bitte 
entfernen Sie die Leerzeichen und laden Sie die Datei erneut"

Eigentlich sagt die Meldung ja was der Fehler ist, jedoch finde ich 
keine Leerzeichen, bzw weiss ich nicht wo diese suchen soll. wenn ich 
die hexfile im editor öffne sehe ich das:

:020000040000FA
:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
:1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
:1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
:1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:10010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
:10012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:10013000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
:10014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
:10016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
:10017000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
:10018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:10019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
:1001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:1001B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
:1001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:1001D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
:1001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
:10020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:10021000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
:10022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10023000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10025000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10027000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10029000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:1002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1002B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1002D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1002F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:10030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10031000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10033000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10035000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:00000001FF

wo sollen hier Leerzeichen sein??
Muss ich vielleicht irgendwas bestimmtes einstellen, bevor ich unter 
mikropascal die hex.file abspeichere??
Vielen Dank schon mal für die kommenden Antworten.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

1. Das HEX-File sieht µC-datentechnisch gesehen ziemlich leer aus. Ein 
gelöschtes Flash bzw. EEPROM enthält nur Hexbytes FF. Vergleiche das mal 
mit deinem HEX-File.

2. Wie heisst deine Hexdatei und in welchem Verzeichnis steht sie. Sind 
im Pfad oder Namen Leerzeichen vorhanden? Das kann bei der Übergabe 
des Namens von der GUI zum Kommandozeilenprogramm AVRDUDE stören, weil 
die Kommandozeile zerfrettelt wird! Umkopieren oder Umbenennen sollte 
helfen.

von Hc Z. (mizch)


Lesenswert?

Ich sehe zwar keine Leerzeichen (bemühe mal den Textditor Deiner Wahl 
mit dem .hex und schaue im Original nach).

Aber ich sehe auch kein Programm, denn da ist keins.  Wenn Du das Obige 
in den Flash brennst, ist er so leer wie zuvor.  Und wenn er es zuvor 
nicht war, ist es der beschriebene Bereich mit Sicherheit danach.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

3. So lange Listings besser in den Anhang packen. Bei einem Hochladen 
kannst du auch sicher sein, dass die Datei exakt so auf dem Forumsserver 
landet, wei du sie auf der Platte hast. Das kann bei der Fehlersuche 
entscheidend sein.

von waldhamster (Gast)


Lesenswert?

fehler gefunden. es lag am dateipfad, dort war das Leer. Die übertragung 
ging auch. Die Led fing an das zu machen, was sich machen sollte, 
dummerweise nur sehr kurz, dann ist der tiny in den himmel aufgestiegen. 
wenn ich noch eine software finde, mit der man schaltpläne 
zeichnen/simulieren kann, werde ich meine schaltung hier posten. ihr 
wisst bestimmt, wo der fehler ist...

ist nicht einfach für einen maschinenbauer in der kriechstromwelt ;)

von Jens (Gast)


Lesenswert?

Hallo!

> Wenn ich die hex.file öffnen möchte kommt folgende Fehlermeldung:
> „Das Verzeichnis oder die Datei:.................“

Ich habe die Fehlermeldung geändert auf:
„Das Verzeichnis oder der Dateiname:.........“
Ich hoffe damit sind dann alle Unstimmigkeiten aus dem Weg geräumt, 
hätte nie gedacht das man ernsthaft in der HEX-Datei nach Freizeichen 
sucht... ;-) Beim nächsten Update ist dann die Fehlermeldung mit 
angepasst.

LG Jens

von waldhamster (Gast)


Angehängte Dateien:

Lesenswert?

@jens,
hast du etwa die gui programmiert? wenn ja, daumen hoch!

kann mir irgendjemand hier sagen, wieso mir der tiny abgefackelt ist? Im 
Anhang ist der Schaltplan. ACHTUNG: die Beinchenbelegung stimmt nicht 
mit der auf dem Bild überein. Leider sind in der Bib. von KiCad nur 
wenige atmels vertreten, sodass ich einen achtbeinigen pic nehmen 
musste...
Pin4=GND; PIN5=PB0/Mosi; Pin8=VCC; Der Widerstand zwischen Transistor 
und Pin5 ist 4,7k; Der vor der LED 330R; Der Festspannungsregler ist ein 
LM7805; Den Transitornamen hab ich grad nicht zur Hand..

von g457 (Gast)


Lesenswert?

waldhamster schrieb:
> [..] wieso mir der tiny abgefackelt ist?

Wie äussert sich das? Magic smoke? Aber ein paar Dinge sind mir schon 
aufgefallen an Deinem Schaltplan:

1. War das mal ein JPEG? Pfui!
2. Ein paar Mehr Kondensatoren dürfens schon sein - 100n 
Abblockkondensator (Vcc-GNC) so nahe wie möglich an den µC, (direkt) vor 
und nach dem 7805 je einer laut Datenblatt (ebenfalls 100n? oder wars 
1u?).
3. Pöser Fehler in der Ansteuerung der LED: Die Last (fast, aber auf 
jeden fall hier) immer an den Kollektor [1]! Effektiv ziehts dir sonst 
den PB0 auf +12V (mindus dem was der Transistor verbrät wenn er 
durchschlägt..).

Achja und weitere Bibliotheken, insbesondere auch zu AVR, gibbet im Netz 
[2].

HTH und HF

[1] 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Ausg.C3.A4nge_benutzen.2C_wenn_mehr_Strom_ben.C3.B6tigt_wird
[2] http://www.kicadlib.org/

von waldhamster (Gast)


Lesenswert?

Dankeschön :) oh man, die materie, mit der ich sonst hantiere ist net so 
empfindlich...

von Jens (Gast)


Lesenswert?

@waldhamster

> hast du etwa die gui programmiert? wenn ja, daumen hoch!

Danke... :-) Wenn Du noch irgendwelche Fehler oder Ungereimtheiten 
finden solltest, sag mir bitte bescheid...

> kann mir irgendjemand hier sagen, wieso mir der tiny abgefackelt ist?

Ist er bestimmt nicht. Du musst auf jeden Fall am Reset-Pin noch ein 10k 
Widerstand gegen 5V Plus schalten. Des weiteren solltest Du so nah wie 
möglich am AVR einen 100nF Kondensator zwischen 5V Plus und Masse 
schalten. Und die Kondensatoren am Festspannungsregler fehlen auch (auch 
ein paar Elkos währen hier nicht schlecht).

Lade Dir mal das Demo von Target 3001! herunter (oder von Eagle), damit 
kannst Du auch problemlos Schaltpläne erstellen...

LG Jens

von Stefan B. (stefan) Benutzerseite


Lesenswert?

waldhamster schrieb:

> Anhang ist der Schaltplan. ACHTUNG: die Beinchenbelegung stimmt nicht
> mit der auf dem Bild überein. Leider sind in der Bib. von KiCad nur
> wenige atmels vertreten, sodass ich einen achtbeinigen pic nehmen
> musste...

Bevor man einen falschen Schaltplan postet, lieber einen mit Bleistift 
gezeichneten und eingescannten posten. Oder mit Malprogramm gezeichneten 
oder die Schaltung fotografieren... Bildformate beachten!

Die Anordnung der LED ist ja bereits besprochen worden. Es gibt einen 
Artikel darüber: "Transistor als Schalter, wohin mit der Last?"

Die LED sieht IMHO zuviel Strom (ca. 30mA). Wie man den passenden 
Vorwiderstand berechnet, steht im Artikel LED. Hier die Anmerkung zu 
den +12V unten beachten.

Deine Angst vor Kondensatoren solltest du bekämpfen. Korrekt sieht die 
Umgebung des Festspannungsreglers so aus: 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Stromversorgung

Wie stabil sind die +12V? Sind das wirklich +12V z.B. aus einem 
Labornetzteil oder steht das nur auf dem Steckernetzteil (?) drauf, so 
dass es auch mehr sein kann? Die Diode D1 als Verpolschutz ist kein 
Luxus!

von waldhamster (Gast)


Lesenswert?

Ich habe nun die Schaltung entsprechend euren Angaben aufgebaut.(Tiny13) 
Dieses mal ist nichts abgeraucht.
Weiterhin habe ich mir die Demo von Bascom runtergeladen und ein 
winziges Programm geschrieben, das wie folgt ausschaut:

$regfile = "attiny13.dat"
$crystal = 9600000
Config Portb = Output


     do
     Portb = 1
     Waitms 1000
     Portb = 0
     Waitms 1000
  loop

End

------------------------
Bascom meint, No Erros found... Wenn ich das "Projekt" speichere 
produziert er mir automatisch auch eine hex.datei. Die Übertragung in 
den Controller ist laut Dude und Gui auch erfolgreich. Nur beim 
Inbetriebnehmen, leuchtet die LED die Ganze Zeit, anstatt zu blinken.Die 
LED leuchtet übrigends an allen Ausgängen, nicht nur an dem oben 
deklarierten Portb.
Ihr wisst ja sicherlich, was ich nun wieder falsch gemacht habe...

Noch eine allgemeine Frage, die mich beschäftigt: Wird bei jedem 
Übertragen in den Controller alles überschrieben, oder muss man diesen 
irgendwann mal "löschen"?

von Wichtel (Gast)


Lesenswert?

Poste doch mal den aktuellen Schaltplan, evtl. steckt da schon das 
Problem.

Portb ist übrigens kein einzelner Ausgang, sondern normalerweise ein 
8bit breiter Port. Da der tiny13 aber insgesamt nur 8pin hat wovon 
pb5=/reset in der praxis meist noch wegfällt bleiben nur portb.0 bis 
portb.4 übrig.

Erst durch die Zeile "Portb=1" wird festgelegt dass höchstens das 
niederwertigste Bit eingeschaltet wird.

Wie lange hast du dir das Verhalten denn angeschaut? Standardmäßig läuft 
der t13 zwar auf 9,6 Mhz aber die werden noch durch 8 geteilt was auch 
die Wartefunktion beeinflusst.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Die LED müsste für deinen Code so angeschlossen sein:

active high
hell - dunkel - hell - dunkel ....

            1K     LED
PB0 )------####----->|-------( GND

oder

active low
dunkel - hell - dunkel - hell ...

            1K     LED
PB0 )------####-----|<-------( Vcc

von Jens (Gast)


Lesenswert?

@waldhamster

$regfile = "attiny13.dat"
$crystal = 9600000

Config Pinb.0 = Output      ' PB0 als Ausgang schalten
Led Alias Portb.0      ' PB0 als LED definieren

Do
   Led = 1
   Wait 1
   Led = 0
   Wait 1
Loop
End

LG Jens

von waldhamster (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Dank für die Antworten. Habe das Problem gefunden bzw. gelöst. 
Ich hatte meinen transistor (ein pnp) mit Last an emitter und collector 
an gnd
angeschlossen, so wie ich es im netz gelesen habe.  Das funktionierte 
nur bedingt.- die led ging nicht ganz aus, sondern blinkte nur zwischen 
hell und weniger hell. nicht wie gewollt zwischn an und aus.

Habe dann den transistor gegen einen npn getauscht und den 
basiswiderstand berechnet. nun blinkt die sache wie sie soll.

------------------------------------------------------------------------ 
---
der hintergrund, weshalb ich angefangen habe mich mit dieser ganzen 
sache zu beschäftigen ist, dass ich gerne das bremslicht meines 
motorrades etwas umbauen möchte...
und zwar soll, bei betätigung des bremsschalters das bremslicht drei mal 
blinken und dann an bleiben, bis man den bremshebel wieder loslässt.
bisher ging ich davon aus, dass durch das betätigen des bremsschalters 
einfach 12V an die led´s des rücklichts geschaltet werden und es 
leuchtet. unter dieser vorraussetzung habe ich auch meine schaltung 
aufgebaut--> 12V an die schaltung = ausgang blinkt.
------------
nun musste ich vorhin beim messen am moped feststellen, dass dauernd 12V 
zwischen masse und dem vermeindlichen schaltdraht für das bremslicht 
liegen. hierbei ist das bremslicht aus. betätigt man die bremse, so geht 
die spannung zwischen den genannten drähten auf 0,06V. Somit 
funktioniert die ganze geschichte genau andersrum...
Ich hänge mal den schaltplan des rücklichts an. hoffe ihr habt eine 
idee.
--------------------
ich bin jedenfalls infiziert... eine ganganzeige wird das nächste kleine 
projekt sein :)

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.