Forum: Mikrocontroller und Digitale Elektronik ATmega32 16PU erster Schritt mit AtmelStudio


von Chris G. (kittydog)


Lesenswert?

Hallo Leute,

ich bin schon länger passiver Leser dieses Forums und finde das Forum 
echt toll. Leider habe ich trotz der Leser- & Sucherei in dem Forum mein 
Problem noch nicht lösen können.

Ich möchte den ATmega32 16 Pu mit AtmelStudio programmieren. Zunächst 
habe ich mir eine einfache Schaltung aufgebaut. Eine LED an AVCC 
dazwischen ein Widerstand und dann an den Pin 29 also PC0. Diesen Pin 
will ich auf Masse schalten und somit die LED zum leuchten zu bringen.

Das Programm spiele ich mit einem mySmartUSB light über IDE auf den 
Atmel. Zumindest habe ich das vor :-)

Nur das Problem. Atmel Studio 7 findet den uC. Denn wenn ich unter 
DeviceProgramming schaue, dann finde ich dort die Device Information. 
Allerdings stellt er mir die ISP Clock auf 115.2 kHz. Ist das soweit 
richtig?

Zur Vorgeschichte: Bisher habe ich eine an einen Board gearbeitet, das 
von der Uni ausgegeben wurde. Da gab es eine fertige Bibliothek und eine 
cproj Vorlage. Nun fehlt mir die Kenntnis darüber wie ich das Atmel 
Studio nun auf den neuen Atmega32 16PU einstelle.

Mir würde schon reichen, wenn ich die LED zum leuchten bringe :-)

VG Chris

: Bearbeitet durch User
von Max M. (maxmicr)


Lesenswert?

Wenn ich das richtig im Kopf habe, benötigst du avrdude der dir das 
Programm dann über den USB und ISP an den Controller sendet. Dafür musst 
du ein "Externes Tool" nebst Kommandozeilenparameter in Atmel Studio 
hinzufügen. Avrdude bekommst du z.B. über die Arduino IDE.

von Karl M. (Gast)


Lesenswert?

Hallo,

im Datenblatt sind die Fuse-Bits beschrieben und das Datenblatt gibt 
sonst auch noch viele Informationen feil.

Du musst Den Herstellern fragen, wie man einen "mySmartUSB light" 
ansprechen kann.

Wir verwenden als Schnittstelle PC - IDE-Programmieradapter - IDE 
Interface das Kommandozeilenprogramm avrdude.

von Karl M. (Gast)


Lesenswert?

Ersetze bitte IDE mit ISP.

von Chris G. (kittydog)


Lesenswert?

Vielen Dank für die Antworten.

In der Uni verwenden wir auch einen Atmega32 allerdings keine Atmega32 
16Pu. Mit dem Board von der Uni funktioniert alles wie es soll. Ich habe 
mir Atmel (zuhaus)installiert. Den USB Progger installiert. Die 
Vorlagendatei geöffnet, bischen Programmcode geschrieben und übertragen. 
Ohne Probleme. Und das Board hat auch nur den Chip und ein paar LEDs 
dran.

Mit meinem "jungfreulichen" Chip geht das leider nicht. Bisher habe ich 
auch nur ISP angeschlossen und eben die eine LED wie oben beschrieben.

Ich vermute, dass es mit der Einstellung im Programm zu tun hat.

Das mit den Fuse-Bits habe ich schon gelesen. Ich werde das jetzt sofort 
nochmal überprüfen. Habe etwas panik das sich bei den Fusebits was 
verstelle. Sind das die gleichen Einstellungen wie beim Atmega32?

MFG

von Chris F. (chfreund) Benutzerseite


Lesenswert?

mySmartUSB light ist STK500 kompatibel und man kann in Atmel Studio 
direkt unter "available Targets" den entsprechenden COM-Port einstellen. 
Da braucht ihr kein avrdude auf der Kommandozeile, auch nicht für die 
Fuses.

Beim Wechsel des Ziel-MC muss man im Studio in den Projekteigenschaften 
das Ziel einstellen. Also wenn Dein Code vom AtMega8 auf einmal auf dem 
328,644 oder sonstwo laufen soll. Dann gibt Dir der Compiler auch die 
passenden Fehlermeldungen über falsche Ports etc.

von Chris G. (kittydog)


Lesenswert?

