Atmel (Microchip) Studio 7 – ein Einstieg

Über den Beitrag

Viele Hobbyelektroniker steigen über den Arduino in die Welt der Microcontroller (MCU) ein, da dieser Weg auch für Anfänger leicht verständlich ist. Ich bin da keine Ausnahme. Im Laufe der Zeit merkt man aber auch, dass es da noch tiefere Ebenen gibt, in die es sich einzusteigen lohnt. Man stößt auf Register, Portmanipulation, Fuse-Bits, Signaturen, C-Programme usw. und irgendwann will man auch diese Dinge verstehen. Dafür ist die Arduino Umgebung allerdings nur bedingt geeignet.

Der nächste logische Schritt ist der Einstieg in Atmel Studio, aktuell Atmel Studio 7 (Nachtrag: in 2020 wurde Atmel Studio in Microchip Studio umbenannt). So leicht es einem der Arduino macht, so eigentümlich ist hingegen das Arbeiten mit Atmel Studio. Man gewöhnt sich daran, aber am Anfang kann es etwas abschreckend sein, da vieles in diesem Programm alles andere als selbsterklärend ist. Aber es lohnt sich und mit diesem Beitrag möchte ich euch den Einstieg erleichtern.

Ich war schon mal kurz auf Atmel Studio in meinem Beitrag über die Programmierung von ATtiny85 & Co eingegangen, konnte das Thema wegen seines Umfanges aber nur anreißen. Geeignete Programmer für Atmel Studio habe ich in meinem letzten Beitrag beschrieben. Wenn bei euch im weiteren Verlauf dieses Beitrages Fragen zu den Programmern auftreten, dann werden sie vielleicht dort beantwortet.

Im Einzelnen gibt es hier eine Schritt-für-Schritt Anleitung für: 

  • die Installation von Atmel Studio 7
  • den Upload eines Blinkprogrammes auf einen ATtiny85
  • Debugging und Breakpoints

Dabei setze ich voraus, dass ihr einen debuggingfähigen Programmer wie den AVR Dragon oder den Atmel-ICE besitzt. Ist euer Programmer nicht debuggingfähig, dann könnt ihr aber zumindest die ersten beiden Punkte nachvollziehen. 

Installation von Atmel Studio 7

Atmel Studio 7 ist eine kostenlose Entwicklungsumgebung für die Programmierung von Atmel MCUs, welche hier von den Seiten des Herstellers Microchip Technology Inc heruntergeladen werden kann. Wenn ihr dem Link folgt, dann gibt es dort einen Web Installer und einen Offline Installer. Der Web Installer ist die empfohlene Variante. Sie setzt eine durchgehende Internetverbindung voraus. 

Die Installation ist nicht schwierig, da fast alles automatisch passiert. Allerdings dauert das Ganze etwas. Auf einem nicht ganz neuen Laptop nahm die Installation des gesamten Softwarepaketes eine gute halbe Stunde in Anspruch und satte 4 GB Plattenplatz wurden benötigt. 

Die einzige größere Entscheidung, die man während der Installation treffen muss, ist welche MCU Familie man mit Atmel Studio programmieren möchte: 

Auswahl der MCU Familie
Auswahl der MCU Familie während der Installation

Sehr wahrscheinlich reicht euch die Installation von AVR 8, also das Paket für die 8-Bit MCUs. Damit habt ihr die ATtiny-, ATMega- und AVR XMega-Familien abgedeckt. Da ich auch die anderen Pakete mit installiert habe, dürfte der benötigte Plattenplatz bei euch etwas geringer sein und auch die Installationszeit, sofern ihr euch auf AVR 8 beschränkt.

Nach der Installation legen wir das Programm erstmal beiseite und wenden uns anderen vorbereitenden Maßnahmen zu. 

Die Schaltung

Als Beispiel für ein erstes „Projekt“ nehmen wir wie schon erwähnt ein Blinkprogramm, das per ISP Verbindung auf einen ATtiny85 geladen wird. Die LED soll durch den I/O Pin PB4 geschaltet werden. 

