Forum: Mikrocontroller und Digitale Elektronik Wie krieg ich meinen ATMega8 programmiert? [Anfängerprobleme]


von Marc F. (cyberfreak1992)


Angehängte Dateien:

Lesenswert?

Hallo liebe Community!

Schon seit einiger Zeit ist microkontroller.net eine meiner 
Lieblingsseiten, durch bloses durchstöbern habe ich bereits die meisten 
Lösungen zu den technischen Problemen der letzten Jahre finden können.

Seit einiger Zeit versuche ich, den Einstieg in die uP-Welt zu finden 
und habe mir daher einen ATMega8 sowie das dazugehörige Zubehör 
angeschafft.
Ich habe versucht, dass Tutorial durchzuarbeiten, komme aber bereits 
beim "anzünden" der LEDs nicht weiter.

Wahrscheinlich ist mein Fehler so banal, dass er in keinem Tutorial 
erwähnt wird. Ich hoffe, irgend einer der wachen Geister hier hat eine 
Antwort für mein Problem und kann mich aus der Misere ziehen.

Bisher habe ich versucht, nach dem AVR-Tutorial hier im Forum, später 
auch nach Antworten im Internet (sowie auch hier auf der Seite mit SuFu 
natürlich) zu finden, was bisher nur zur Verschwendung von zwei Tagen 
führte.

Hier eine Zusammenfassung meines Vorgehens:


1. Aufbau
Der Aufbau einer programmierbaren Schaltung mit einem ATMega 8 wurde aus 
dem Tutorial übernommen und sanft angepasst. Das ganze dazugehörige 
Schema findet Ihr im Anhang(handgezeichnet und gescannt, darum JPG!). 
Zusätzlich habe ich noch mein Oszilloskop jeweils zwischen LED und 
uP-Ausgang geklemmt. Momentan befindet sich alles auf einem Breadboard, 
gespiesen wird das Ganze mit einer LM317-Speisung mit 5VDC.

2. Programmier-Interface, "uP-Umfeld", IDE
Vom ATMega 8 geht es, wie im Schema ersichtlich, "direkt" auf ein AVRISP 
mkII. Von da aus auf meine Windows 8.1 64Bit Workstation. Als 
Programmiersoftware nutze ich die neuste Version von AtmelStudio 6, alle 
dazugehörige Software (Framework, Treiber...) sind auch auf dem neuesten 
Stand.

3. Code
Da ich Neuland betrete, möchte ich mir gleich zu Beginn die Mühe machen, 
die Assembler-Sprache zu erlernen. Den verwendeten Code habe ich 
ebenfalls aus dem AVR-Tutorial und sanft abgeändert.
1
 .include "m8def.inc"        ; Definitionsdatei für den Prozessortyp einbinden
2
 
3
         ldi r16, 0xFF       ; lade Arbeitsregister r16 mit der Konstanten 0xFF (=255)
4
         out DDRB, r16       ; Inhalt von r16 (255) ins IO-Register DDRB ausgeben (legt fest, dass alle Pins unter PortB Ausgänge sind)
5
 
6
         ldi r16, 0b00000001 ; 0b00000001 in r16 laden (legt die Ausgangskonfigoration in r16 ab)
7
         out PORTB, r16      ; r16 ins IO-Register PORTB ausgeben, PB0 wird dadurch low
8
9
ende: 
10
rjmp ende           ; Sprung zur Marke "ende" -> Endlosschleife

4. bisheriges Vorgehen, aktuelles Problem
- Setzen der Fuse-Bits gemäss Forum (siehe Anhang)
- Lock Bits sind alle offen
- uP lässt sich ansprechen und auslesen
- Erstellen der .hex-Datei aus obigem Code.
- Die .hex-Datei auf den uP aufspielen (siehe Anhang)
- Und dann? ...Nichts passiert?!

Auch ein ändern des Codes brachte keine beobachtbare/messbare Änderung:
Von
1
 ldi r16, 0b00000001
auf
1
 ldi r16, 0b11000010