Ok das klingt verständlich.

Da ich bisher mit cprj vorlagen gearbeitet habe, bin ich mir nicht 
sicher welches Projekt ich nun verwenden muss. Ist es GCC ASF BORAD oder 
GGC Executable Projekt?
Ich habe es mit GCC Executable Projekt versucht. Wenn ich allerdings auf 
Start Debbuging gesehen kommt die Fehlermeldung:
"Failed to open \\.\COM5.ERROR 0x2.

Die IDE liegt eigentlich auf COM6, was ich ihm unter Tools - Add target 
schon gesagt habe.

Hat da jemand eine Idee?

von Chris F. (chfreund) Benutzerseite


Lesenswert?

Es ist GCC-Executable.

Debuggen auf dem Board gibt es mit Deinem USB-ISP-Programmer nicht.

ISP bedeutet In-System-Programming und ist das Verfahren um direkt über 
serielle Schnittstelle den Flash und die Fuses vom AVR zu beschreiben.

IDE bedeutet integrierte Entwicklungsumgebung und das ist hier Visual 
Studio.

Wenn Du in den "Available Tools" schon den STK500-kompatiblen 
Programmierer hast, dann sollte das erst einmal reichen.

Baue mal Deine Exectutable als Release und spiele dann die Datei die 
dabei herauskommt im Bereich Memories vom Programmer ein.

Wenn das Programm nicht direkt läuft kann das auch daran liegen, dass 
der Programmer noch angeschlossen ist und die Speisung des MC 
beeinflusst.

von Chris G. (kittydog)


Lesenswert?

Ich bekomme immer die Fehlermeldung "Failed to open \\.\COM5. ERROR 0x2

von Chris F. (chfreund) Benutzerseite


Lesenswert?

Christan G. schrieb:
> Ich bekomme immer die Fehlermeldung "Failed to open \\.\COM5. ERROR 0x2

Wo steht das?
In dem Dialogfenster vom Programmer?

Mach doch mal bitte unter Available Tools den Programmer auf und stelle 
den auf das richtige Device, danach apply und dann "read", wenn dann die 
Device signature auftaucht oder popup-Fehlermeldungen kommen mach bitte 
einen screenshot und schick die komplette meldung.

von Chris G. (kittydog)


Angehängte Dateien:

Lesenswert?

Also available Tools finde ich im Atmel Studio 7 nicht. Falls du meinst 
Tools - Device Programming  habe ich dir hier den Screenshort angehängt 
Bild1.

Bild 2 zeigt die Fehlermeldung nach dem Drücken auf Release.

von Chris G. (kittydog)


Angehängte Dateien:

Lesenswert?

Selbst myAVR ProgToll verwendet COM5. Laut Geräte Manager ist es aber 
COM6 da COM5 bereits verwendet wurde. Auch ein ändern von COM6 auf einen 
beliebigen COM Port brachte die selbe Fehlermeldung.

von Chris G. (kittydog)


Angehängte Dateien:

Lesenswert?

Mit AVR Prog Tool konnte ich nach Umstellung auf Com6 es schaffen den 
ATmega auszulesen.  Allerdings weigert sich AtmelStudio weiterhin.

von Chris F. (chfreund) Benutzerseite


Lesenswert?

Auf Bild-1 siehst Du den Reiter "memories". Genau da kannst Du unter 
"memories" flashen, mach das mal bitte. Das Atmel-Studio hat den 
STK500-Progger erkannt, das sieht man auf diesem bild.

Die Liste mit den Tools ist unter "View"->"Available Atmel Tools" Da 
kommst Du aber auch nur zu dem Dialog bei Bild-1

von Chris G. (kittydog)


Lesenswert?

Wenn ich das über "memories" flashe wird alles übertragen und es 
funktioniert. Ist also eine Notlösung, da es so viel umsändlicher ist. 
Schöner wäre es, wie gewohnt mit Tastendruck.

Wenn ich das bisherige "Uni"-Board verwenden funktioniert die 
Übertragung ebenfalls nicht mehr. Also hängt es wohl an einer 
Einstellung die unabhängig des boards ist.

von Chris G. (kittydog)


Lesenswert?

Da die Notlösung gut funktioniert und ich den Tag (dank euch) doch noch 
mit einer blinkenden LED beenden möchte würde es mich freuen, wenn ihr 
mir sagt, warum meine LED nicht blinken will.