Der ISP Anschluss ist folgendermaßen belegt:

Pinbelegung ISP Anschluss
Pinbelegung des ISP Anschlusses

Der Pinout des ATtiny85 sieht so aus:

Pinout des ATtiny85
Pinout des ATtiny85

Ihr müsst jetzt sicherstellen, dass ihr den Programmer entsprechend der Anschlussschemata miteinander verbindet. Also schlicht MISO an MISO, MOSI an MOSI, VCC an VCC usw. Wie ihr das konkret macht und ob ihr für den ATtiny85 noch eine externe Stromquelle braucht, hängt vom verwendeten Programmer ab. Vielleicht benutzt ihr auch einen Breadboardadapter oder wählt die On-Board Programmierung auf dem AVR Dragon. Wenn euch nicht klar ist was zu tun ist, dann schaut bitte in meinen letzten Beitrag

Das Beispielprogramm

Programme (man sagt hier nicht Sketche) in Atmel Studio werden meistens in C geschrieben. Das sieht für diejenigen, die bisher nur die Arduinowelt kennen, befremdlich-kryptisch aus. Ein 

pinMode(4, OUTPUT);  und digitalWrite(4, HIGH);

ist gegenüber den C – Äquivalenten

DDRB = (1<<PB4); bzw. PORTB |= (1<<PB4); 

natürlich selbsterklärender. Das Schöne am C-Code ist hingegen, dass man sieht, was auf Port- bzw. Registerebene passiert. Außerdem ist der C-Code um ein Mehrfaches schneller. Eine sehr komprimierte Einführung in Portmanipulation und Bitoperationen gibt es hier. Vielleicht mache ich auch nochmal einen eigenen Beitrag zu dem Thema, hier würde es aber den Rahmen sprengen.

Hier das Beispiel Blinkprogramm:

/*
 * ATtiny85_Blink.c
 *
 * Created: 25.06.2019 18:30:08
 * Author : Ewald
 */ 

// Einbinden der benötigten Bibliotheken:
#include <avr/io.h> 
#include <util/delay.h>

int main(void) // Beginn des Hauptprogrammes
{
  DDRB = (1<<PB4); // Pin 4 im Richtungsregister auf Output
   
    while (1) // Entspricht der loop Schleife beim Arduino
    {
    PORTB |= (1<<PB4); // PB4 geht HIGH
    _delay_ms(1000); // warte 1000 ms
    PORTB &= ~(1<<PB4); // PB4 geht LOW
    _delay_ms(1000); // warte 1000 ms
    }
}

 

Programmerstellung

Nun aber wieder zurück zum frisch installierten Atmel Studio 7. Nach dem Öffnen wählt ihr „New Project …“. 

Neues Projekt wählen in Atmel Studio 7

Nun wählt ihr „GCC C Executable Project“. Wenn ihr C++ Code verwenden wollt, dann wählt „GCC C++ Executable Project“. Was es mit der letzten Option „Create project from Arduino Sketch“ auf sich hat, werde ich in einem separaten Beitrag erklären. 

Wichtig ist, dass man hier schon den richtigen Projektnamen eingibt. Eine spätere Änderung des Namens ist nicht so trivial wie bei Arduino Sketchen.

Dann mit „OK“ bestätigen. 

Projektart auswählen in Atmel Studio 7

Als nächstes müsst ihr den MCU wählen, hier ATtiny85. Der MCU wird in Atmel Studio als „Device“ bezeichnet. 

Auswahl des MCU in Atmel Studio 7

Dann seid ihr auch schon im Editor für das Hauptprogramm, das standardmäßig „main.c“ heißt. Ersetzt bzw. ergänzt den Code um das Beispielprogramm.

main.c im Programmeditor von Atmel Studio 7 bearbeiten

