Forum: Mikrocontroller und Digitale Elektronik Programm meckert (bei den setzten von Ein-& Ausgängen)


von Chris S. (chris70469)


Lesenswert?

Guten Abend,

wir möchten nächstes Jahr in der Schule µC programmieren und da ich das 
Thema spannend finde, wollte ich schon ein bisschen früher anfangen...

...Also entschloss ich mich ein Rapitus SAMxS Board zu kaufen mit dem 
Mikrocontroller ATSAM4S4C.

Als das Board ankam, legte ich gleich mit dem AtmelStudio 7 und dem 
AVR-GCC Tuturial los.


Ich wollte am Anfang einfach nur eine LED zum blinken bringen, aber 
leider kann ich unter dem Prozessor(ATSAM4S4C) die Ausgänge mit dem 
Befehl
DDRC = 255; nicht setzten, denn AtmelStudio unterstreicht den Befehl
(DDRC= 255;), als würde AtmelStudio den Befehl nicht kennen.
Die Bibliothek (#include <avr/io.h>) wurde davor natürlich eingebunden.

Ich habe Spaßeshalber einen anderen Mikrocontroller (ATmega 8) 
ausgewählt und dort hat AtmelStudio nicht gemeckert.

Gibt es für meinen Mikrocontroller irgendwelche anderen Befehle, oder 
muss ich bei dem Modell noch irgendetwas vor dem programmieren beachten, 
damit ich mein LEDchen zum laufen bekomme?:-P

Desweiteren möchte ich im allgemeinen mal ganz lieb nach ein paar Tipps 
bitten (z.B. empfehlt ihr lieber ein anderes Board oder Tutorials... 
bzw. wie habt ihr Angefangen?).

Vielen Dank in Voraus :-)

Chris

von ich (Gast)


Lesenswert?

Ich würde mal darauf tippen, dass ein atsam4s4c kein avr ist, sondern 
ein arm (cortex m4). Ein atmega8 ist ein avr und oh Wunder, schon geht 
es.

von foobar (Gast)


Lesenswert?

Die ATSAM-Controller hat ARM-, keine AVR-CPUs. Die Teile sind deutlich 
komplexer als die 8-Bit AVRs. Wenn das dein erster Kontakt mit 
Mikrocontrollern überhaupt ist, würde ich dir wirklich empfehlen, den 
Einstieg mit den kleineren AVRs zu machen - nen Arduino UNO oder NANO 
ist saubillig und dafür gibt's Beispiele, Dokus und Intros bis zum 
Abwinken.

von Peter D. (peda)


Lesenswert?

Chris S. schrieb:
> Die Bibliothek (#include <avr/io.h>) wurde davor natürlich eingebunden.

Das sollte auf einem ARM aber einen dicken Fehler werfen.

von fast (Gast)


Lesenswert?

Peter D. schrieb:
> Das sollte auf einem ARM aber einen dicken Fehler werfen.

sollte es nicht, weil

Chris S. schrieb:
> Ich habe Spaßeshalber einen anderen Mikrocontroller (ATmega 8)
> ausgewählt und dort hat AtmelStudio nicht gemeckert.

was zwar spaßig aber natürlich nicht richtig ist

von Jim M. (turboj)


Lesenswert?

Chris S. schrieb:
> Mikrocontroller ATSAM4S4C.
>
> Als das Board ankam, legte ich gleich mit dem AtmelStudio 7 und dem
> AVR-GCC Tuturial los.

Wieso ein Tutorial für AVR? Das ist ein ARM mit völlig anderer 
Architektur.

Wenn man sich die Doku durchliesst stellt man schnell fest das da nicht 
ein Register Namen überinstimmt.

von Seppo (Gast)


Lesenswert?

> ...Also entschloss ich mich ein Rapitus SAMxS Board zu kaufen mit dem
> Mikrocontroller ATSAM4S4C.

Oha, gab es einen bestimmten Grund, dass Du Dir ausgerechnet so ein Teil 
ausgesucht hast? Man kann darauf natürlich auch programmieren und LEDs 
zum Blinken bringen, aber eine 32Bit ARM CPU ist wesentlich komplexer 
und es wird Dir damit auch wesentlich schwerer fallen, zu verstehen, was 
dort genau vor sich geht.

Und Anfängertutorials aus dem Internet kannst Du auf diesen 
Mikrocontroller kaum anwenden. Daher kam vermutlich auch Dein "#include 
<avr/io.h>".
Das ist eine ganz andere Architektur und hat mit AVR Controllern nix zu 
tun.


Besser wäre, wenn Du ein AVR Entwicklungsboard kaufst.... z.B. das von 
Pollin:

https://www.pollin.de/p/atmel-evaluations-board-v2-0-1-fertigmodul-810074

Und dazu einen oder besser zwei ATMEGA328P Controller im DIL Gehäuse.

Dann passt Dein angefangener Code auch schon.

von Der Andere (Gast)


Lesenswert?

> Programm meckert
Wie meckert es denn?
Eher Mähähähähäh oder doch Mööööööh?

von Seppo (Gast)


Lesenswert?

> ATMEGA328P

Oh hoppla - ich meinte den ATMEGA8.

Sorry, der 328 ist mit dem Board scheinbar nicht kompatibel...

von spess53 (Gast)


Lesenswert?

Hi

>Sorry, der 328 ist mit dem Board scheinbar nicht kompatibel...

Begründung

MfG Spess

von Stefan F. (Gast)


Lesenswert?

> Sorry, der 328 ist mit dem Board scheinbar nicht kompatibel...

Doch ist er. Dieses Pollin Board und seine Doku sind bloss so alt, da 
gab es den Chip vermutlich noch nicht.

Ganz am Ende meines Buches habe ich AVR Mikrocontroller im DIP Format 
mit ihrer Pinbelegung dargestellt. Da kann man sofort sehen, dass der 
ATmega328 passt:

http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%201.pdf

Ist aber auch nicht mehr aktuell, es gibt inzwischen weitere AVR 
Controller die da nicht drin stehen.

von Chris S. (chris70469)


Lesenswert?

Guten Tag,

ist ja der Hammer wie viele Antworten über die Nacht reinkamen, an 
dieser Stelle möchte ich mich bei euch bedanken. :-)


