Forum: Mikrocontroller und Digitale Elektronik Verzweifelung:Atmega über PonyProg beschreiben


von flocki (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

habe das Forum schon durchstöpert, aber ich bekomme es nicht hin:

Folgendes Problem:

Habe mit AVR-Studio folgendes Programm geschrieben:

/[code]
#include <avr/io.h>          // (1)

int main (void) {            // (2)

   DDRD  = 0xFF;             // (3)
   PORTD = 0xFF;             // (4)
   DDRB = 0xFF;
   PORTB = 0xFF;
   DDRC = 0xFF;
   PORTC = 0xFF;
   while(1) {                // (5a)
     /* "leere" Schleife*/  // (5b)
   }                         // (5c)

   /* wird nie erreicht */
   return 0;                 // (6)
}
/[code]

Wie kann ich eigentlich die Hex-Datei erzeugen? AVR? Win Avr?

Die Hex-Datei möchte ich nun mit PonyProg 2000 übertragen.

Habe bei PonyProg Atmega32 und AVR-Micro eingestellt.
Des Weiteren habe ich wie folgt die Fusebits gesetzt.

Benutze ein 1:1 Kabel am Notebook.
Habe das Polinboard und greife über die ISP-Schnittstelle zu.

Calibrationtest wird mit ok, angezeigt.

Im Portsetup bei Pony habe ich serial-port angewählt mit com1.
Bei Probe wird ok angezeigt, aber das Schreiben ist trotzdem fehlerhaft.

Warum?

Weiß nicht mehr weiter.

Gruß

von Michael K. (Gast)


Lesenswert?

flocki schrieb:

> Wie kann ich eigentlich die Hex-Datei erzeugen? AVR? Win Avr?

> Bei Probe wird ok angezeigt, aber das Schreiben ist trotzdem fehlerhaft.

Äh, ich bin jetzt etwas verunsichert. Du weißt nicht, wie Du das 
AVR-Studio dazu bringst, eine .hex Datei zu erstellen und wunderst Dich 
dann, daß Du genau diese nicht erstellte .hex nicht übertragen kannst?

Welche Fehlermeldung bekommst Du denn?

42m

von flocki (Gast)


Lesenswert?

Sollte ja automatisch durch avr-studi geschehen wenn ich compiliere.

Leider wird die HEX-Datei nicht upgedatet. Denn das Erstelldatum steht 
immer noch auf gestern

von Guru (Gast)


Lesenswert?

>Sollte ja automatisch durch avr-studi geschehen wenn ich compiliere.

Das HEX-File wird nicht erstellt, wenn compiliert wird, sondern wenn 
"build" angefordert wird. Das sind zwei unterschiedliche Sachen. Es mag 
zwar sein, das "gewöhnlich" das bauen als compilieren bezeichnet wird 
und damit dennoch das bauen gemeint ist, aber da wir nicht wissen, wie 
erfahren Du bist, kann es sein, das Du da was falsch einschätzt.

>Leider wird die HEX-Datei nicht upgedatet. Denn das Erstelldatum steht
>immer noch auf gestern
Das HEX-File wird nur dann neu erzeugt, wenn sich im Quellcode was 
geändert hat.

Aber ich bin auch irritiert. Erst fragst Du wie das HEX-File erzeugt 
wird, dann aber weisst Du sogar wo es gespeichert ist, denn sonst könnte 
Dir das mit dem Datum ja nicht auffallen.

Bitte versuche Dein Problem etwas klarer zu beschreiben.

von flocki (Gast)


Lesenswert?

so habe es mit der Hex geschafft, avr hatte mir die in default-Ordner 
abgelegt.

Habe das Programm ohne Fehler übertragen. Jedoch leuchtet keine LED auf

von Guru (Gast)


Lesenswert?

>so habe es mit der Hex geschafft, avr hatte mir die in default-Ordner
>abgelegt.

Nun, letzteres ist das Standard-Verhalten. Was ist daran so 
verwunderlich?

Und ich möchte Dich nochmal bitten Dich klar und verständlich 
auszudrücken. Warum erwartest Du, dass da eine LED leuchtet? Soweit ich 
den Code verstehe, sollte da garkeine LED leuchten.

von flocki (Gast)


Lesenswert?

Ok. tut mir leid wenn es gerade alles ein wenig verwirrend klingt.

Sie haben Recht, das die HEX-Datei über Build erstellt wird.

Hatte mich da Falsch Ausgedrückt.

Arbeite das erstemal mit AVR , Pony Prog.

Wie gesagt habe mir eine HEX-Datei mit folgenden Code erstellt:

#include <avr/io.h>          // (1)

int main (void) {            // (2)

   DDRD  = 0xFF;             // (3)
   PORTD = 0xFF;             // (4)
   DDRB = 0xFF;
   PORTB = 0xFF;
   while(1) {                // (5a)
     /* "leere" Schleife*/  // (5b)
   }                         // (5c)

   /* wird nie erreicht */
   return 0;                 // (6)
}

Nach Build, wird mir eine Hex-Datei erstellt.

Diese öffne ich mit PonyProg2000.

Anschließend führe ich write all aus.

Dann läuft der Ladebalken bis 100%.
Dann erscheint die Meldung. Write OK.

Aber man sieht das die LED nicht brennt.

Woran könnte das liegen?

Wie gesagt hatte das Pollinboard schon mal in Betrieb. Funktioniert 
also.

von flocki (Gast)


Lesenswert?

Ich setze den PortD als Ausgang, damit stehen 5V am Ausgang an.

Auf der Pollinplatine ist eine LED angebracht, die genau am PIN des µC 
(PortD) liegt.

Daher sollte nach meiner Meinung die LED angehen.

von Guru (Gast)


Lesenswert?

Ich werde das jetzt zum letzten Mal schreiben. Drücke Dich (wir Duzen 
uns hier) klar und verständlich aus.

>Aber man sieht das die LED nicht brennt.
>Woran könnte das liegen?

Es ist immer noch unklar, warum, mit welcher Begründung Du erwartest, 
das da eine LED leuchtet. Zu dieser Begründung gehört eine Beschreibung 
des entsprechenden Programmteils in Verbindung mit dem entsprechenden 
Teil des Schaltplanes.

von Guru (Gast)


Lesenswert?

>Auf der Pollinplatine ist eine LED angebracht, die genau am PIN des µC
>(PortD) liegt.

Das ist schon mal ein guter Ansatz.
Aber die LED hat ja zwei Anschlüsse. Wie ist der andere Anschluss 
belegt? Nicht nur klar schreiben bitte, sondern auch vollständig.

von flocki (Gast)


Lesenswert?

Der eine Pin der LED ist am µC angeschlossen.
Der andere Pin ist über einen Widerstand auf Masse gezogen.

Anbei der Link zur Beschreibung des Boards:

http://www.pollin.de/shop/downloads/D810038B.PDF

von Guru (Gast)


Lesenswert?

Gut. Du hast einen Schaltplan. Schön. Wenn Du ein Messgerät hast, dann 
prüfe doch einfach mal nach, ob an dem Portpin 5V, herauskommen und ob 
an der LED 5V ankommen.

Ich sehe im Moment nicht das Problem. Du hast Doch alle Informationen. 
Warum benutzt Du die nicht?

von me (Gast)


Lesenswert?

> Der eine Pin der LED ist am µC angeschlossen.
> Der andere Pin ist über einen Widerstand auf Masse gezogen.
LED falsch herum?

von Michael K. (Gast)


Lesenswert?

Guru schrieb:

> Das HEX-File wird nicht erstellt, wenn compiliert wird, sondern wenn
> "build" angefordert wird. Das sind zwei unterschiedliche Sachen. Es mag

Es ist sogar so - zumindest beim AVR-Studio 5 - und ich bin mir fast 
sicher, daß es beim Studio 4 auch so ist - daß die .hex nicht mal dann 
erstellt wird, wenn man einen Build macht, zumindest, so lange man nicht 
in den 'Project Properties | Build' .hex als zu erzeugendes File 
angekreuzt hat.

Das hat mich in den ersten Tagen auch einiges an Nerven gekostet :D

42m

von Uwe (de0508)


Lesenswert?

Hallo,

nur mal so geraden im Schaltplan sind noch Jumper eingezeichnet, sind 
die gesetzt ?

von benni (Gast)


Lesenswert?

mach ma port auf low anstatt auf high (PORTB = 0x00)
leds sind bestimmt an Vcc als auf Masse geschaltet.. wird oft gemacht, 
da der µC mehr Strom ziehen als liefern kann

grüße benni

von benni (Gast)


Lesenswert?

ok sry.. war zu faul alles zu lesen.. hab grad schaltplan gesehen.. sind 
auf masse ;)