Habt ihr das Programm eingegeben, könnt ihr es auf Syntaxfehler testen. Dazu geht auf das eingekreiste Symbol für „Build Solution“. Im Outputfenster weiter unten erscheinen eine Reihe von Meldungen – und hoffentlich ist keine Fehlermeldung dabei.

Die meisten Funktionen wie „Build Solution“ sind nicht nur über die Symbole, sondern auch über die Drop Down Menüs und Tastenkombinationen zugänglich. Ich bleibe hier bei den Symbolen. 

Build Solution auswählen

Toolauswahl und MCU Einstellungen in Atmel Studio 7

Der Programmer wird in Atmel Studio als „Tool“ bezeichnet. Die Toolauswahl erfolgt über das Symbol mit dem Hammer (ein recht grobes Symbol, finde ich).

Toolauswahl in Atmel Studio 7

In meinem Beispiel wähle ich den Dragon. Er muss mit dem PC verbunden sein, damit er als Auswahl erscheint. 

den AVR Dragon in Atmel Studio 7 auswählen

Jetzt müssen noch ein paar Einstellungen im ATtiny85 vorgenommen werden. Das geht nur im ISP Modus, den man über ein Drop Down Menü auswählt. 

ISP Modus in Atmel Studio 7 wählen

Nun klickt ihr auf das kleine Symbol mit dem IC und dem Blitz („Device Programming“). Sofern im aufgehenden Fenster Tool, Device und Interface korrekt sind, klickt auf „Apply“. Dann könnt ihr die Signatur des MCU (Device Signature) und die Spannung am MCU (Target Voltage) auslesen, indem ihr auf „Read“ klickt. Denkt daran: der AVR Dragon, der Atmel-ICE und manche andere Programmer können den MCU nicht mit Strom versorgen. Es muss eine externe Spannungsquelle verwendet werden. Trotzdem müssen zusätzlich GND und VCC des ISP Anschlusses verbunden werden. 

Device Programming wählen
Device Programming - Signatur und Spannung wählen

Nun könnt ihr euch den berühmt-berüchtigten Fuse-Bits zuwenden. 

Fuses wählen

Bei den Fuse-Bits muss man ein wenig aufpassen, was man tut, da man sich leicht aussperren kann. Das ist dann nur mit einem HVSP-fähigem Programmer wie dem AVR Dragon rückgängig zu machen. 

Ein neuer ATtiny85 hat den sogenannten Clock Divider aktiviert. Er teilt den Takt durch 8. Verantwortlich dafür ist das Fuse-Bit CKDIV8. Entfernt den Haken und klickt auf „Program“.

Wenn ihr euren ATtiny vorher schon einmal mit dem Arduino mit 8 MHz programmiert habt, sollte der Haken nicht gesetzt sein.  

Clock Divider im Bereich Device Programming von Atmel Studio 7 deaktivieren

Wenn alles funktioniert, ist der Haken weg und unten taucht die Meldung „Verify Registers … OK“ auf. 

Verify Registers

Eine vorbereitende Tätigkeit fehlt noch, und zwar müssen wir Atmel Studio die Taktfrequenz mitteilen. Dazu schließt ihr das Device Programming Fenster, geht zu den Tools (Hammersymbol) und wählt „Toolchain“. Klickt auf „Symbols“, dann auf das „Add Item“ Symbol und tragt im Dialogfenster „F_CPU=8000000UL“ ein. Alternativ zu diesen Schritten tragt ihr im Programm die Zeile

#define F_CPU 8000000UL

ein (noch vor den includes!). Das war es dann aber auch.  

CPU Taktrate auswähglen in Atmel Studio 7

Upload und Debugging in Atmel Studio 7

Sofern ihr kein Debugging wollt (oder der Programmer es nicht kann) oder ihr schon mal neugierig seid, ob alles funktioniert, könnt ihr jetzt auf das grüne, nicht ausgefüllte Dreieck („Start Without Debugging“) klicken. Das Programm wird hochgeladen und sofern ihr die LED schon angeschlossen habt, sollte sie in der richtigen Frequenz blinken. 

Starten ohne Debugging