Seppo schrieb:
> Oha, gab es einen bestimmten Grund, dass Du Dir ausgerechnet so ein Teil
> ausgesucht hast?

Ja, habe mir das Board ausgesucht, weil man es per USB-Schnittstelle 
programmieren konnte und weil es im Angebot war :-P

Seppo schrieb:
> Besser wäre, wenn Du ein AVR Entwicklungsboard kaufst.... z.B. das von
> Pollin:

Meinst du wirklich?
Weil da kann ich nur per ISP-Programmer programmieren und dies habe ich 
leider noch nicht ganz so kapiert, wie dies mit der Schnittstelle 
funktioniert.
Gibt es da eine Brücke von ISP auf USB?
Was hälst Du / Ihr vom ARDUINO UNO R3 DIL gegenüber den AVR Board?
Denn da könnte ich nämlich per USB Programmieren.
Desweiteren stellt sich die Frage, kann ich beim Arduino-Board auch 
meine Entwicklungsumgebung AtmelStudio 7 weiterhin benutzen?...
Denn ein Kollege (auch blutiger Anfänger) meinte es wäre nicht möglich, 
weil es für die Arduinos eine vorgefertigte Software zum programmieren 
gibt.


Man, man, man... viel zu viel Auswahl für einen Anfänger, da weiß man 
gar nicht wo man anfangen und aufhören soll...



Beste Grüße
Chris

von Stefan F. (Gast)


Lesenswert?

> Gibt es da eine Brücke von ISP auf USB?

Ja, nennt sich ISP Programmieradapter.

Arduino Module kannst du direkt über den USB Port programmieren, weil 
deren µC mit einem Bootloader ausgestattet sind. Bei China Klone fehlt 
der Bootloader aber manchmal.

Besorge Dir einfach einen ISP programmieradapter, den wirst du früher 
oder später ohnehin brauchen. Kriegt man schon für weniger als 5€.

> kann ich beim Arduino-Board auch
> meine Entwicklungsumgebung AtmelStudio 7 weiterhin benutzen?

Ja, aber Atmel Studio unterstützt den Bootloader nicht. Zum Übertragen 
des Programms nimmst du dann avrdude oder du schmeisst den Bootloader 
weg und benutzt eine ISP Programmieradapter.

Das Atmel Studio unterstützt viele billige Programmieradapter nicht, 
avrdude aber schon. Früher oder später wirst du ohnehin bei avrdude 
landen.

> da weiß man gar nicht wo man anfangen und aufhören soll...

Du solltest mit einer Anleitung beginnen, die auch den Umgang mit der 
Software und Hardware beschreibt. Nimm zunächst das, was die Anleitung 
empfiehlt. Auf andere Produkte kannst du immer noch später wechseln, 
wenn du weist, was du tust.

Schau Dir das an: http://stefanfrings.de/mikrocontroller_buch/index.html

von Florian (Gast)


Lesenswert?


von Peter D. (peda)


Lesenswert?

Chris S. schrieb:
> ...Also entschloss ich mich ein Rapitus SAMxS Board zu kaufen mit dem
> Mikrocontroller ATSAM4S4C.

Das ist ein ARM, Du mußt also ins ARM-Tutorial schauen:
https://www.mikrocontroller.net/articles/ARM_Cortex_Mikrocontroller

Die ARM sind einiges komplexer als die AVR. In der Regel wird beim ARM 
nicht direkt auf IO-Register zugegriffen, sondern ein HAL benutzt.
Gebräuchlich sind hier auch eher die von ST und NXP, die von Microchip 
eher weniger.

Bei den AVRs sind die Arduino direkt über USB programmierbar, aber ohne 
Debugger. Man kann als Anfänger aber auch viel im Simulator laufen 
lassen.

von Chris S. (chris70469)