bzw. beliebige Variationen daraus bewirkt nichts an den beiden Ausgängen 
PB0 und PB1. Sie bleiben immer auf ca. 2.8VDC.

Fehlermeldungen kriege ich keine, mit Simluator läuft der Code normal 
durch.

Falls jemand noch mehr Infos benötigt, werde ich Euch diese 
selbstverständlich nicht vorenthalten. :)

Ich hoffe, dem ein oder andern hier ist bereits nach den ersten paar 
Worten klar, wo mein Problem steckt und kann mir helfen. Hoffentlich ist 
mein Fehler aber auch nicht so doof, dass der Wunsch, den Kopf gegen die 
Tischplatte zu hauen nicht unerträglich gross wird.

Es handelt sich um meinen ersten Post in diesem Forum, seid also bitte 
gnädig mit mir. Falls ich also irgendwelche Regeln gebrochen habe, 
gelobe ich ewige Besserung und wäre um eine kurze Rückmeldung dankbar.

Liebe Grüsse und bereits jetzt schon vielen Dank für eure Hilfe,


Cyberfreak1992

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Marc F. schrieb:
> ldi r16, 0b00000001 ; 0b00000001 in r16 laden (legt die
> Ausgangskonfigoration in r16 ab)
>          out PORTB, r16      ; r16 ins IO-Register PORTB ausgeben, PB0
> wird dadurch low

du schreibst ne 1 und das soll low sein?

den AVR kenne ich nicht.

PS für mich ist 2^0 = 1 und damit aktiv und high

3,9k ist ziemlich viel reicht grad so für uh LEDs ultra helle, normale 
Dunkelleds werden da nicht mehr leuchten.

: Bearbeitet durch User
von Reiner O. (elux)


Lesenswert?

Hi,

AVCC verbinde ich (je nach Lage der Dinge) mit Vcc und 100n nach Masse.
3,9k vor den LEDs sind ganz schön viel.

Fuses: BODEN und EESAVE kannst Du erst mal weglassen.

Sieh Dir mal die incl. Datei an: die Ports haben Namen, die man 
verwenden kann, also so:
1
 ldi r16, (1<<PB0)+(1<<PB1)

Sieh Dir mal diese Seite an: 
http://www.avr-asm-tutorial.net/avr_de/beginner/index.html

MfG
Elux

von Icke ®. (49636b65)


Lesenswert?

Hardwareaufbau kontrollieren. Sind die LEDs wirklich am richtigen Port 
angeschlossen? Foto vom Steckbrett?

von Werner (Gast)


Lesenswert?

.. ich würde auch sagen: ersetz erstmal die 3k9 Widerstände gegen 270 
Ohm, dann sehen wir weiter.

Und: AVCC für diesen Aufbau an 5 V anschließen. (Wie mein Vorredner 
schon sage).

Werner

von Sven S. (Gast)


Lesenswert?

Bei der Hardwarebeschaltung scheinst du AVCC und ARef verwechselt zu 
haben. AVCC sollte schon an einer Spannung angeschlossen sein, ARef kann 
man so wie du es beim AVCC gemacht hast, machen. Das kann also schon 
sein, das dein Controller deswegen nicht anläuft.

Und schau mal bei den LEDs, die Widerstände kommen mir auch extrem groß 
vor. Üblich ist irgendwas je nach LED zwischen 100 bis maximal 1k. Bei 
einer roten mit 2.1V Diodenspannung und bei 5V Vcc ist ein guter Wert 
ca. 220 Ohm.

Ansonsten empfehle ich Einsteigern immer gerne entweder in China oder 
hier einen Arduino Nano zu bestellen, kostet nur wenig Euro und man hat 
erst einmal keine Probleme mit der Hardware oder anderen durch ein 
Steckbrett verursachte Probleme am Controller. Man kann den ja auch so 
wie ich es in vielen meiner Bastelprojekte mache, ganz klassisch 
programmieren.

von Joachim B. (jar)


Lesenswert?

Reiner O. schrieb:
> Sieh Dir mal die incl. Datei an: die Ports haben Namen, die man
> verwenden kann, also so: ldi r16, (1<<PB0)+(1<<PB1)