Um das Programm im Debugging Modus laufen zu lassen, klickt ihr auf das Symbol mit dem Play-Pause Zeichen („Start Debugging and Break“). 

Start Debugging and break

Seid ihr dieser Anleitung gefolgt, befindet ihr euch noch im ISP Modus und bekommt folgende Fehlermeldung:

Warnmeldung von Atmel Studio 7: kein Debugging im ISP-Mode

Ihr müsst also vom ISP Modus in den debugWire Modus wechseln. Dazu geht ihr wieder in den Toolbereich und wählt debugWIRE als Interface. Der debugWire Modus hat keinen separaten Anschluss – auch er läuft über die ISP Leitungen. 

Auswahl von DebugWire

Ihr versucht es nochmal und bekommt noch eine Fehlermeldung, da das DWEN (debugWire Enable) Fuse Bit nicht aktiviert ist. Die gute Nachricht: wenn ihr mit „Yes“ quittiert, nimmt Atmel Studio diese Einstellung vor. 

Warnmeldung von Atmel Studio 7: DWEN Fuse muss aktiviert werden

Die schlechte Nachricht: ihr bekommt noch eine Fehlermeldung, da der MCU neu gestartet werden muss. Trennt den AVR Dragon vom MCU, trennt einmal kurz die Stromversorgung zum MCU, verbindet den Dragon wieder und klickt auf „OK“.

Ich spare mir Schritt 1 und 3 immer, trenne also nur kurz die Stromversorgung vom MCU und es funktioniert trotzdem. Nachmachen auf eigene Gefahr!  

Warnmeldung von Atmel Studio 7: Neustart des MCU nötig

Das Programm startet nun, bleibt aber dann in der ersten Programmzeile stehen. 

Programm startet und pausiert

Wenn ihr jetzt auf das volle, grüne Dreieck („Continue“) klickt, läuft das Programm normal weiter. 

Continue Button

Diese Prozedur bietet natürlich noch keinen wirklichen Vorteil. Das ändert sich mit dem schrittweisen Ausführen des Programmes. Dazu stoppt zunächst einmal das Debugging durch Klicken auf das rotbraune Quadrat.

Schrittweises Ausführen und Register verfolgen

Es gibt zwei Methoden Programme schrittweise auszuführen. Bei der ersten Methode müssen die delay Befehle auskommentiert werden. Bei der zweiten Methode, den Breakpoints, die weiter unten behandelt werden, ist das nicht notwendig. 

Aber zunächst zur ersten Methode. Kommentiert die delay Befehle aus und wählt wieder „Start Debugging and Break“ (das Play-Stop Symbol). Dann klickt auf das „Step Over“ Symbol. Mit jedem Klick auf das Symbol springt das Programm eine Zeile weiter. Dabei seht ihr, dass der Stopp vor der Ausführung des Befehls in der aktuellen Zeile erfolgt. Die aktuelle Zeile ist durch einen gelben Pfeil markiert.

Step over Button

Nun könnt ihr auch Registerinhalte verfolgen. Klickt dazu auf das I/O Symbol. Es geht das I/O Fenster auf. Klickt dort auf „I/O Port (Port B)“. Es taucht ein Unterfenster auf das den Zustand der Register PINB, DDRB und PORTB anzeigt. Um die Veränderung der Register in Abhängigkeit von der Programmzeile verfolgen zu können, löst das I/O Fenster aus seiner Verankerung und zieht es neben das main.c Fenster. Dann klickt weiter ein paar mal auf „Step Over“ und schaut was passiert: 

I/O Button

Ziemlich cool, finde ich. 

Nun verlassen wir mal den debugWire Modus. Dazu reicht es nicht aus auf Stop Debugging (rotbraunes Quadrat) zu klicken. Leider gibt es kein Symbol für diesen Vorgang. Geht stattdessen im Menü auf:

Debug  –> Disable debugWIRE and Close

Disable debugWire and close