aber kann man sich trotzdem merken..

von flocki (Gast)


Lesenswert?

so habe nun mal ein bißchen was gemessen und eine alternative LED mit 
Vorwiderstand mal als Überprüfung hinzu genommen.

Das Problem ist, dass die Platine schon von hinten leichte Korosion 
aufweist.

Habe das mal so gut es geht entfernt. Darüber können Fehler auftreten 
oder?

Das Problem ist, das wenn ich die Ausgänge setze, keine 5V am Pin des µC 
anstehen.

Woran kann das liegen?

Kann das durch falsche Fusebit entstehen?
Beschreiben kann ich laut Pony noch den µC.

Hat jemand eine Übersicht,wie man die Einstellung der Fusebit und die 
Einstellung für das Beschreiben des µC bein Pony einstellen muss?

Möchte erst sicherstellen, das es wirklich nicht an den Einstellungen 
liegt.

Gruß

von Michael K. (Gast)


Lesenswert?

flocki schrieb:

> Kann das durch falsche Fusebit entstehen?
> Beschreiben kann ich laut Pony noch den µC.
>
> Hat jemand eine Übersicht,wie man die Einstellung der Fusebit und die
> Einstellung für das Beschreiben des µC bein Pony einstellen muss?

Ich verstehe ganz ehrlich nicht, was Du mit den Fuses treibst.