Leuchten tut sie.

[c]/*
 * GccApplication8.c
 *
 * Created: 12.05.2016 18:29:15
 * Author :
 */
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
#include <avr/io.h>
#include <util\delay.h>

int main(void)
{DDRC |= (1<<6);
    do{  PORTC |= (1<<6);
  _delay_ms(1000);
  PORTC &= ~(1<<6);
  }while(1);
}

[c]

: Bearbeitet durch User
von Chris F. (chfreund) Benutzerseite


Lesenswert?

Weil Du zwischen Aus- und Anschalten kein Delay hast. :P

Guten Abend.

von Chris G. (kittydog)


Lesenswert?

Hi Chris,

ich habe meinen Fehler gerade gesehen:-) Jetzt schaltet er sie schön ein 
und aus. Ihr glaubt gar nicht wie schön so eine blinkende LED sein kann. 
Am Ende eines solchen Tages.


Glaubt ihr das eine Deinstallation und erneute Installation das COM5 
Problem lösen könnte? Oder eher den myAVRlight USB treiber 
deinstallieren?


Euch auch ein schönen Abend

von Chris F. (chfreund) Benutzerseite


Lesenswert?

Da das ein STK-500 kompatibler Programmierer ist und der USB-Anschluss 
sich als serieller Port zeigt, brauchst Du die separate Software oder 
irgendeinen Treiber nicht, wenn Du das nur als ISP-Hochlader im Studio 
nimmst.

Irgendwie verstehe ich auch die Fragestellung nicht.

Du hast das bisher so eingestellt, dass es bei Druck auf den Run-Knopf 
im Studio kompiliert und auf den MC gespielt wurde? Oder meinst Du ganz 
etwas anderes? Habt ihr in der Schule vielleicht ganz andere Boards und 
die MCs via JTAG/.... angeschlossen?

von Chris G. (kittydog)


Lesenswert?

Chris F. schrieb:
> Du hast das bisher so eingestellt, dass es bei Druck auf den Run-Knopf
> im Studio kompiliert und auf den MC gespielt wurde?

Genau so habe ich das bisher gemacht. Das hat ja auch für ein/zwei Tagen 
funktioniert (damals AVR-USB light auf COM5).

Jetzt geht es aber nicht mehr, mit genannter Fehlermeldung. Auch ein 
deinstallieren von AtmelStudio 7 und den Treiben vom AVR USB Light 
brachten keine Verbesserungen.

Unter Tools - ADD Target kann ich ihn ja auswählen und auch den richtig 
COM-Port. Wenn ich jedoch dann auf Porject - Properties - Tool gehe habe 
ich neben Simulator 4 weitere STK500 Einträge OHNE jegliche PORT Angabe.

Egal welchen ich davon nehme, es kommt immer die Fehler Meldung: Failed 
to open \\.\COM5. ERROR 0x2.


Der AVR-USB Light liegt aber auf COM6. Wenn ich unter Geräte Manager den 
COM-Port des AVR-USB light ändern möchte, sind 1 - 5 vergeben.

Weiß jemand wie ich AS 7 dazu bringen kann den COM 6 zu akzeptieren 
anstatt den Stick auf COM 5 zu suchen.

: Bearbeitet durch User
von Chris G. (kittydog)


Lesenswert?

Gelöst !

Das Problem ist nun gelöst und die Fehlermeldung Failed to open 
\\.\COM5. ERROR 0x2 erscheint nun nicht mehr. Kompilieren und übertragen 
funktioniert nun wieder Problemlos.

Die Lösung ist ziemlich trivial. Obwohl im Geräte-Manager COM5 als 
"bereits belegt" markiert ist konnte ich ihn erstaunlicherweise trotzdem 
auswählen. Es erscheint ein Hinweis, dass dieser COM-Port bereits 
besetzt ist und es zu Konflikten kommen kann, wenn ich fortfahre...
Trotzdem wählte ich COM5 aus und siehe da, alles funktioniert 
problemlos.

Da stellt sich die Fragen warum ich das nicht vorher schon gemacht 
haben?!

Weil ich davon ausgegangen bin, dass ein "als bereits besetzter" 
COM-Port
sich nicht auswählen lässt.


Nochmals ein herzlichen Dank an alle die geholfen haben. Schönen 
Feiertage

Christan

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.