Geht man nur auf „Stop Debugging“ und versucht dann im ISP Modus Einstellungen per Device Programming im ATtiny vorzunehmen, bekommt man komische Fehlermeldungen, die man nicht wirklich dem Umstand zuordnen kann, dass man sich noch im debugWire Modus befindet. Das hat mich anfangs des Öfteren ebenso verwirrt wie genervt. 

Variablen verfolgen und Breakpoints setzen

Um zu schauen, wie man Variableninhalte verfolgen kann, brauchen wir erstmal eine Variable in unserem Programm. Wir definieren eine (zugegebenermaßen ziemlich sinnbefreite) Variable x mit dem Startwert 0. An mehreren Stellen im Programm fügen wir ein x++ ein: 

/*
 * ATtiny85_Blink.c
 *
 * Created: 25.06.2019 18:30:08
 * Author : Ewald
 */ 

#include <avr/io.h>
#include <util/delay.h>
uint8_t x=0;

int main(void)
{
  DDRB = (1<<PB4);
  x++;
   
    while (1) 
    {
    x++;
    PORTB |= (1<<PB4);
    x++;
    //_delay_ms(1000);
    PORTB &= ~(1<<PB4);
    x++;
    //_delay_ms(1000);
    }
}

 

Startet das Programm wieder im debugWire Modus über „Start Debugging and Break“. Nach dem Break könnt ihr auf das Brillensymbol klicken. Ist Debugging noch nicht gestartet, ist das Brillensymbol ausgegraut. 

Variablen verfolgen in Atmel Studio 7

Mit dem Klick auf die Brille geht ein Fenster auf. Dort gebt ihr im Feld Expression „x“ ein und klickt auf „Add Watch“. Alternativ geht ihr mit einem Rechtsklick im Programmcode auf die Variable und wählt dann im Kontextmenü „Add Watch“. 

Varuable x verfolgen

Jetzt könnt ihr mit „Step Over“ Schritten durch das Programm gehen und verfolgen wie x immer größer wird. 

Variable x im Verlauf des Programms

Es nervt natürlich, wenn man immer alle delay Zeilen auskommentieren muss. Auch möchte man bei großen Programmen sicherlich nicht jede Zeile einzeln ausführen. Eine bessere Methode ist es Breakpoints zu setzen, also Punkte an dem das Programm im debugWire Modus stoppt. 

Einen Breakpoint setzt man, indem man ganz einfach auf den linken, grauen Streifen auf Höhe der gewählten Zeile klickt. Es erscheint ein roter Punkt. Man löscht einen Breakpoint, indem man einfach noch einmal draufklickt. 

Entfernt also die Auskommentierung der delay Zeilen, setzt einen oder mehrere Breakpoints und startet das Programm mit „Start Debugging and Break“. Dann klickt auf das grüne „Continue“ Dreieck. 

Breakpoint setzen in Atmel Studio 7

Ihr werdet sehen, dass das Programm am Breakpoint stoppt. Die Zeile, in der der Breakpoint steht, wird nicht mehr ausgeführt. Ein weiteres „Continue“ lässt das Programm bis zum nächsten Breakpoint weiterlaufen bzw. in diesem Beispiel bis das Programm wieder auf denselben Breakpoint trifft. 

Programm bleibt am Breakpoint stehen.

Damit habt ihr nun eine gewisse Basis und könnt euch komplexeren Dingen zuwenden. 

Im nächsten Beitrag werde ich zeigen, wie man mit Atmel Studio 7 Debugging in die Arduino Welt zaubert, sozusagen beide Welten miteinander verbindet. 