er hat doch die LEDs nach VCC angechlossen, mit high leuchten die doch 
nie.
Fehlende AVCC war auch ein guter Hinweis aber sollten nur Port C 
betreffen nicht Port B.

AVCC is the supply voltage pin for the A/D Converter, Port C (3..0), and 
ADC (7..6).
Beitrag "Port C am ATmega8"

Marc F. schrieb:
> bzw. beliebige Variationen daraus bewirkt nichts an den beiden Ausgängen
> PB0 und PB1. Sie bleiben immer auf ca. 2.8VDC.

klar weil die in der Schleife immer von high nach low wechseln und dein 
Messgerät nicht so schnell ist?

: Bearbeitet durch User
von Dennis S. (eltio)


Lesenswert?

+1 für die ausführliche Beschreibung. :-)

von Icke ®. (49636b65)


Lesenswert?

Joachim B. schrieb:
> klar weil die in der Schleife immer von high nach low wechseln und dein
> Messgerät nicht so schnell ist?

Die Schleife besteht lediglich aus einem Sprung zu sich selbst, warum 
also sollte sich der Zutand des Ausgangs verändern?

In der Tat läßt sich aber eine Spannung um die 3 Volt messen, wenn die 
LEDs so angeschlossen sind UND der Ausgang hochohmig ist (selbst 
nachvollzogen). Bei einem hochohmigen Port ohne Beschaltung geht die 
Spannung gegen Null.

von Joachim B. (jar)


Lesenswert?

Icke ®. schrieb:
> In der Tat läßt sich aber eine Spannung um die 3 Volt messen, wenn die
> LEDs so angeschlossen sind UND der Ausgang hochohmig ist

dann muss ne Unterbrechung sein, dazu passt aber nicht das er scheinbar 
den Port B auf out setzt und auf high, da erwarte ich an Port B nahe an 
VCC.

Das hier macht mich noch stutzig:
Marc F. schrieb:
> Zusätzlich habe ich noch mein Oszilloskop jeweils zwischen LED und
> uP-Ausgang geklemmt.

den Oszi in Reihe zu Port und LED? mit seinen 1M bis 10M Ri was soll das 
werden?

: Bearbeitet durch User
von Icke ®. (49636b65)


Lesenswert?

Joachim B. schrieb:
> dann muss ne Unterbrechung sein, dazu passt aber nicht das er scheinbar
> den Port B auf out setzt und auf high, da erwarte ich an Port B nahe an
> VCC.

Davon ausgehend, daß der µC funktioniert und das Programm tatsächlich so 
geflasht wurde, müßte am Hardwareaufbau irgendwas faul sein. Deswegen 
soll er das überprüfen und ein Foto einstellen.

von Marc F. (cyberfreak1992)


Angehängte Dateien:

Lesenswert?

Guten Morgen, ihr fleissigen! :)

Vorweg: Funktionieren tut noch nix.

Es hat jetzt etwas gedauert, bis ich mich wieder voll diesem Projekt 
zuwenden konnte. Dafür gibt es von mir aber auch nur genau beschriebene 
Posts. ;)

Vielen Dank für die vielen Vorschläge, in Gänze habe ich wohl alles, was 
in den Rückmeldungen erwähnt wurde, umgesetzt.

1. Das Schema
Wie richtig bemerkt, stimmte das Schema nicht. Darum gibts jetzt das 
neue, korrigierte und verbesserte Schema als Anhang.

Ebenfalls dabei ist ein Pinout meines AVRISP und ein "Beweisfoto", das 
die Verbindung zwischen ISP und Breadboard zeigt; hier steckt der Fehler 
meines wissens nicht.

2. Der Aufbau
Wie ihr dem Bild (Anhang) entnehmen könnt, habe ich ein relativ grosses 
Breadboard. Zum Zeitpunkt meines ersten Posts hatte ich daher auch noch 
eine gänzlich andere Schaltung im "diagonal gegenüberliegenden 
Quadranten" des Boards. Bitte nicht schlagen, ich weiss, das gehört sich 
so nicht.