Lesenswert?

> Du solltest mit einer Anleitung beginnen, die auch den Umgang mit der
> Software und Hardware beschreibt. Nimm zunächst das, was die Anleitung
> empfiehlt. Auf andere Produkte kannst du immer noch später wechseln,
> wenn du weist, was du tust.
>
> Schau Dir das an: http://stefanfrings.de/mikrocontroller_buch/index.html

Hab jetzt mal das erste Script überflogen.
Hammer ein großes Lob! Dass es Menschen gibt die sich so eine große Mühe 
machen um anderen zu helfen.

Ich werde dann gleich heute Abend auf meinem anderen PC die 
Entwicklungsumgebung (AtmelStudio 7) installieren und die Bauteile von 
der Materialliste bestellen und dann doch erstmal die Finger von den 
Fertig-Boards lassen (da die Anleitung leider nur Boards zum selber 
bauen darlegt).

Werde dann also das Script durcharbeiten :-).

Vielen Dank für den Tipp.
Chris

von Stefan F. (Gast)


Lesenswert?

Du kannst auch ruhig ein fertiges Board benutzen.

Ob der AVR auf einer Lochrasterplatine, einem Steckbrett oder einer 
industriell gefertigten Platine sitzt ist ihm egal.

Du kannst die Anleitungen ganz sicher auch damit nachvollziehen. Wenn du 
gut genug englisch kannst darf es auch gerne ein anderes AVR Modell 
sein. Da ist dann halt die Pinbelegung etwas anders und die Register 
heißen teilweise etwas anders. Die Unterschiede findest du anhand des 
Datenblattes heraus. So schwer ist das nicht.

von Chris S. (chris70469)


Lesenswert?

Stefanus F. schrieb:
> Ob der AVR auf einer Lochrasterplatine, einem Steckbrett oder einer
> industriell gefertigten Platine sitzt ist ihm egal.

Ok, Danke Stefanus.
Dann überlege ich mir ob ich dann wie oben das
https://www.pollin.de/p/atmel-evaluations-board-v2-0-1-fertigmodul-810074

Und dazu einen oder besser zwei ATMEGA328P Controller im DIL Gehäuse 
kaufe oder doch lieber bisschen selber bastel. :-)

von Hubert G. (hubertg)


Lesenswert?

Schau dir auch das an, da ist der Programmer schon dabei.
https://www.ehajo.de/bausaetze/bedrahtet/89/ateval-microchip-avr-evaluationsboard

von Stefan F. (Gast)


Lesenswert?

> Und dazu einen oder besser zwei ATMEGA328P Controller im DIL Gehäuse

ja, und vielleicht noch ein paar kleine ATtiny13 oder ATtiny45. Wobei 
die ATtiny45 den Vorteil hätten, auch zu Arduino kompatibel zu sein. Der 
ATtiny13 hat für Arduino zu wenig Speicher.

von spess53 (Gast)


Lesenswert?

Hi

>Wobei die ATtiny45 den Vorteil hätten, auch zu Arduino kompatibel zu sein.

Was macht einen AVR 'Arduinokompatibel'?

MfG Spess

Beitrag #5514105 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Lesenswert?

> Was macht einen AVR 'Arduinokompatibel'?

Die Frage ist eigentlich falsch herum formuliert. Es müsste heissen:
Zu welchen AVR Modellen ist die Arduino IDE kompatibel?

Wenn man so herum fragt schaut man bei Arduino nach und findet 
(hoffentlich) die Liste.

von Chris S. (chris70469)


Lesenswert?

Guten Abend,


vielen Dank nochmal für die Antworten.
Ich werde jetzt eins von den beiden Boards bestellen und kräftig üben.
Hat ein Board zu dem anderen bestimmte Vorteile?

Board 1: 
https://www.pollin.de/p/atmel-evaluations-board-v2-0-1-fertigmodul-810074

Board 2: 
https://www.ehajo.de/bausaetze/bedrahtet/89/ateval-microchip-avr-evaluationsboard

von Stefan F. (Gast)


Lesenswert?

Ist doch schon geschrieben worden. Das Ehajo Board enthält einen ISP 
Programmieradapter.

Das Pollin Board setzt einen Computer mit echten seriellen Ports voruas 
(hat das noch wer?) oder du musst zusätzlich einen ISP 
Programmieradapter (mit 10 poligem Stecker) kaufen.

Ich persönlich würde Dir zu einem Steckbrett und einem Arduno Nano Klon 
sowie einem ISP Programmieradapter (mit 6 poligem Stecker) raten.
https://www.amazon.de/AZDelivery-102-Breadboard-Kit-Steckbr%C3%BCcken/dp/B01N4VCYUK/ref=sr_1_11?s=computers&ie=UTF8&qid=1533751035&sr=1-11&keywords=breadboard
https://www.amazon.de/Philonext-ATmega328P-Controller-Entwicklungsboard-PIN-Header/dp/B07BQVKPLX/ref=sr_1_7?ie=UTF8&qid=1533750921&sr=8-7&keywords=arduino+nano+ch340
https://www.amazon.de/Diamex-7200-USB-ISP-Stick-AVR-Programmieradapter/dp/B0068K0D4O/ref=sr_1_1?s=computers&ie=UTF8&qid=1533750982&sr=1-1&keywords=isp+avr