22 thoughts on “Atmel (Microchip) Studio 7 – ein Einstieg

  1. Wie kann ich beim Assembler im *.asm-File Zeilennummern erzeugen, anzeigen lassen (Studio 7.0) ?
    Vielen Dank für die Beantwortung der Frage!
    MfG
    Ulrich

  2. Hallo Wolfgang,
    habe ein Problem mit Studio7 und meinem USBasp-Programmer. Habe mit Tools-External Tools den USBasp eingebunden und das funktioniert auch prima. Jetzt wollte ich die Fuses bearbeiten und versuchte nach Deiner Anleitung vorzugehen, krieg aber meinen USBasp nicht als Tools angezeigt. Bei mir erscheinen unter dem lediglich STK500-Simulator-Custom Programming Tool. Hierzu wird im aufgehenden Fenster ein gefordert, der mir schleierhaft ist. Gehe ich dann auf , dann steht da in meiner Toolsbeschreibung eine Command-Zeile, in der der Pfad zum avrdude steht. Diesen Command im obigen Fenster einzugeben bringt nichts. Die Frage ist also, wie bekomme ich den USBasp in den Toolsbereich unter dem Hammersymbol? Automatisch geht das offenbar nicht obwohl mein USBasp unter Tools-External Tools definiert ist und von hier auch aufgerufen werden kann.
    Gruß Werner

    1. Hallo Werner,
      ich habe das selbst mit einem USBasp selbst nie ausprobiert. Da die Programmierung aber anscheinend über AVRDUDE läuft, vermute ich, dass das Ganze eine Einbahnstraße Richtung Mikrocontroller ist. D.h. du wirst – wie gesagt, lediglich meine Einschätzung – die Fuses so nicht lesen können und damit funktioniert das Ganze nicht über Microchip Studio. Ich würde ein paar Euro mehr ausgeben und mir z.B. einen Diamex Programmer zulegen. Dieses Modell kostet 19,90:
      https://www.diamex.de/dxshop/USB-ISP-Programmer-fuer-Atmel-AVR
      Oder du nimmst dieses, dann kannst du auch noch ein paar andere Mikrocontroller programmieren:
      https://www.diamex.de/dxshop/EXA-PROG-AVR-ISP-und-UPDI-STM32-NXP-ESP
      Ich habe beide und beide werden als STK500 erkannt.
      VG, Wolfgang

      1. Hallo Wolfgang,
        danke für Deine rasche Bewertung.
        Du sagst, so habe ich es verstanden, dass der USBasp mit avrdude eine Einbahnstraße sei. Das ist aber m.E. nicht richtig, denn ich kann zB mit dem AVR-Burn-O-mat und dem Fishl-USBasp schreiben und lesen über die ISP-Schnittstelle (ATmega, ATtiny).
        Ich frage mich, was in Studio7 Tools der Eintrag „Custom Programming Tool“ bedeutet. Und auch wie kann ich im „Hammer“ Menü unter „Tools“ den Eintrag „Custom Programming Tool“ benutzen, d.h. was bedeutet der Eintrag „Command“.
        nochmal vielen Dank und Helau
        Werner

        1. Mi Einbahnstraße meine ich, dass bei Einrichtung eines USBasp AVRDUDE benutzt und bei Einrichtung des Teils den Kommandozeilenaufruf zum Flashen einfügst. Um das Menu für die Fuses zu benutzen, brauchst du eine wecheselseitige Kommunikation. Und das wüsste ich nicht wie man das einrichten soll. Aber wie gesagt, ich habe keine Erfahrung mit den externen Tools. Ich würde 20 Euro investieren, dann hast du ein Tool, dass sich einfach einbinden lässt.
          Vielleicht hilft das auch noch weiter:
          https://www.makerconnect.de/index.php?resources/externes-tool-in-atmelstudio-integrieren.14/
          https://web.engr.oregonstate.edu/~jangha/ece375/pdf/Setup_External_programmer_in_Atmel_Studio.pdf
          Viel Erfolg!

  3. Hallo Wolle,

    ich bin blutiger Anfänger und sehr dankbar, solch eine Website gefunden zu haben. Vielen Dank dafür!
    Da durch den Lockdown meine Tätigkeit in der Veranstaltungsbrache zur Zeit nicht gefragt ist, versuche ich die mir zusätzlich zur Verfügung stehende Zeit damit zu verbringen, die Schulbank zu drücken und mir das Arbeiten mit µP mittels Microchip Studio7 unter Win10, dem von dir empfohlenen aTeVal 2.0, einem 18Jahre alten STK500 (bin vor 18 Jahren daran gescheitert) und einer Hand voll versch. ATmegas zu lernen.
    Dank eines neuen Buchs und dieser Seite hab ich noch nicht aufgegeben.
    Ich hab aber eine Frage: im Microchip Studio gibt es einen Button I/O.
    Dieser öffnet mir ein Fenster, in welchem ich mir den Status der I/O-Register anschauen wollte.
    Leider sind die jeweiligen Quadrate immer weiss.
    Funktioniert das nur im DebugWire-modus? Diesen unterstützen meine Programmer ja nicht…
    oder mache ich was anderes falsch????????

    Vielen Dank und guten Rutsch
    wünscht der Locke

    1. Hallo Locke, ja das funktioniert leider nur im Debug Modus und unglücklicherweise sind die Programmer dafür recht teuer. Trotzdem noch viel Spaß! Und dir auch einen guten Rutsch!

  4. Vielen Dank für diese Anleitung! Ich war zuvor in einem Dschungel von Fehlern, da ich AVR Studio 6 auf meinem W10 Rechner installiert hatte und nicht bweiterkam. Jetzt sehe ich klar, wie es geht.

  5. Hallo Wolfgang,

    die Gegenprobe tut auch nicht mit 16 MHz auch nicht mit 8 MHz habe ich ein Denkfehler?
    Wie gesagt bisher war ich nur im Simulator unterwegs.

    1. Hi Frank,

      so spontan fällt mir da keine Erklärung ein. Kannst du mir deinen Code schicken? Dann versuche ich das mal bei mir. Ich würde sagen, dass Weitere klären wir per mail direkt und nicht über das Kommentarfeld.

  6. Hi Wolle,

    habe mal den Attiny85 via Simululator laufen lassen.
    Ist das normal dass hier jedoch ein debuggin mit einkommentierten delays nicht funktioniert?

    1. Hi,
      wenn ich die CPU Frequenz auf 1 MHz stelle tuts, zuvor hatte ich die Frequenz auf 16 MHz.

      1. Hi Frank, ich habe gerade versucht, das nachzuvollziehen. Bei mir scheint es zu gehen. Kannst du mir sagen wie genau du die 16 MHz eingestellt hast? Hast du auch nochmal die Gegenprobe gemacht, also bist von 1 zurück auf 16 MHz gegangen?

        1. Hi Wolfgang,

          Ich habe im C Code in der ersten Zeile ein define mit F_CPU 1000000 bzw. 16000000 gemacht.
          Die Gegenprobe habe ich dann nicht mehr gemacht.
          Ich habe aber oben gesehen, dass du die CPU Frequenz anderst definiert hast.

          1. Hallo Frank,
            bin gerade zufällig auf Wolles Website gestoßen.
            Versuch doch mal F-CPU 1000000UL bzw F_CPU 16000000UL.
            UL steht für „unsigned long“ und ist in diesem Wertebereich meines Wissens unbedingt erforderlich.

    2. Hallo, ein etwas verspäteter Kommentar:

      Ich verwende lediglich den Diamex Prog-S2, also nix debugWire, sondern nur Simulator. Ich konnte aber trotzdem alles nachvollziehen

      (ATmega32, F_CPU 1000000, Diamex Prog)

      Bei mir funktionierte das Debuggen mit Breakpoints und _delay_ms scheinbar auch nicht. Der Simulator benötigt für _delay_ms(1000) wesentlich länger als 1000 ms, also habe ich es einfach durch _delay_ms(1) ersetzt, dann gings ganz flott.

      Danke für das Tutorial!

  7. Hallo Wolle,
    deine Erklärungen sind echt Klasse. Strukturiert und gut dargestellt. Sie sind mir in der Einarbeitung in das Atmel-Studio und C eine große Hilfe. Danke.
    Christoph

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert