PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Etwas für Anfänger?



micron
16.04.2013, 10:12
Hallo Community,
ich bin neu in dem Bereich und bin mir nicht mal sicher ob meine Frage hier richtig ist, vielleicht gibts da einen anderen Bereich für solche Themen.
Nun zu meinem Problem, ich möchte unbedingt mich in dieses Thema einarbeiten, hab aber keine Erfahrung in der Programmierung der Mikrocontroller, ich habs auch nicht so eilig das ich das in 2 WE machen muss, es soll meine neue Freizeitbeschäftigung werden.
Ich würde mich riesig freuen wenn ihr mir hilft die einfachste Anwendung zu schreiben/programmieren die den Mikrocontroller anspricht, einfach nur eine LED zum leuchten zu bringen, oder 2 LED die sich abwechseln etc. das Programm soll aber auf dem Mikrocontroller gespeichert sein, also nicht über den PC sondern auf den MC geladen werden und von dort mit eigener Stromzufuhr funktionieren. 1.5V Batterien?
Ich programmiere seit einigen Jahren in C/C++ (MFC) unter Windows, Standarddialog Anwendungen, damit kenne ich mich gut aus.
Aber über MC hab ich keine Erfahrung, nichts.
Nur etwas Theoretisches/Praktisches Wissen über die Elektrokomponenten, ich weiß was Dioden, Widerstände, Kondensatoren etc. sind, mit löten sollte ich kein Problem haben weil wir damals in der Ausbildung auch damit beschäftigt waren.(Alles zu lange her)
Ich hab mir bereits WinAvr und das AVR Studio heruntergeladen uns installiert.
Ich würde gern auch die nötige Hardware und Bücher dazukaufen wenn ihr mir sagt welche für meinen Einstieg am besten ist?
Da gibts doch Einsteiger Boards oder :D
Wie auch immer, ich bin für jede Hilfe dankbar die mir hilft mein Wissen über Mikrocontroller aufzubauen.

Besten Dank
micron

oderlachs
16.04.2013, 10:37
Hallo Micron !

Wenn Du schon von der Programmiererschiene kommst, C/C++ beherrscht, wenn auch für Windows, so dürften Dir die Grundlagen der Programmierung und die besonders bei C/C++ bekannt sein.
Wenn Du WinAVR und AVR Studio installiert hast , besitzt Du schon alle "programmiertechnischen" Grundlagen auf dem PC. Bevor Du Dir Bücher kauft, wo der Titel das blaue am µC Himmel verspricht, drinnen nur trübes Wetter zu lesen ist, abgesehen von Druckfehlern , die jedem Neueinsteiger und Autodidakt den µC verleiden können, belese Dich im Web. Das RN Wissen sollte Dir schon allemal genügen um zu Beginnen.
Es kommt nun darauf an, welche Hardware Du zur Anwendung für Deine Sachen bringst, es gibt so viele Möglichkeiten.
Ich habe mit dem Pollinboard angefangen, ich möchte nicht sagen das es rausgeschmissenes Geld war, aber es es dient nur noch zum Brennen bestimmter Chips und nix weiter...

Ich habe mir dann das STK500 zugelegt und bin vollauf damit zufrieden, weil ich aber keine eigenen Leiterplatten machen kann und auch die Lochrasterplatine nicht mehr so recht packe , bin ich dann auf Arduino umgestiegen. das ergänzt sich prima mit dem STK500 für meine Belange.
Auch konnte ich mittels Arduino sehr gut, die doch schon etwas "eingetrocknete" Softwareentwickerausbildung nach jahrenlangen Ruhestand wieder auffrischen.
Das ist aber alles Jeden seine eigen Sache, wie er es angeht, ich habe es so gemacht und es nicht bereut, besonders dieses Forum hat mich hier gut auf die "Roboterbeine" gestellt und ist auch Basis für viele Antworten auf die eigenen Fragen, die dann unwiederuflich schon kommen...

Willkommen in unserer Runde

Habe viel Spass und Freude an dem schönen Hobby

OL

PS. : Als Einsteigerboard würde Ich immer das Arduino-Uno empfehlen, aber jeder hat da so seine eigenen Vorstellungen und hängt ja auch von der Verwendung ab.

Hubert.G
16.04.2013, 10:48
Hallo im Forum
Als Einsteiger Board wird immer noch gerne das Atmel-Eval-Board von Pollin verwendet. Wenn du etwas mehr ausgeben willst dann noch das AddOn-Board dazu. Es gibt allerdings einige sinnvolle Änderungen dazu, siehe auch auf meiner HP.
Hier gibt es ein gutes Tutorial http://www.mikrocontroller.net/articles/AVR

micron
03.05.2013, 09:34
Hi,
danke erst mal für eure Antworten, hat etwas gedauert bis ich mein Board bekommen habe, und schon gleich erste Probleme :D.
ich hab auch an das Board was bei microcontroller.net beschrieben wurde gedacht, aber dann doch ein Board bestellt bei http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=108, wird doch auch für den Einstieg gehen oder? Es sieht irgendwie "einsteigerfreundlich" "hust" :D
Nach anfänglichen Problemen hat dann doch das flashen geklappt (oder kommts mir nur so vor?), aber es läuft nicht so wie beschrieben, und bis das so weit ist brauch ich nicht weiter machen mit anderen Aufgaben.
Ich verlink ein Bild ok:
25396
nach der Beschreibung soll nun die LED blinken, das tut sie nur nicht, hab ich was übersehen oder falsch verstanden??

@Hubert, ich mag deine Seite :D

cheers
Micron

Hubert.G
03.05.2013, 10:19
Das Bild ist zu klein, da kann man nichts erkennen.

micron
03.05.2013, 11:27
Das verstehe ich nicht, wenn ich das Bild am PC lokal öffne ist das Bild deutlich größer, kann es sein dass das System-Forum das Bild verkleinert?
Wollte das Bild noch einmal hoch laden aber die Größe war die selbe.
Auf dem Bild ist hald das Protokol zu sehen dass:
Erasing device... OK
Programming Flash ... OK
Verifying Flash ... OK

ist, bedeutet dass das jetzt der Atmel "installiert" ist mit dem Programm?

Danke
Micron

Hubert.G
03.05.2013, 12:36
Das Programm sollte geladen sein, allerdings ist es nicht sicher ob es richtig kompiliert wurde.
Es kann auch sein das der Code nicht richtig ist.

micron
03.05.2013, 15:54
ok ich versuch's heute ein anderes beispiel projekt, mal sehen ob das geht.
ich werde dann schon schreiben ob es geklappt hat.

lg
micron

radbruch
03.05.2013, 16:04
Hallo

Ja, das Forum verkleinert die Bilder, wenn sie zu groß sind.

Der klassische Fehler beim Notepad2 wäre: Speichern vergessen vor dem Kompilieren. Das würde eine leere Datei erzeugen ...

Gruß

mic

micron
03.05.2013, 22:58
Hi, hier noch mal ein verkleinertes Bild,
und auch der Sourcecode, falls ihr da was "seltsames" findet?
Und danke ;)

lg
micron

25411

Und auch der code, der ist als Beispiel von embedded-projects:
/*
* AVRGCC1.c
*
* Created: 03.11.2011 11:29:58
* Author: eproo
*/

#include <avr/io.h>
#define F_CPU 1000000
#include <util/delay.h>

int main(void)
{
DDRB |= (1<<PB2)|(1<<PB3);

while(1) {
PORTB |=(1<<PB2)|(1<<PB3);
_delay_ms(100);
PORTB &=~((1<<PB2)|(1<<PB3));
_delay_ms(100);
}
}

robo_tom_24
04.05.2013, 00:15
Hallo
Versuche mal als einfaches Tesprogramm folgendes:


#include <avr/io.h>

int main (void)
{
DDRB |= 1<<PB2 | 1<<PB3; //Portpins als Ausgang
PORTB |= 1<<PB2 | 1<<PB3; //Einschalten

while(1)
{
}
}

Somit schaltest du nur die LEDs ein und testet somit ob deine Hardwarebschaltung richtig ist, das flashen funktioniert, etc ;)
Apropos HArdwarebeschaltung..wie schließt du deine LEDs an?

grüße thomas

oberallgeier
04.05.2013, 09:26
... Apropos HArdwarebeschaltung..wie schließt du deine LEDs an? ...Mal (m)ein Vorschlag (aus Assemblerzeiten - wegen der Kommentar-Semikola):

; Vcc -----------t2313-----+------------Vcc
; |
; | +------+ rLED|\ |
; +---+ 470R +-------| >+---+
; +------+ |/ | |
; |
; t2313-PB1=pin13---------------------+
;
;
; GND-------------------------------------------------GND

Natürlich kann der 470R durch einen anderen Widerstand ersetzt werden; meine - aus der Anfangszeit - waren üblicherweise so.

robo_tom_24
04.05.2013, 10:37
Das war nicht nur damals so, das is auch heute noch so ;)

Ritchie
04.05.2013, 11:23
Hallo micron,

ich weiss zwar nicht, ob Dein Problem jetzt gelöst ist, aber wenn ich mir dein erstes Bild ansehe, sieht man im Hintergrund des Build output einige Errors.

Hier sollte "Build Successful" stehen, so wie im Anhang.

Nur dann bist Du sicher, das Dein erstellter HEX File auch das enthält, was Du programmiert hast

Gruss R.

Hubert.G
04.05.2013, 12:48
Das Bild ist von Laden, auf dem Bild des Kompilers dachte ich mir Ausgabefehler zu erkennen.

micron
05.05.2013, 11:44
Hi,
vielen Dank für eure Antworten, das Board war fertig gelötet, ich musste nichts machen an dem.
Und beim compilieren bekomme ich immer:
Build succeeded.
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Die Fehler die zu sehen sind am ersten Bild sind die das der Programmer nicht verbunden werden konnte.
Das ist der häufigste Fehler den ich bekomme zur Zeit.
Hab Atmel Studio 6.1

Gruß
micron

Ritchie
05.05.2013, 12:11
Hallo Micron,

hast Du den Programmer schon mit der neusten Firmware versehen ?

Ich habe dieses Update verwendet, da vorher das Teil nicht wirklich mit meiner Konfiguration gearbeitet hat.

www.reichelt.de/index.html?;ACTION=7;LA=3;OPEN=0;INDEX=0;FILENAME= A300%252FALL-AVR_UPD_130.zip

Gruss R.

micron
06.05.2013, 11:48
Hi,
angeblich ist ein Fehler im Beispiel von embedded-projects.net drin,
die LED ist nicht an dem Port "PORTB" wie emb-prj.net geschrieben haben, sondern am "PORTC" -> PC5:
"status LED connected to PC5 via removable jumper"
hier noch mal der Link zum Hersteller :
https://www.olimex.com/Products/AVR/Proto/AVR-P28-8MHz/
und der code schaut bei denen doch anders aus als der den ich gepostet habe.

Ist ein bisschen viel aber ich hoffe ihr habt nichts dagegen:


/* Sample program for Olimex AVR-P28 with ATMega8 processor
* Blinks the led with a speed ~2Hz using a simple delay loop.
* Compile with AVRStudio+WinAVR (gcc version 3.4.6)
*/

#define __AVR_ATmega8__ 1

#include "avr/io.h"

void Initialize(void)
{
PORTB = 0x0;
PORTC = 1<<5; /* turn the LED off */
PORTD = 0x0;

DDRB = 0x0;
DDRC = 1<<5; /* PC5 as output - the LED is there */
DDRD = 0x0;

}

/* state = 0 -> Led Off
* state = 1 -> Led On
* state !=[0,1] -> Led Toggle
*/
void LedSet(unsigned char state)
{
switch (state)
{
case 0:
PORTC &= ~(1<<5);
break;
case 1:
PORTC |= 1<<5;
break;
default:
if (PORTC & 1<<5)
PORTC &= ~(1<<5);
else
PORTC |= 1<<5;
}

}


int main(void)
{
int i;

Initialize();

while (1)
{
LedSet(0);
for (i=60000;i;i--);
LedSet(1);
for (i=60000;i;i--);
}
return 0;
}



das ist der gesamte Quelltext den Olimex bereit gestellt hat.
Wenn ich das make ausführe kommen keine Fehler, bei "make all" kommt die Meldung:
"make *** no rule to make target all'. stop"
was für mich bedeutet das heute Abend wieder einer etwas später ins Bett gehen wird :D

Gruß
micron

- - - Aktualisiert - - -

Na klasse,
hab den source noch mal downloaded von der embedded-projects Seite und jetzt sieht der Quellcode doch anders aus,
das erste mal hab ich gepostet den source von dem ersten download, jetzt sieht die selbe *.c Datei so aus:


/*
* AVRGCC1.c
*
* Created: 03.11.2011 11:29:58
* Author: eproo
*/

#include <avr/io.h>
#define F_CPU 1000000
#include <util/delay.h>

int main(void)
{
DDRC |= (1<<PC5);

while(1) {
PORTC |=(1<<PC5);
_delay_ms(1000);
PORTC &=~(1<<PC5);
_delay_ms(1000);
}
}

Na das wird lustig heute ... -.-

Gruß
micron

Hubert.G
06.05.2013, 19:31
Codes funktionieren beide, der erste mit einer kleinen Einschränkung.
Womit kompilierst du den Code? Notepad oder AVR-Studio?

micron
09.05.2013, 17:24
Hallo,
Hab endlich die led zum blinken gebracht, der jumper 3.3V war gesetzt un dann laeuft das board mig wenig power das steht in der englischen version nur die hatte ichlzu spaet gelesen o mann....
Ok aber jetzt kann ich weiter machen
Danke fuer eure antworten ;)
Micron