Diese Sachen bekommst du bei Aliexpress für etwa den halben Preis, musst 
dann aber Geduld haben. Lieferung dauert typischerweise 2 Monate.

Wenn du Geld sparen musst, lass den Diamex Programmieradapter weg. Zur 
Not kannst du den sogenannten "ISP Sketch" au einen der Arduinos laden 
um ihn als ISP Programmieradapter zu verwenden.

von Chris S. (chris70469)


Lesenswert?

Stefanus F. schrieb:
> Ist doch schon geschrieben worden. Das Ehajo Board enthält einen ISP
> Programmieradapter.
>
> Das Pollin Board setzt einen Computer mit echten seriellen Ports voruas
> (hat das noch wer?) oder du musst zusätzlich einen ISP
> Programmieradapter (mit 10 poligem Stecker) kaufen.
>
> Ich persönlich würde Dir zu einem Steckbrett und einem Arduno Nano Klon
> sowie einem ISP Programmieradapter (mit 6 poligem Stecker) raten.
> 
https://www.amazon.de/AZDelivery-102-Breadboard-Kit-Steckbr%C3%BCcken/dp/B01N4VCYUK/ref=sr_1_11?s=computers&ie=UTF8&qid=1533751035&sr=1-11&keywords=breadboard
> 
https://www.amazon.de/Philonext-ATmega328P-Controller-Entwicklungsboard-PIN-Header/dp/B07BQVKPLX/ref=sr_1_7?ie=UTF8&qid=1533750921&sr=8-7&keywords=arduino+nano+ch340
> 
https://www.amazon.de/Diamex-7200-USB-ISP-Stick-AVR-Programmieradapter/dp/B0068K0D4O/ref=sr_1_1?s=computers&ie=UTF8&qid=1533750982&sr=1-1&keywords=isp+avr
>
> Diese Sachen bekommst du bei Aliexpress für etwa den halben Preis, musst
> dann aber Geduld haben. Lieferung dauert typischerweise 2 Monate.
>
> Wenn du Geld sparen musst, lass den Diamex Programmieradapter weg. Zur
> Not kannst du den sogenannten "ISP Sketch" au einen der Arduinos laden
> um ihn als ISP Programmieradapter zu verwenden.

Perfekt Stefan, Geld spielt für Weiterbildung keine Rolle.
Hab jetzt alles bestellt und wenn es da ist, werde ich mit deinem Skript 
arbeiten.


Vielen vielen DANK! :-)

Chris

von Stefan F. (Gast)


Lesenswert?

Dann bestelle noch ein paar ATtiny45 mit.

von Chris S. (chris70469)


Lesenswert?

Vielen Dank Stefan. Wird gleich mit bestellt.

Ich wünsche Dir noch einen angenehmen Abend.

Chris :-)

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Da kann man sofort sehen, dass der
> ATmega328 passt:
>
> 
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%201.pdf

bis dahin bin ich nicht gekommen weil ich schon auf Seite 9 ins Stolpern 
kam was soll diese Leitwerttabelle?

Kupfer mit 44 liegt schon ohne Einheiten mindestens um 10 zu tief!

heute steht in Wiki
https://de.wikipedia.org/wiki/Elektrische_Leitf%C3%A4higkeit

zwar 58 und ich habe noch 56 gelernt, aber wo hast du die 44 her?

von Stefan F. (Gast)


Lesenswert?

> bis dahin bin ich nicht gekommen

Warum schreibst du das? DIR hatte ich das Buch nicht empfohlen.

> was soll diese Leitwerttabelle?...

Danke für den Hinweis. Die Tabelle hatte ich vor 10 Jahren von Wikipedia 
abgeschrieben. Du bist der erste, der den Fehler bemerkt hat.

Ich korrigiere das.

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Du bist der erste, der den Fehler bemerkt hat.

komisch DAS höre ich öfter (nur oft fehlt mir der Glaube)

dir glaube ich mal :)

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

>> Du bist der erste, der den Fehler bemerkt hat.
> komisch DAS höre ich überall

Dann hast da ein besonderes Talent. Vielleicht solltest du 
Software-Tester werden.

von Chris70469 (Gast)


Lesenswert?

Fehler hin oder her. Sich die Zeit zu nehmen so etwas zu schreiben und 
kostenlos anzubieten finde ich top:-)

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Vielleicht solltest du
> Software-Tester werden.

hatte ich mal gemacht, aber die besten SW Tester waren immer das 
Prüfpersonal unserer TelefonTestaustomaten, die fanden 
Tastenkombinationen die sich keiner ausdenken kann ;)

von chris70469 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,