Da "kontrolliere den Aufbau" eine der beliebtesten Rückmeldungen war, 
beschloss ich dann aber auch ziemlich schnell , das Board komplett zu 
leeren und die Schaltung mit dem neuen, korrigierten Schema frisch 
aufzubauen.

Ich persönlich mag es nicht, wenn die LEDs zu hell zünden, wenn sies 
nicht müssen, daher habe ich die Widerstände so hoch dimensioniert und 
zur zufridenheit zwischen VCC und Masse getestet. Bevor ich hier aber 
eine unnötig langwierige Diskussion vom Zaun breche: Wie im Schema 
ersichtlich habe ich natürlich die Vorwiderstände gewechselt. Sind jetzt 
je 100 Ohm, rein rechnerisch könnte ich auch noch auf je 75 Ohm runter. 
Leuchten sie halt hell, wenn sie es dann mal tun sollten.

Eine weitere, nicht speziell gekennzeichnete Änderung stellt die 
Stromversorgung dar, welche jetzt durch ein Labornetzgerät erfolgt.

Falls sich einige Fragen, was "dieser grosse Kondesator, der nicht im 
Schema ist" auf dem Breadboard zu suchen hat: Es handelt um einen C 
2200uF/25V zwischen VCC und Masse und um eine Gewohnheit von mir.
Ich setze mittlerweile immer, trotz Labornetzgerät einen grossen 
Kondesator ein, um einen bequemen Erdkontakt für die Oszilloskop-Klemme 
zu haben.

3. Der Flash-Versuch und das ernüchternde Ergebnis
So habe ich mit neuem Aufbau und frischem Mut noch einmal das Gleiche 
wie im ersten Post versucht.

Atmel Studio erkennt den Controller, ich kann darauf zugreifen und ihn 
auslesen, soweit alles in Ordnung aber auch nicht weniger 
vielversprechend als zu Beginn.

Verändern des Binärwertes von "0b00000000" zu "0b11111111" bzw. alle 
möglichen Kombinationen dazwischen, brachten keine sicht- oder messbare 
änderung an PB0 oder PB1.

In meinem Initialpost befindet sich im Anhang die Datei 
"flashing_blur.png"; sichtbar dort ist der MouseOver-Effekt auf der 
Schaltfläche "Program".

Ganz explizit gefragt, bevor hier noch etwas in einer 
Selbstverständlichkeit untergeht: Sollte nach drücken des Buttons 
"Program" die LED quasi "direkt" leuchten oder muss noch irgend etwas 
getan werden?

Das bringt mich zum Ende meines Posts und "Lateins".
Ich freue mich jetzt schon auf euer Feedback und bin zuversichtlich, 
dass meine Anfängerprobleme lösbar sind! :)

Liebe Grüsse,


Cyberfreak1992


PS: @elux
Die AVR-ASM-Tutorial-Seite kenne ich bereits, danke. Ich habe mich auch 
schon mal etwas eingelesen. Irgendwo zwischen den Kapiteln "Werkzeuge" 
und "Register" habe ich allerdigs aufgehört. Ich habe mir zum Ziel 
gesetzt zuerst einmal eine funktioniernde programmierte Schaltung zu 
haben, bzw. mich an den Beispielen, die hier im Tutorial erwähnt werden 
(insbes. LEDs anzünden und Taster auslesen) zu versuchen. Dabei reicht 
es mir, zu verstehen, was der Code macht, ohne die ganze Sprache zu 
können. Richtig in Assembler "eingraben" werde ich mich wohl erst, wenn 
sich auf Hardwareebene erfolge zeigen.

von Mitleser (Gast)


Lesenswert?

Hallo,

hängt dein RESET an GND???

von Mitleser (Gast)


Lesenswert?

Trenne mal auf und löte nen C dazwischen. Ich denke mal, dass sich dein 
Controller ständig resetet?!

von Marc F. (cyberfreak1992)


Lesenswert?

Nein, wie im Schema bezeichnet:
Vom Reset-Pin über einen 10k-PullUp-Widerstand an VCC und ein 
47nF-Kondensator an Masse.

Es hat bereits einen 100nF-Kondensator zwischen VCC und Masse (Pin 7, 
8);
dieser Wert wird auch im Tutorial vorgeschlagen.

/Ironie:ON

Was möchtest du denn belötet sehen? :D
Das Breadboard oder doch lieber direkt die DIE des uP? ;)
- Etwas Spass muss sein <:¬P

/Ironie:OFF

Liebe Grüsse,


Cyberfreak1992

von Mitleser (Gast)


Lesenswert?

Hallo,

upps. Ich hatte den 47nF zwischen des Pins nicht gesehen...

von Toni (Gast)


Lesenswert?

Hallo,

den C am RESET auf Ground brauchst Du nicht! Nur den 10k an VCC.
Was aber noch sein könnte: Schwingt dein Quarz überhaupt?
Setz einfach mal die Fuses wieder auf interne Clock.

Gruß

von spess53 (Gast)


Lesenswert?

Hi

>Was aber noch sein könnte: Schwingt dein Quarz überhaupt?
>Setz einfach mal die Fuses wieder auf interne Clock.

Wenn der Quarz nicht schwingen würde, wäre der AVR tot.

MfG Spess

von Marc F. (cyberfreak1992)


Lesenswert?

Hallo Toni!

Ich habe vor einiger Zeit mal das Oszilloskop probehalber an einen 
Quarzanschluss gepinnt, um genau das heraus zu finden. Der schwingt brav 
mit f=4.000... MHz :)

Gruss

von Pausenfrickler (Gast)


Lesenswert?

Marc F. schrieb:
> Verändern des Binärwertes von "0b00000000" zu "0b11111111" bzw. alle
> möglichen Kombinationen dazwischen, brachten keine sicht- oder messbare
> änderung an PB0 oder PB1.

Für die Beschaltung als Stromsenke (deine LEDs sind ja an VCC) musst du 
DDR setzen und PORT löschen, also:

DDRBx  = 1
PORTBx = 0

In diesem Zustand müssen die LEDs leuchten.

von Bestromer (Gast)


Lesenswert?

....sehr viele Steckbrücken ;-) .....mir ist da ins Auge gefallen,das 
Deine Spannungsversorgung von der Mittelschiene zwar auf die nächsten 
Steckbrücken gehen(sollen), aber die Brücke der positiven Leitung um ein 
Raster versetzt an die nächste Brücke geht und somit keinen Kontakt 
hat??

von Bestromer (Gast)


Lesenswert?

....sehe gerade,das parallel noch mal abgegriffen wurde...das solltest 
Du unbedingt ändern,da wird man ja ganz irre :)

von Marc F. (cyberfreak1992)


Lesenswert?

Irgendwie befürchte ich, dass hier die "Wall of Text" nicht so beliebt 
ist.
... Soweit ich verstanden habe, ist eine wichtige Regel "erst lesen, 
dann posten!"

So weit habe ich Assebler ja auch schon verstanden, mir fehlen bloss die 
Richtigen bezeichnungen, da ich mich noch nicht genauer mit der Sprache 
befasst hab und in Sachen uP und Programmierung erst an der Oberfläche 
kratze.

Also, jedenfalls noch einmal das Selbe, der Code:

Denn Quellcode habe ich von hier, genauer: 
AVR-Tutorial: IO-Grundlagen.
Ich gehe mal davon aus, dass dieser Code soweit stimmt, was die 
"Rechtschreibung" angeht.
1
 .include "m8def.inc"
2
 
3
         ldi r16, 0xFF          ; Zeile 1
4
         out DDRB, r16          ; Zeile 2
5
         
6
         ldi r16, 0b00000001    ; Zeile 3
7
         out PORTB, r16         ; Zeile 4
8
9
ende:                           ; Zeile 5
10
rjmp ende                       ; Zeile 6

