AVR Studio 7 und ProMicro

OP #4623915
Hallo zusammen,

Ich habe mir kürzlich einen ProMicro 5V von DreamSpark geholt.
Ich habe damit bereits eingie Programm mit dem Arduino IDE relisiert.

Nun habe ich, um die Libraries des IDE zu umgehen, auf das AVR Studio 7 
gewechselt.

Für Testzwecke habe ich mir sinnngemäss folgendes Programm gebastelt:

DDRB = 0xFF;
while(1) {
 _delay_ms(500);
 PORTB = 0x00;
 _delay_ms(500);
 PORTB = 0xFF;
}

Ich hätte erwartet, dass ich dadurch auf allen B-Pins ein Blinkicht 
erhalte.
Problem: Nichts tut sich bei der LED.

Das Programm kompiliert ohne Fehler.
Das .hex File wird erstellt.
Der Upload mittels avrdude, eingebunden in AVR Studio, funktioniert 
auch.
Die config von avrdude ist die selbe wie im Arduino IDE.

Was mache ich falsch?
Irgend welche Tip?
Besten Dank.
Hallo,

zeige das benutzte Programm, kein "sinngemäßes".
Hier fehlen z.B.nötige includes.

PS: Du kannst auch einfach setup() und loop() aus dem Arduino-Sketch 
löschen und Dein Progrmm reinkopieren und compilieren. Dann werden keine 
Arduino-Sachen eingebunden.

Gruß aus Berlin
Michael
Hallo Christian,

die LED blinken zu lassen ist das Hello World des Mikrocorntoller und 
ich habe das Selbe erst gestern realisiert.

Eins meiner Probleme war , dass Atmel !nur! main.c ausführt. Falls dein 
Programm anders benannt ist, einfach ändern oder in eine main einbauen.
Ich gehe mal davon aus, dass nur Headerdateien vorangestellt sind.
Mein funktionierender Code : (LED ist an PE4 bei mir)

DDRE  = 0b11111111;
PORTE = 0b00000000;


while(1){
  PORTE |= (1<<PE4);
  _delay_ms(500);
  PORTE &=  ~(1<<PE4);
  _delay_ms(500);
}
OP
Hallo zusammen,

Das mit dem Löschen von setup() und loop() wuste ich nicht.
Danke dafür. Werde da auch noch Tests durchführen.

Genau, 'Hello World'. War auch mein Idee. Simpel.
PE4? ist das beim ProMicro überhaupt herausgeführt?
Habe ich ein falsches Pinout? Würde einges erklären...
Angehängte Dateien:
Hallo Christian,


ich habe einen anderen MC und deshalb ist da Register und die Ports 
anders.
Ich kenn mich mit deinem leider nichts aus. Allerdings denke ich, dass 
du von den 2 LEDS nur eine programmieren kannst. Die andere ist 
typischer weise nur da um anzuzeigen (sie leuchtet also) ob überhaupt 
Saft drauf ist.

Für die PD5 LED bei dir, sollte das dann so aussehen:


DDRD  = 0b11111111;
PORTD = 0b00000000;


while(1){
  PORTD |= (1<<PD5);
  _delay_ms(500);
  PORTD &=  ~(1<<PD5);
  _delay_ms(500);
}

Wenn das nicht funktioniert, versuchs mal mit der anderen. Du musst das 
ja dann nur noch anpassen.

Grüße Max
Gast
Hallo Christian,

Der Max hat einen kleinen Denkfehler in seiner Hilfestellung: Er hat 
sowohl ein anderes Board als auch einen anderen Controller.
Es schadet natürlich nicht nochmal sicherzugehen dass der Schaltplan 
sich mit der Realität deckt, aber ich würd den Fehler wie Michael auch 
eher im Umfeld des "Umzugs" von Arduino nach Atmel Studio vermuten.

Nur so aus eigener Neugier: Deine Toolchain sieht folgendermaßen aus
Atmel Studio -> Hexfile -> AVR Dude -> Arduino USB Bootloader, oder?

Auf der ATMEL seite hab ich schon die eine oder andere Erfahrung, kenn 
mich aber nicht mit dem Arduino Gedöns aus.
Wäre es eine Option für Dich mit einem blanko Atmel Studio Projekt 
anzufangen. Dann könnte man zumindest sicher sein dass nicht irgend eine 
Arduino Abstraktionsebene "Mitreden" will.

Nicht entmutigen lassen!
OP
Hei Leute,

Danke für die Unterstützung...

Der Tip von Michael war Gold wert....

Hab einfach das Arduino IDE genommen, setup() und loop() gelöscht, 
meinen Code 1:1 vom Atmel Studio rein kopiert, kompiliert und geladen.

Und siehe da, die LED Blinkt!!!

Ich gehe daher davon aus, dass der Fehler im Atmel Studio oder auf dem 
Weg zum kontroller passiert.
Womit ich nicht sagen will, dass das Atmel Studio das Problem ist.
Ist wahrscheinlich ein Konfig-Fehler von mir.

Die Frage ist einfach wo?

Toolchain...
Atmel Studio -> Hexfile -> AVR Dude -> Arduino USB Bootloader, oder?
Wenn Du mit "USB Bootloader" den Teil nach dem Reset meinst wo sich der 
Controller mit einem COM Port beim System meldet und über den avrdude 
dann programmiert wird, dann stimmt dies exakt.
Laut Log wird auch das korrekte hex-File verwendet und nach dem Flashen 
verifiziert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.