da ich jetzt den Daimex Programmieradapter habe 
(https://www.amazon.de/gp/product/B0068K0D4O/ref=oh_aui_detailpage_o04_s00?ie=UTF8&psc=1)

und das Nano V3.0 ATmega328P Board 
(https://www.amazon.de/gp/product/B07BQVKPLX/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1)

wollte ich das Board programmieren und mal alle Ausgänge bzw ein Ausgang 
mal auf High setzten und mal schauen ob am Ausgang eine Spannung 
anliegt, leider  liegt keine Spannung an...

Das Board ist per USB verbunden und bekommt von dort die Spannung.
Der DAIMEX liefert keine Target Spannung ( Also DIP-Schalter auf off).
Die Power LED leuchtet und die RX LED blinkt nach dem programmieren.
Beim löschen des Prozessors geht die RX LED wieder aus.

Also gehe ich davon aus, dass ich erfolgreich mein Programm 
daraufgespielt habe.

Das Programm habe ich mit eins aus dem Internet verglichen und 
angepasst, dies müsste eig. auch funktionieren....

Könntet Ihr jedoch mal drüber schauen was ich hier falsch mache?


Wäre Euch sehr Dankbar.

Chris

P.S. Habe ein Screenshot vom Programm gemacht.

von Stefan F. (Gast)


Lesenswert?

Hast das Messgerät an GND und Port D2 angeschlossen?
Das ist der einzige Ausgang, den das Programm auf High schaltet.

von Chris70469 (Gast)


Lesenswert?

Ja stefan ich messe an den 2 Ports. Hab auch mal versucht alle Ausgänge 
zu schalten und zu messen... aber leider wird auch hier nichts 
angezeigt.

Hab ich hier irgendetwas falsch eingestellt?
Ansonsten löte ich mal noch eim Board zusammen. Vielleicht ist das Board 
ja kaputt...

von Stefan F. (Gast)


Lesenswert?

>> Hast das Messgerät an GND und Port D2 angeschlossen?
> Ja stefan ich messe an den 2 Ports.

Ich habe nur von einem Port und GND geschrieben. Wo hast du das 
Messgerät angeschlossen? In welche Löcher hast die Leitungen am 
Messgerät eingesteckt? Wenn du es an die Pins 5V und GND anschließt, 
zeigt das Messgerät dann 5,000 Volt an?

> aber leider wird auch hier nichts angezeigt.
Sorry für die dämliche Frage, aber bist du sicher dass dein Messgerät 
eingeschaltet ist und funktioniert? Weil: "nichts anzeigen" ist genau 
wie 0,000V eigentlich unmöglich.

Sei mal etwas präziser mit einen Angaben! Wenn Dir das schwer fällt, 
mache Fotos.

> Die Power LED leuchtet und die RX LED blinkt nach dem programmieren.
> Beim löschen des Prozessors geht die RX LED wieder aus.

Warum blinkt die denn? Dein Programm steuert sie doch gar nicht an!

> Hab ich hier irgendetwas falsch eingestellt?
In deinen bisherigen Infos fällt mir nichts weiter auf.
Hast du das Programm vor dem Hochladen compiliert? Oder lädst du gar 
nicht das Programm hoch, dass dein Screenshot zeigt?

Wo sind denn die Logmeldungen von dem Programmiervorgang?

Schalte mal Port B5 auf High:
DDRB=(1<<PB5);
PORTB=(1<<PB5);

Dann sollte die mit "L" beschriftete LED leuchten. Tut sie das?

von chris70469 (Gast)


Angehängte Dateien:

Lesenswert?

Stefanus F. schrieb:
> Wenn du es an die Pins 5V und GND anschließt,
> zeigt das Messgerät dann 5,000 Volt an?

Sorry Stefan, dass ich so spät Antworte, bin erst jetzt wieder zuhause.
Also ich bin ziemlich sicher, dass es nicht am messen liegt.
Wenn ich am 5V Pin und am Ground messe habe ich meine 5V am Multimeter.

Stefanus F. schrieb:
> Warum blinkt die denn? Dein Programm steuert sie doch gar nicht an!

Das weiß ich leider auch nicht, vor allem wenn ich den Prozessor leere, 
geht diese LED auch wieder aus.

Stefanus F. schrieb:
> Hast du das Programm vor dem Hochladen compiliert? Oder lädst du gar
> nicht das Programm hoch, dass dein Screenshot zeigt?

Bin wie im Script vorgegangen, habe das Programm geschrieben, 
abgespeichert und die HEX Datei ausgewählt und dann auf "Program" 
gedrückt, dass einzigste was dann aber passiert, ist das die LED RX 
anfängt zu blinken, ansonsten passiert nichts.

Hab jetzt mal dein Code eingetippt (Siehe Screenshot) und es leuchtet 
leider keine LED.
Desweiteren tut Atmelstudio 7 die Schreibweise der Bitmanipulation rot 
anstreichen, als ob er diese nicht kennen würde.


Falls du irgendwelche Fotos oder Screenshots von bestimmten 
Einstellungen benötigst, sende ich Sie dir gerne.


Danke nochmal, dass du dich hier so um mich bemühst, ich weis dass zu 
schätzen !


Chris

von Stefan F. (Gast)


Lesenswert?

Da gibt es keine speziellen Einstellungen.

Ich habe ganz stark das Gefühl, dass du ein ganz anderes Programm in den 
Chip geladen hast, als dein Texteditor anzeigt.

So also ob die die falsche HEX Datei verwendest (kontrolliere mal deren 
Änderungsdatum) oder als ob dein Compiler gar keine neue Hex Datei 
erstellt hätte und du die ganze Zeit eine alte Datei von einem früheren 
Versuch verwenden würdest.

Warum die IDE PB5 rot markiert müsste sie selbst erklären. Ich kanns mir 
aber denken: Es muss wohl "PORTB5" oder einfach "5" heißen, nicht "PB5".

Deine Binärkonstanten wie 0b00000100 funktionieren nur, wenn bestimmte 
Versionen des C Standards ausgewählt wurden. Ich benutze immer die 
Compiler Option "-std=c99", damit geht es. Wo du das in deiner 
grässlichen IDE einstellen kannst, weiss ich nicht. Ich bevorzuge andere 
IDEs.

Mich wundert, dass du das Ausgabefenster der Compilers geschlossen hast. 
Arbeitest du gerne im Blindflug?

von chris70469 (Gast)


Lesenswert?

Stefanus F. schrieb:
> So also ob die die falsche HEX Datei verwendest

Stefan du hattest recht.
Irgendetwas mit AtmelStudio funktionierte nicht... Hab jetzt ein neues 
Projekt angelegt und es nochmal probiert.
LED leuchtet und an den Ports liegen 5V an!

Ich könnte dich dafür abknutschen lach.

Am Freitag kommen meine Widerstände und LEDS, werde dann mal ne 
Ampelsteuerung usw probieren :-)

von Stefan F. (Gast)


Lesenswert?

Trotzdem solltest du das Fenster mit den Compiler-Ausgaben öffnen und 
auch beachten, was dort erscheint.

von chris70469 (Gast)


Lesenswert?

Stefanus F. schrieb:
> Trotzdem solltest du das Fenster mit den Compiler-Ausgaben öffnen
> und
> auch beachten, was dort erscheint.

Habe ich nun gemacht, dank Dir für den Tipp :-)

