www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfänger - einfacher Aufbau mit LEDs und ATmega8 geht nicht


Autor: chris5787 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich arbeite im Moment das Tutorial auf diesen Seiten durch und habe 
leider bei den ersten Versuchen mit den LEDs und dann auch mit dem LCD 
keinen Erfolg gehabt. Ich habe mir dann gedacht ich schreibe mir ein 
ganz einfaches Porgramm, um zu testen ob wenigstens das funktioniert.
Das Programm soll ganz simpel schauen, wo am Eingang B Spannungen 
anliegen und soll diese dann einfach auf die Ausgänge C übertragen. 
Also, wenn an PB4 eine Spannung anliegt, dann soll das dazu führen, dass 
auch an PC4 eine Spannung anliegt. PC2 soll immer ohne Spannung bleiben.
Das Ergebnis ist, dass zwar an PC2 tatsächlich nie die LED leuchtet, an 
den anderen C-Ausgängen jedoch immer, unabhängig vom Zustand der 
B-Eingänge.

Ich verwende einen ATmega8, diesen Aufbau zur Stromversorgung
http://www.mikrocontroller.net/articles/Bild:Avr-s...
und diesen ISP-Programmer
http://s-huehn.de/elektronik/avr-prog/avr-seriell.gif
und zwar über einen USB-Seriell-Wandler (was abartig langsam geht :D).
Den Programmer entferne ich, nachdem ich das Programm übertragen habe, 
die LEDs sind alle mit Vorwiderstand an GND angeschlossen und 
funkionieren.

War sehr blöd, als das einfache Programm auch nicht funkioniert hat :( 
aber ich hoffe ihr könnt mir helfen ;)

Autor: chris5787 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ergänzung:

Ich verwende PonyProg zum Übertragen des Programms, zum Erstellen der 
HEX-Datei verwende ich AVRStudio4.

Autor: Micha R. (michaavr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mal einen auszug aus deinem programm hier rein kopieren?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ chris5787 (Gast)

>War sehr blöd, als das einfache Programm auch nicht funkioniert hat :(
>aber ich hoffe ihr könnt mir helfen ;)

Dein Programm ist erstmal so OK. Wie legst du denn Spannung an dein PB4? 
Verbindest du es mit einem Draht mit GND bzw. VCC? Wenn ja, dann sollte 
es laufen.

Anderenfalls

AVR-Tutorial: IO-Grundlagen

MFG
Falk

Autor: chris5787 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@michaavr: kompletter Code ist beim ersten Post als Anhang dabei.

@falk:
Ja, ich benutze einfach einen Draht, um Spannung an die B-Eingänge zu 
legen.
Was vielleicht noch wichtig ist: Ich habe das ganze auf ein Steckbrett 
aufgebaut, außer dem ISP-Programmer und der Spannungsversorgung, die 
wurden gelötet. Die 5-V-Spannungsversorgung ist diese hier
http://www.mikrocontroller.net/articles/Bild:V_Regler.gif

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
chris5787 wrote:
> @michaavr: kompletter Code ist beim ersten Post als Anhang dabei.
>
> @falk:
> Ja, ich benutze einfach einen Draht, um Spannung an die B-Eingänge zu
> legen.

Ich interpretiere das mal so, dass du mit einem Draht den
Pin mit Vcc (also mit +) verbindest. Es mnuss aber anders rum sein:
Du musst mit einer Drahtbrücke nach Masse (also -) verbinden.

Autor: chris5787 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber warum? Zum Beispiel soll an PC1 die LED leuchten. Dafür verbinde 
ich PB1 mit Vcc, dann wird an dieser Stelle eine 1 eingelesen. Diese 1 
wird dann an PC1 wieder ausgegeben, dort sollten dann also +5V anliegen. 
Und dann müsste die LED leuchten, denn diese ist folgendermaßen an PC1 
angeschlossen:
PC1 -- LED -- Widerstand -- GND
Müsste doch so funktionieren oder?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
chris5787 wrote:
> Aber warum? Zum Beispiel soll an PC1 die LED leuchten. Dafür verbinde
> ich PB1 mit Vcc, dann wird an dieser Stelle eine 1 eingelesen. Diese 1
> wird dann an PC1 wieder ausgegeben, dort sollten dann also +5V anliegen.
> Und dann müsste die LED leuchten, denn diese ist folgendermaßen an PC1
> angeschlossen:
> PC1 -- LED -- Widerstand -- GND
> Müsste doch so funktionieren oder?

Zwischen PB1 und Vcc würde ich noch einen Widerstand schalten.

Wenn du zufällig PB1 mal aus Ausgang geschaltet hast und LOW ausgibst, 
hast du ohne Widerstand einen Kurzen.

Wenn du zufällig am µC keine Vcc Spannung hast aber am PB1, quälst du 
die Schutzdioden des µC mit einem Kurzen.

In deiner "High active" LED Schaltung muss die LED mit der Anode (langes 
beinchen) an PC1 angeschlossen sein.

Soweit zur Hardware. Wenn trotzdem es nicht klappt, kann es auch an der 
Software liegen.

In deinem Code.txt oben (den ich unten etwas lesbarer umgeschrieben 
habe) hast du an PORTB alle Pull-Ups aktiviert. Du hast an PINB immer 
logisch HIGH, egal ob PB1 an Vcc angeschlossen ist oder frei in der Luft 
bambelt. Nur wenn du PB1 mit GND verbindest, bekommst du LOW als Eingabe 
(s. Antwort von Karl heinz Buchegger).

.include "m8def.inc"

.org 0x0000
   rjmp reset

reset:
   ; Stack vorbereiten
   ldi R16, LOW(RAMEND)
   out SPL, R16
   ldi R16, HIGH(RAMEND)
   out SPH, R16

   ; PINB 0-7 Eingang
   ldi R16, 0x00
   out DDRB, R16

   ; PORTB 0-7 Pull-Ups aktivieren
   ldi R16, 0xFF
   out PORTB, R16

   ; PORTC 0-7 Ausgang
   ldi R16, 0xFF
   out DDRC, R16

loop:
   in R17, PINB

; alt, geht nicht
;   andi R17, 0b11111011 ; Wo steht die 0 ??? => PB2 manipulieren?

; Alternative1: PC1 toggeln durch PB1
   ldi R16, 0b00000010
   eor r17, r16

; Alternative2: PC1 folgt PB1
;   andi R17, 0b00000010
 
   out PORTC, R17
   rjmp loop

; ENDE


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.