Jetzt, hier mein begrenztes Code-Verstädtnis. Bitte Nachsicht wo ein 
Fachausdruck nicht stimmt, der Sinn sollte bei so einem kurzen, 
einfachen Code ja sicher erschliessbar sein.


Zu Zeile 1:
Mit dieser Anweisung wird das Register 16 mit der Konstanten "0xFF" bzw. 
"0b11111111" geladen. Dieser Zwischenschritt ist nötig, da Werte über 
Register an die betreffende(n) Stelle(n) ausgegeben werden müssen bzw. 
die Wertübergabe "nicht direkt" erfolgen kann.

Zu Zeile 2:
Durch diese Anweisung wird die Konstante 0xFF (0b11111111) via Register 
16 an DDR* (geraten: Data Direction Register) ausgegeben, wobei das * 
für den entsprechenden Port A, B, C, D steht, der gesetzt wird.  Ein 1 
macht aus dem Entsprechenden Port einen Ausgang, eine 0 einen Eingang. 
Daher auch werden mit der konstanten 0xFF einfacher Weise einfach mal 
alle Bits / Pins zum Ausgang erklärt. Das LSB entspricht hierbei dem 
entsprechenden Port Pin 0, das MSB Port Pin 7 (sofern vorhanden).

Zu Zeile 3:
In diesem Zwischenschritt wird die Konstante mit der Konfiguration der 
(nun) Ausgänge überschrieben. Dabei wird festgelegt, ob der zum Bit 
gehörige Pin (LSB: PB0) auf High oder Low geschalten wird.

Ob dieser Wert nun "0b11111100", "0b11111111" oder beliebig anders ist; 
beim erneuten Flashen mit Anpassung dieses Wertes sollte sich an den 
Ausgängen doch etwas Ändern, oder? Diese Veränderung blieb bislang aus.

Zu Zeile 4:
Hier wird der im Register 16 gespeicherte Wert an den entsprechenden 
Port (B) gesendet, also die entsprechenden "Bits am Port löschen", was 
zum leuchten der jeweiligen LEDs führen sollte.

Zu Zeile 5 und 6:
Diese Endlosschleife wird im Tutorial eingesetzt. Was genau die Funktion
ist, entzieht sich jedoch noch meiner Kenntnis.



Jetzt noch mal das wichtigste zum Schluss, für alle TLDR-Menschen:

Ganz explizit gefragt, bevor hier noch etwas in einer
Selbstverständlichkeit untergeht: Sollte nach drücken des Buttons
"Program" die LED quasi "direkt" leuchten oder muss noch irgend etwas
getan werden?

Für was braucht es die Endlosscheife im AVR-Code?

Sieht sonst noch jemand einen Fehler?


Vielen Dank und liebe Grüsse,
Cyberfreak1992

PS@Bestromer:
VCC und Masse habe ich so, seit dem ich das Steckbrett habe. Sieht auf 
den ersten Blick etwas verwirrend aus, hab es aber von Beginn an so 
gemacht, darum hab' ich mich daran gewönt und finde es (in meinen Augen) 
übersichtlich; hatte auch noch nie Probleme damit.
Allerdings wollte ich auch noch nie einen uP programmieren.. :D

Was meinst du mit parallel abgreifen?
Wie sollte das denn deiner Meinung nach aussehen? (Da besteht sicher 
noch Verbesserungspotetial bei mir :P )

von Joachim B. (jar)


Lesenswert?

Marc F. schrieb:
> ldi r16, 0b00000001 ; 0b00000001 in r16 laden (legt die
> Ausgangskonfigoration in r16 ab)
>          out PORTB, r16      ; r16 ins IO-Register PORTB ausgeben, PB0
> wird dadurch low

grrrr.....

ist das noch immer so bei dir?

wieso soll ein Port (out) low werden wenn du 1 reinschreibst?
wenn die LED an VCC hängt kann sie bei high nicht leuchten.

ist dir das denn jetzt klar?

von Icke ®. (49636b65)


Lesenswert?