von chris70469 (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

da ich fleißig nach dem Script vom Stefan arbeite und leider an einer 
Stelle nicht weiter komme, möchte ich euch um Rat bitten.

Ich bin im Script:

http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%201.pdf

auf Seite 165 (6.8.1 Programmierung), hier geht es darum einem den ADC 
anhand eines Projekt zu erklären, nämlich mittels einen 
"Klatsch-Schalter".
Bei dem Projekt wird der Piezo-Schallwandler als Mikrofon eingesetzt und 
der soll bei Geräusche eine LED zum aufleuchten bringen.

Nun zu meinem Problem:

Da ich das Arduino-Nano Board habe, musste ich meinen Code 
anpassen(unterschiedliche Hardware zum Script), ich habe also den
Piezo-Schallwandler an die Analogen Inputs A0 und A1 angeschlossen.
Meine LED + Widerstand sind am Digitalen Ausgang D4.


Wenn ich die Pull-Up Widerstände von meinem ADC aktivieren möchte(Siehe 
Screenshot), meckert mein Programm, dass mein Register nicht deklariert 
sind...An was könnte das liegen...bzw kann ich überhaupt meine Analogen 
Eingänge wie die Digitalen Eingänge behandeln?
Muss ich evtl. doch einen anderen Eingang nutzen?


Datenblatt für den Arduino Nano:
https://www.arduino.cc/en/uploads/Main/ArduinoNanoManual23.pdf

Danke in Voraus. :-)

Gruß
Chris

von Joachim B. (jar)


Lesenswert?

DDRA gibt es doch nicht!

nur weil das Analogeingänge sind heisst der Port nicht A
nur weil das Digitaleingänge sind heisst der Port nicht D

du musst schon ins Datenblatt schauen welche D oder A Eingänge auf 
welchen Port gehen

B, C, D ?

chris70469 schrieb:
> und das Nano V3.0 ATmega328P Board

da hilft immer folgendes Bild
https://i2.wp.com/marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.png

die A0 bis A5 gehen auf C Ports
die D0.... gehen auf B & D Ports

: Bearbeitet durch User
von Chris70469 (Gast)


Lesenswert?

Guten Morgen,

Upsaaala haha, werde es gleich mal heute Abend probieren und bescheid 
geben ... Dank dir:-)

von Stefan F. (Gast)


Lesenswert?

Joachim, du hast ihm das Bild für den Arduino Uno verlinkt.
Er hat einen Arduino Nano. Hier ist das richtige Bild:

https://i2.wp.com/christianto.tjahyadi.com/wp-content/uploads/2014/11/nano.jpg?zoom=2

von Chris70469 (Gast)


Lesenswert?

Hi Stefan,

vielen Dank mal wieder. Bin erst spät abends Zuhause, werde es dann 
gleich testen.