Ich bin noch sehr neu im µC-Bereich, aber eines habe ich sehr schnell 
begriffen: Fuses fasse ich nicht an. Und wenn ich sie anfassen muss, 
dann lasse ich es bleiben und überlege mir, wie ich es vermeiden kann, 
sie zu verändern. Sowas kann sehr schnell sehr eklig werden.

Ich verwende zwar keinen nackten µC sondern ein Arduino-Board und 
programmiere den µC per ISP, aber ich vermute mal, daß man auch die 
nackigen Chips im Auslieferungszustand bzw. in einem Pollin-Board 
verwenden kann, ohne an den Fuses zu schrauben. Zumal Du irgendwie noch 
gar nicht erklärt hast, warum Du an die Fuses musst. Oder ich habs nicht 
begriffen :)

42m

von Uwe (de0508)


Lesenswert?

Hallo Michael,

erst die Fuse-Bits lassen die volle Funktionalität einen Atmel AVR 
'erblühen'.

Ich verwende immer den "Engbedded Atmel AVR® Fuse Calculator"

http://www.engbedded.com/fusecalc/

Da ich mit avrdude und usbasp oder usbtiny meine AVRs beschreibe, kann 
ich direkt die Ausgabe unter "AVRDUDE arguments" nutzen.

Ich denke eine PonyProg Nutzer hat nicht eine so klare Darstellung der 
Möglichkeiten die FuseBits zu nutzen und vertut sich da schneller. Ein 
Blick ins Datenblatt hilft auch eine richtige Einstellung für ein 
Problem zu finden.

Auch schreibe ich auf fast alle AVRs einen seriellen Bootloader von 
Peda. Der läuft in den oberen 512 Byte des AVRs und selbst in einem 
kleinen atTiny85 oder atTiny45 ist das machbar !

Dann nutze ich immer die Brown-Out Funktionalität, so kann der AVR 
richtig resetten und auch das EEPROM ist bereit !

Versuch es mal selbst und mach die schlau !.

von Michael K. (Gast)


Lesenswert?

Uwe S. schrieb:
> Hallo Michael,

Hallo Uwe,

> erst die Fuse-Bits lassen die volle Funktionalität einen Atmel AVR
> 'erblühen'.

Das glaube ich gerne, aber ich für meinen Teil bin noch gaaanz weit am 
Anfang, und von einem Versuch, Debug-Wire per JTAGICE-Clone zu 
aktivieren (ging im AVR-Studio5 ganz toll, das deaktivieren hat dann 
aber nur in Studio 4 funktioniert) bin ich erst mal von 
Fuses-Spielereien kuriert. Um eine LED leuchten oder gar blinken zu 
lassen sollten Fuses nicht notwendig sein. Und darum gehts dem TO IMHO. 
Deswegen meine Frage, was er mit den Fuses eigentlich vor hat. Für ein 
paar Bitmanipulationen in DDR und PORT sollte das eigentlich nicht 
notwendig sein, oder?

Klar werden Fuses irgendwann mal interessant; aber bis ich meinen AVR in 
seiner Blüte defloriere ... naja, das hat noch n bisschen Zeit, bis ich 
weiß, wie es geht :D

42m

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.