Für mich sieht das so aus, als ob VCC und GND an den Pins 7 und 8 
vertauscht sind. Jedenfalls, wenn du dein Farbschema gelb-Masse/grün-VCC 
dort auch beibehalten hast. Wohin die Drähte führen, wird im Bild vom 
Elko verdeckt. Allerdings dürfte dann auch das Flashen nicht möglich 
sein.

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Marc F. schrieb:
> AVR_ISP_link.jpg

2448 x 2803 Pixel für einen sechspoligen Stecker ist schon beachtlich 
;-)

Versuch's mal mit etwas weniger Lötzinn

> aufbau_breadboard.jpg
Schade, dass die entscheidenden Versorgungsspannungsanschlüsse durch 
Elko bzw. Prüfspitze verdeckt sind und man nur raten kann. Beim 
Vertauschen von VCC (7) und Gnd (8) stehen die Chancen nicht schlecht, 
dass der µC das gar nicht mag.

von Ich (Gast)


Lesenswert?

Marc F. schrieb:
> Ob dieser Wert nun "0b11111100", "0b11111111" oder beliebig anders ist;
> beim erneuten Flashen mit Anpassung dieses Wertes sollte sich an den
> Ausgängen doch etwas Ändern, oder? Diese Veränderung blieb bislang aus.

Dran denken: Bitangaben wie 0b11111111 sind GCC spezifischer Code. mit 
0xFF wirds portabel.

> Zu Zeile 4:
> Hier wird der im Register 16 gespeicherte Wert an den entsprechenden
> Port (B) gesendet, also die entsprechenden "Bits am Port löschen", was
> zum leuchten der jeweiligen LEDs führen sollte.

Auf deinem Schaltplan leuchtet mit deinem Code die rechte LED, die linke 
nicht.

> Ganz explizit gefragt, bevor hier noch etwas in einer
> Selbstverständlichkeit untergeht: Sollte nach drücken des Buttons
> "Program" die LED quasi "direkt" leuchten oder muss noch irgend etwas
> getan werden?

Wenn geflasht ist gehts direkt los.

> Für was braucht es die Endlosscheife im AVR-Code?

Damit sich der Controller nicht ständig resettet.

von Ich (Gast)


Lesenswert?

Marc F. schrieb:
> Sieht sonst noch jemand einen Fehler?

Die LEDs hast du richtig herum auf dem Steckbrett? (runde Seite an deine 
Versorgungsschiene, die flache richtung uC)

von Toni (Gast)


Angehängte Dateien:

Lesenswert?

Mach doch einfach mal eine Minimalbeschaltung nur mit deinen beiden LEDs
und dem ISP.
!!! Aber vorher die Fuses wider auf Default (Low: 0xE1, High: 0xD9) 
setzen!
Wenn Du PORTB = 0x01 bzw. PORTB = 0x02 setzt, sollte eine der beiden 
LEDs Leuchten.

von Ich (Gast)


Lesenswert?

Toni schrieb:
> Mach doch einfach mal eine Minimalbeschaltung nur mit deinen
> beiden LEDs
> und dem ISP.

Das hat er doch schon...

> !!! Aber vorher die Fuses wider auf Default (Low: 0xE1, High: 0xD9)
> setzen!
> Wenn Du PORTB = 0x01 bzw. PORTB = 0x02 setzt, sollte eine der beiden
> LEDs Leuchten.

Genau

von Toni R. (torei55)


Lesenswert?

Ich schrieb:
> Das hat er doch schon...

Eben nicht!

von Joachim B. (jar)


Lesenswert?

Marc F. schrieb:
> Vorweg: Funktionieren tut noch nix.

es nervt:

im Plan geht Anode LED nach VCC und dann kann sie nur leuchten bei Port 
auf OUT und Port low also nicht gesetzt.

Im Steckbrett sieht man das ein Bein der LED nach GND zu gehen scheint.

Da wundert sich der TO und sucht Fehler? immer noch und beantwortet 
keine Fragen?

von Malte S. (maltest)


Lesenswert?

Joachim B. schrieb:
> Im Steckbrett sieht man das ein Bein der LED nach GND zu gehen scheint.

Guck nochmal.

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.