Dein Script ist übrigens der Hammer!
Super erklärt und tolle Versuche, bin wie ein kleines Kind... Kann gar 
nicht mehr aufhören zu lesen:-).

Gruß
Chris

von Stefan F. (Gast)


Lesenswert?

Danke für das Lob.

von Ralph S. (jjflash)


Lesenswert?

ich kanns mir nicht verkneifen und muss schmunzeln: um wieviele 
Zentimeter ist stefanus f. in den letzten 3 Wochen gewachsen?

von Stefan F. (Gast)


Lesenswert?

Mindestens einen halben Meter. Und die Brust ist deutlich sichtbar 
angeschwollen, ganz ohne Sport.

von Chris70469 (Gast)


Lesenswert?

Noch immer nicht zuhause. Werd wohl erst morgen dazu kommen....@ Ralph , 
bisschen spaß muss doch immer sein :-)

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Joachim, du hast ihm das Bild für den Arduino Uno verlinkt.
> Er hat einen Arduino Nano. Hier ist das richtige Bild:

das ist Krümelei

328p für Nano und Uno nutzt die selben / pardon die gleichen A und D 
Ports und Bezeichnungen, OK der Nano hat ein paar weniger, aber darum 
ging es hier nicht.

von Stefan F. (Gast)


Lesenswert?

> das ist Krümelei

Ja, und gerade diese Kleinigkeiten verwirren den typischen Anfänger.

Erst die Umbenennung der Pins, dann die 5V versus 3,3V Varianten (man 
hätte von Anfang an auf 3,3V mit Baudratenquarz setzen sollen) und 
neuerdings unterschiedliche Baudraten beim Bootloader. Die Arduino Leute 
haben vieles richtig gemacht, aber auch einiges falsch.

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Ja, und gerade diese Kleinigkeiten verwirren den typischen Anfänger.

OK akzeptiert, ich war ja bei dir auch mal verwirrt ohne Anfänge zu 
sein.

Deswegen nutze ich lieber die Bilder die die Arduino Namen am puren Chip 
verwenden, aber da sind nicht alle Bilder gleich informativ was Port 
Namen und PCINT angeht, deswegen habe ich schnell schnell den UNO 
gewählt, es gibt zuviel veraltete Bilder die die PCINT nicht zeigen und 
sich auf den mega8 beziehen.

von chris70469 (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

sorry dass ich erst jetzt dazu gekommen bin euch zu schreiben, wollte 
eig. viel früher berichten.


Ich habe jetzt mal mein C-Programm angepasst.
Mein Compiler meckert nun nicht mehr, weil ich jetzt die richtigen 
Register benutze, an dieser Stelle möchte ich mich schon mal bei euch 
bedanken!

Leider habe ich irgendwo immer noch einen Fehler, denn die LED leuchtet 
nicht auf.

An den beiden ADC Eingängen (PC2 & PC3) messe ich eine Spannung von 
jeweils 4.6V gegen Ground.

Am LED Ausgang (PD4) messe ich immer 0V gegen Ground, beim Klatschen und 
im ruhigen Zustand.

Hab jetzt mal ein Bild von meiner Hardware und meinen jetzigen Programm 
gemacht, vielleicht kann mir jemand weiter helfen:-)


Vielen Dank in Voraus.
Chris

von STK500-Besitzer (Gast)


Lesenswert?

chris70469 schrieb:
> Leider habe ich irgendwo immer noch einen Fehler, denn die LED leuchtet
> nicht auf.

Du schaltest die LED ja auch nie aus.
Übrigens ist es sinnvoller, Programmcode entweder als editierbare Datei 
(".c", ".h") anzuhängen oder in die deinem Fall angebracht, in den 
C-Tags mit in den Beitrag zu kopieren.

von Stefan F. (Gast)


Lesenswert?

Du hast die LED falsch angeschlossen. Sie hängt quasi direkt an Port D4, 
der Strom fließt durch das Steckbrett am Widerstand vorbei. Wenn du Pech 
hast, brennt Dir so der Port durch. Langfristig wird es auch der LED 
schaden.

Durch ADMUX=2 stellt du den Multiplexer korrekt ein, schaltest den ADC 
jedoch auch auf eine externe Referenzspannung um. Richtig wäre:

ADMUX=2+(1<<REFS1)+(1<<REFS0);

An dieser Stelle unterscheiden sie ATtiny13 und ATmega328. Ich würde Dir 
empfehlen, bei jedem Versuch das Datenblatt zu Rate zu ziehen.

>> die LED leuchtet nicht auf.
> Du schaltest die LED ja auch nie aus.

Sie soll zunächst nur EIN geschaltet werden.

von Stefan F. (Gast)


Lesenswert?

> ADMUX=2+(1<<REFS1)+(1<<REFS0);

Sorry, das war falsch. So wird die interne 1,1V Referenz verwendet, was 
mit den Ruhepegeln von 4,6V kollidiert. Setze nur RFS0, dann wird VCC 
(5V) als Referenz verwendet, Also:

ADMUX=2+(1<<REFS0);

Alternativ kannst du das Programm auch unverändert lassen und den AREF 
Eingang mit VCC (5V) verbinden.

von Theor (Gast)


Lesenswert?

@Chris70469

Du hast, denke ich, zwei Probleme

1.
Auf Breadboards sind die "Löcher" ein einer bestimmten Weise von 
vorneherein  (also, so wie es aus der Verpackung kommt) verbunden.
Das ist sinnvoll, denn wenn keines der Löcher mit einem anderen 
verbunden wäre, könntest Du Bauteile nur verbinden, wenn Du zwei 
Anschlussdrähte von jeweils zwei Bauteilen in ein Loch steckst.
Diese "Löcher" nennt man übrigens "Kontakte".

Schau Dir einmal das Bild hier 
http://starthardware.org/wp-content/uploads/2014/10/4_2_breadboard1-1024x640.png 
an.
Auf dem Bild sind die schon vorhandenen Verbindungen der Kontakte durch 
rote Linien gekennzeichnet. Umgekehrt sind Kontakte, die nicht durch 
rote Linien verbunden sind, auch nicht verbunden.

Wenn Du Dir Deinen Aufbau anschaust, wirst Du sehen, dass Du den 
Widerstand in zwei Kontakte gesteckt hast, die im Breadboard selbst 
schon verbunden sind.
Da diese Verbindung sehr geringen Widerstand hat (etwa im 0,1 Ohm 
Bereich) hat der Widerstand keine Wirkung. Da der Widerstand keine 
Wirkung hat, bekommt die LED die volle Ausgangsspannung vom AVR.
Das wird vermutlich keinen Schaden angerichtet haben und würde alleine 
(siehe Punkt 2.) die LED auch nicht daran hindern zu leuchten. Aber die 
LED bzw. der AVR wird damit etwas überlastet. Du solltest das 
korrigieren.

2. Polung der LED
Ich bin nicht hunderprozentig sicher, aber das Foto scheint mir darauf 
hinzudeuten, dass Du die LED verpolt hast.
Eine LED ist, anders als ein Widerstand, ein "gepoltes" Bauelement. D.h. 
ihr Verhalten hängt davon ab, an welchen Anschlüssen der Plus-Pol und 
der Minus-Pol der Stromversorgung, der Batterie, des AVR angeschlossen 
sind.
Damit man bei der LED erkennen kann, wie herum sie gepolt sein muss, 
damit sie leuchtet hat sie zwei Merkmale.
a) Wenn diese Art von LED geliefert wird, hat sie zwei verschieden lange 
Anschlüsse. Der längere ist der Plus-Pol.
b) Das Gehäuse der LED, also das Plastikteil, aus dem die Anschlüsse 
herausragen ist an einer Seite abgeflacht. Der dieser Abflachung näher 
liegende Anschluss ist der Minus-Pol.
Auf dem Foto ist die LED zum Betrachter hin geneigt, was ich so deute, 
das der längere Anschluss oben auf dem Foto ist und damit an GND (also 
Minus) angeschlossen ist. Das musst Du korrigieren.

von Chris70469 (Gast)


Lesenswert?

Guten Morgen,

Danke für die schnellen Antworten.

Stefanus F. schrieb:
> Du hast die LED falsch angeschlossen.

Ohjaaa hahaha, ist mir garnicht aufgefallen, es war dann gestern Abend 
doch zu spät für mich. grins

Stefanus F. schrieb:
> An dieser Stelle unterscheiden sie ATtiny13 und ATmega328

Werde deinen Tipp zu Herzen nehmen und nächstes mal beide Datenblätter 
genauer anschauen.
 Sorry dafür.
Werde heute Abend es nochmal probieren und Dir dann Berichten.

Vielen Dank für deine Mühe :-)

von Chris70469 (Gast)


Lesenswert?

Theor schrieb:
> Polung der LED

Hi Theor,

die Polung der Led ist richtig, ich mach die Polung immer an der Fahne 
im Gehäuse fest.
Das mit dem Steckbrett war mir auch bewusst, nur ich war gestern einfach 
unachtsam :p

Dank dir trotzdem für deine Bemühung.

Gruß
Chris

von Stefan F. (Gast)


Lesenswert?

> ch mach die Polung immer an der Fahne im Gehäuse fest.

Leider kann man sich nicht 100% darauf verlassen.

von Chris70469 (Gast)


Lesenswert?

Stefanus F. schrieb:
> Leider kann man sich nicht 100% darauf verlassen

Ok, auch gut zu wissen. Aber bei der LED bin ich mir sicher, benutze sie 
schon von Anfang an.

Aber werde sie trotzdem nacher mal ans Netzteil anschließen, weil ich ja 
gestern falsch gesteckt habe..

von chris70469 (Gast)


Lesenswert?

Stefanus F. schrieb:
> ADMUX=2+(1<<REFS0);

Stefan, vielen Dank.

Das Programm läuft einwandfrei :-)

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.