LED ATMEGA8 schnell ansteuern

Gast #1087631
Lesenswert?

[c]GND ---> Pin8 vom M8
Pin22 vom M8 ---> Vorwiderstand
Vorwiderstand ---> LED
LED ---> VCC

schneller und einfacher gehts nicht und man muss nichtmal programmieren.
[c]
Und die Programmierung ist dann die im Tutorial in i/O Grundlagen 
beschriebene?

Danke

Flo
Gast #1087678
Lesenswert?

Ich hatte mal ein wenig aufm Computer mit rumgespielt aber auf dieser 
Plattform keinen Nutzen erkannt. Ich konnte halt so ein bissl die 
Grundlagen nicht mit GUI oder so.

Den Controller möcht ich aber gerne in ASM programmieren

Flo
Gast #1087695
Lesenswert?

Um ne PropClock

Aber jetzt bitte keine Tipps wie "Schau da und da", "Oder dort".

Ich würd die gerne selber machen und selber programmieren, keine 
vorgefertigten Sachen nehmen. Sind 8Mhz in Ordnung?

Flo
Gast #1087713
Lesenswert?

Erst tutorial durcharbeiten, dann fragen zu LEDs und zur propeller clock 
stellen. Macht ansonsten keinen Sinn. Und du solltest unbedingt von 
anderen propeller clocks abschauen (zumindest die Hardware), sich sowas 
als Anfänger selbst aus zu denken ist nicht so einfach.
Gast #1087715
Lesenswert?

"...Ich würd die gerne selber machen und selber programmieren, keine
vorgefertigten Sachen nehmen. Sind 8Mhz in Ordnung?"

hmm, ok, dann überlege es selbst, damit du auch ein Gefühl dafür 
bekommst. Stichworte, die überlegenswert dabei sind:
* Umdrehungsgeschwindigkeit
* "Anzahl der Pixel", die du darstellen willst (in beiden Richtungen!)

Das zusammengewürfelt und runtergerechnet auf einen Pixel ergibt das, 
was du suchst bzw. wie schnell dein MC sein muss (das ist das gleiche, 
wie beim Cube...;-)).

Uwe
Gast #1087736
Lesenswert?

Hier ist mal mein aktueller Schaltplan. Könntet ihr bitte ganz genau 
überprüfen, ob er stimmt? Und wie kann ich Anschlüsse VCC+ zuweisen? 
Also dieser Pfeil den es da gibt? Wie mach ich den? Die langen linien 
sind nämlich ein bissl unpraktisch

@∂er andre Uwe
Ich hab keinen Plan wie man das ausrechnet, und ich weiß auch nicht wie 
viele Umdrehngen der Motor hat... (Ist aus nem DiscMan)

Danke Flo

PS: Ne ISP SChnittstelle kommt noch dran
Angehängte Dateien:
#1087741
Lesenswert?

@ Flo (Gast)

>Hier ist mal mein aktueller Schaltplan. Könntet ihr bitte ganz genau
>überprüfen, ob er stimmt?

Deine LEDs sind verpolt.

> Und wie kann ich Anschlüsse VCC+ zuweisen?

Mit dem Vcc Symbol. Das ist aber kein Eagle oder? Dort wäre es in der 
Bibliothek Supply.

>Ich hab keinen Plan wie man das ausrechnet,

Dan musst du wohl doch dich mal bei bestehenden Projekten informieren 
;-)

MFG
Falk
Gast #1087743
Lesenswert?

"Ich hab keinen Plan wie man das ausrechnet, und ich weiß auch nicht wie
viele Umdrehngen der Motor hat... (Ist aus nem DiscMan)"

Genau das solltest du wissen und auch in deiner Schaltung 
berücksichtigen, sonst wirst du kein sinnvolles Bild hinbekommen! 
Überlege einfach mal, wie den der "bildliche Effekt" zustande kommt!

Uwe
Gast #1087756
Lesenswert?

... und wie bringst du das dann in Zusammenhang mit/in deinem noch zu 
schreibenden Programm?

Die Drehgeschwindigkeit deines Motors muss gross genug sein, dass der 
Effekt eines statischen Bildes entsteht. Dein Programm muss 
gewährleisten, dass die LEDs so angesteuert werden, dass der Effekt 
eines stehenden Bildes entsteht (und dies ist im Zusammenhang mit der 
Umdrehungsgeschwindigkeit zu sehen).

Und nun überlege einfach mal! Ansonsten bezweifle ich auch, dass es 
sinnvoll ist, dass du8 mit einem solchen Projekt weiter machst...

Uwe
Gast #1087816
Lesenswert?

ja, die kondensatoren stimmen jetzt.
aber da du pro gesamtem port einen gewissen gesamtstrom nicht 
übersteigen darfst, würde ich dir empfehlen, einen treiber für deine 
leds zu benutzen. der gute alte uln2803 drängt sich förmlich auf.
das ist ein darlington-transistor-array mit integrierten 
vorwiderständen. den musst du einfach nur in die leitung schalten.
http://www.datasheetcatalog.org/datasheets/105/366825_DS.pdf
#1088286
Lesenswert?

@ Flo (Gast)

>Gibts den in Eagle?

Sicher.

> Google spuckt nichts aus...

Google weiss Gott sei Dank nicht alles.

Schau mal in die Bibliothek "ULN-UDN"

(Wer hätte DAS gedacht?)

MFg
Falk

P.S. Man kann auch ICs suchen, indem man bei ADD in dem Fenster uunten 
links den Namen eingibt. Aber Vorsicht, reichlich mit Platzhaltern * 
arbeiten, sonst werden nur EXAKTE Übereinstimmungen gefunden.
Gast #1088338
Lesenswert?

Ich hab den Schaltplan noch mal ein wenig modifiziert und ne ISP 
Schnitstelle hinzugefügt. Stimmt die Beschaltung. Und wie kann ich die 
RESET Linie (PIN5 an RESET) mit so nem Pfeil machen, dass der Schaltplan 
übersichtlich bleibt aber der AUtorouter weiß, dass das ne Verbindung 
hin muss?

Danke Flo

PS: Ist jetzt auch ein anderer MEGA8 (DIP Gehäuse)
Angehängte Dateien:
#1088482
Lesenswert?

@  Flo (Gast)

>Und was muss an CD+ dran?? das bleibt frei oder?

Ja, das braucht man nur bei Relais.

>Schnitstelle hinzugefügt. Stimmt die Beschaltung.

Vcc fehlt an Pin2 des ISP Steckers.
Es fehlen die Vorwiderstände der LEDs.

> Und wie kann ich die
>RESET Linie (PIN5 an RESET) mit so nem Pfeil machen, dass der Schaltplan
>übersichtlich bleibt

Gar nicht, die Symbole sind nur für Versorgungsspannungen etc. Man kann 
aber ein Stück Netz zeichnen und einen Namen vergeben. Netze mit 
gleichen Namen werden dann verbunden.

MFG
Falk
Gast #1088548
Lesenswert?

Flo wrote:
> Und was muss an CD+ dran?? das bleibt frei oder?
da du ja nicht alles vorgekaut haben wolltest, bekommst du hier nur 
folgenden google-tipp: freilaufdiode

> Ich hab den Schaltplan noch mal ein wenig modifiziert und ne ISP
ich würde die vorwiderstände für die leds wieder reinmodifizieren ^^
wenn du nicht so genau weißt, warum: 
http://www.elektronik-kompendium.de/sites/slt/0208031.htm

> Schnitstelle hinzugefügt. Stimmt die Beschaltung. Und wie kann ich die
kann praktisch sein, ist aber nicht unbedingt notwendig, da du ja den 
atmega in einen sockel setzen kannst - würd ich dir auch für den 
fehlerfall empfehlen.
wenn dir das routen zu schwer fällt, lass sie einfach weg oder bau sie 
erst später wieder ein.

> RESET Linie (PIN5 an RESET) mit so nem Pfeil machen, dass der Schaltplan
zeichne daran einfach ein stück netz. damit hat dieser sog. knoten einen 
namen. eagle vergibt hier N$###. jetzt zeichnest du auch an die 
isp-schnittstelle ein stück net und benennst das wie das stück am 
reset-pin. den namen kannst du frei wählen. sinnvoll ist es, mit dem 
label werkzeug die spezielle benenung sichtbar zu machen.

> übersichtlich bleibt aber der AUtorouter weiß, dass das ne Verbindung
> hin muss?
über eagle und autorouter findest du hier genügend meinungen, die dir 
davon abraten sollten. für so ein simples layout solltest du ihn auch 
auf keinen fall brauchen.

noch was ganz andres: findest du nicht, dass dein atmega wissen sollte, 
wie schnell er durch die luft fliegt?
Gast #1089971
Lesenswert?

Nach dem ganzen Problem bin ich bei diesem Projekt gelandet, welches ich 
gerne nachbauen würde, wenn ihr mir ein bissl unter die Arme greift:

http://www.microsyl.com/

->Auf PropClock drücken

Das erste Problem hab ich allerdings schon mit dem Quellcode. Ich hab 
versucht per Make zu kompilieren:

Mein Make:

# Name: Makefile
# Author: <insert your name here>
# Copyright: <insert your copyright message here>
# License: <insert your license reference here>

# This is a prototype Makefile. Modify it according to your needs.
# You should at least check the settings for
# DEVICE ....... The AVR device you compile for
# CLOCK ........ Target AVR clock rate in Hertz
# OBJECTS ...... The object files created from your source files. This 
list is
#                usually the same as the list of source files with 
suffix ".o".
# PROGRAMMER ... Options to avrdude which define the hardware you use 
for
#                uploading to the AVR and the interface where this 
hardware
#                is connected.
# FUSES ........ Parameters for avrdude to flash the fuses 
appropriately.

DEVICE     = atmega8
CLOCK      = 8000000
PROGRAMMER = -c USBasp
OBJECTS    = main.o
FUSES      = -U hfuse:w:0xd9:m -U lfuse:w:0x24:m
# ATMega8 fuse bits (fuse bits for other devices are different!):
# Example for 8 MHz internal oscillator
# Fuse high byte:
# 0xd9 = 1 1 0 1   1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000)
#        ^ ^ ^ ^   ^ ^ ^------ BOOTSZ0
#        | | | |   | +-------- BOOTSZ1
#        | | | |   +---------- EESAVE (set to 0 to preserve EEPROM over 
chip erase)
#        | | | +-------------- CKOPT (clock option, depends on 
oscillator type)
#        | | +---------------- SPIEN (if set to 1, serial programming is 
disabled)
#        | +------------------ WDTON (if set to 0, watchdog is always 
on)
#        +-------------------- RSTDISBL (if set to 0, RESET pin is 
disabled)
# Fuse low byte:
# 0x24 = 0 0 1 0   0 1 0 0
#        ^ ^ \ /   \--+--/
#        | |  |       +------- CKSEL 3..0 (8M internal RC)
#        | |  +--------------- SUT 1..0 (slowly rising power)
#        | +------------------ BODEN (if 0, brown-out detector is 
enabled)
#        +-------------------- BODLEVEL (if 0: 4V, if 1: 2.7V)

# Example for 12 MHz external crystal:
# Fuse high byte:
# 0xc9 = 1 1 0 0   1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000)
#        ^ ^ ^ ^   ^ ^ ^------ BOOTSZ0
#        | | | |   | +-------- BOOTSZ1
#        | | | |   +---------- EESAVE (set to 0 to preserve EEPROM over 
chip erase)
#        | | | +-------------- CKOPT (clock option, depends on 
oscillator type)
#        | | +---------------- SPIEN (if set to 1, serial programming is 
disabled)
#        | +------------------ WDTON (if set to 0, watchdog is always 
on)
#        +-------------------- RSTDISBL (if set to 0, RESET pin is 
disabled)
# Fuse low byte:
# 0x9f = 1 0 0 1   1 1 1 1
#        ^ ^ \ /   \--+--/
#        | |  |       +------- CKSEL 3..0 (external >8M crystal)
#        | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
#        | +------------------ BODEN (if 0, brown-out detector is 
enabled)
#        +-------------------- BODLEVEL (if 0: 4V, if 1: 2.7V)


# Tune the lines below only if you know what you are doing:

AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE)
COMPILE = avr-gcc -Wall -Os -DF_CPU=$(CLOCK) -mmcu=$(DEVICE)

# symbolic targets:
all:  main.hex

.c.o:
  $(COMPILE) -c $< -o $@

.S.o:
  $(COMPILE) -x assembler-with-cpp -c $< -o $@
# "-x assembler-with-cpp" should not be necessary since this is the 
default
# file type for the .S (with capital S) extension. However, upper case
# characters are not always preserved on Windows. To ensure WinAVR
# compatibility define the file type manually.

.c.s:
  $(COMPILE) -S $< -o $@

flash:  all
  $(AVRDUDE) -U flash:w:main.hex:i

fuse:
  $(AVRDUDE) $(FUSES)

# Xcode uses the Makefile targets "", "clean" and "install"
install: flash fuse

# if you use a bootloader, change the command below appropriately:
load: all
  bootloadHID main.hex

clean:
  rm -f main.hex main.elf $(OBJECTS)

# file targets:
main.elf: $(OBJECTS)
  $(COMPILE) -o main.elf $(OBJECTS)

main.hex: main.elf
  rm -f main.hex
  avr-objcopy -j .text -j .data -O ihex main.elf main.hex
# If you have an EEPROM section, you must also create a hex file for the
# EEPROM and add it to the "flash" target.

# Targets for code debugging and analysis:
disasm:  main.elf
  avr-objdump -d main.elf

cpp:
  $(COMPILE) -E main.c


Wo liegt der Fehler? Sind die FuseBits richtig? und der ControllerTyp? 
Ich hab schon recherchiert aber zu dem Thema nichts passendes 
gefunden...

Danke

Flo
Gast #1089975
Lesenswert?

aaalso doch nachbaun ^^

aber erst mal: wo liegt WELCHER fehler?
das makefile kann auch nötig sein, aber viel viel nötiger ist die 
fehlermeldung selbst.

zum berechnen der fusewerte finde ich das avr-studio recht nett.
auf den ersten blick siehts nicht schlecht aus.
Gast #1089990
Lesenswert?

Hier die Fehlermeldung (ist ziemlich lang)
Wo sind beim avr MacPack die Bibliotheken?

Macintosh:firmware Flops$ make
avr-gcc -Wall -Os -DF_CPU=8000000 -mmcu=atmega8 -c main.c -o main.o
main.c:10:21: error: io2313v.h: No such file or directory
main.c:11:20: error: macros.h: No such file or directory
main.c:24: warning: ignoring #pragma interrupt_handler 
Crossing_interrupt
main.c:25: warning: ignoring #pragma interrupt_handler IR_interrupt
main.c:26: warning: ignoring #pragma interrupt_handler Degre_interrupt
main.c:27: warning: ignoring #pragma interrupt_handler Ticker_interrupt
main.c:88: warning: return type of 'main' is not 'int'
main.c: In function 'main':
main.c:90: error: 'WDTCR' undeclared (first use in this function)
main.c:90: error: (Each undeclared identifier is reported only once
main.c:90: error: for each function it appears in.)
main.c:92: error: 'PORTD' undeclared (first use in this function)
main.c:93: error: 'DDRD' undeclared (first use in this function)
main.c:96: error: 'MCUCR' undeclared (first use in this function)
main.c:97: error: 'GIMSK' undeclared (first use in this function)
main.c:100: error: 'TCCR0' undeclared (first use in this function)
main.c:103: error: 'TCCR1B' undeclared (first use in this function)
main.c:104: error: 'TIMSK' undeclared (first use in this function)
main.c:107: error: 'PORTB' undeclared (first use in this function)
main.c:108: error: 'DDRB' undeclared (first use in this function)
main.c:115: warning: implicit declaration of function 'SEI'
main.c: In function 'Crossing_interrupt':
main.c:245: error: 'TCNT1' undeclared (first use in this function)
main.c:256: error: 'OCR1' undeclared (first use in this function)
main.c:257: error: 'TIFR' undeclared (first use in this function)
main.c: In function 'Degre_interrupt':
main.c:276: error: 'OCR1' undeclared (first use in this function)
main.c:276: error: 'TCNT1' undeclared (first use in this function)
main.c: In function 'Display':
main.c:296: error: 'PORTB' undeclared (first use in this function)
main.c: In function 'IR_interrupt':
main.c:359: error: 'ICR1' undeclared (first use in this function)
main.c: In function 'Ticker_interrupt':
main.c:399: error: 'TCNT0' undeclared (first use in this function)
make: *** [main.o] Error 1
Macintosh:firmware Flops$ make
avr-gcc -Wall -Os -DF_CPU=8000000 -mmcu=atmega8 -c main.c -o main.o
main.c:10:25: error: avr/io2313v.h: No such file or directory
main.c:11:20: error: macros.h: No such file or directory
main.c:24: warning: ignoring #pragma interrupt_handler 
Crossing_interrupt
main.c:25: warning: ignoring #pragma interrupt_handler IR_interrupt
main.c:26: warning: ignoring #pragma interrupt_handler Degre_interrupt
main.c:27: warning: ignoring #pragma interrupt_handler Ticker_interrupt
main.c:88: warning: return type of 'main' is not 'int'
main.c: In function 'main':
main.c:90: error: 'WDTCR' undeclared (first use in this function)
main.c:90: error: (Each undeclared identifier is reported only once
main.c:90: error: for each function it appears in.)
main.c:92: error: 'PORTD' undeclared (first use in this function)
main.c:93: error: 'DDRD' undeclared (first use in this function)
main.c:96: error: 'MCUCR' undeclared (first use in this function)
main.c:97: error: 'GIMSK' undeclared (first use in this function)
main.c:100: error: 'TCCR0' undeclared (first use in this function)
main.c:103: error: 'TCCR1B' undeclared (first use in this function)
main.c:104: error: 'TIMSK' undeclared (first use in this function)
main.c:107: error: 'PORTB' undeclared (first use in this function)
main.c:108: error: 'DDRB' undeclared (first use in this function)
main.c:115: warning: implicit declaration of function 'SEI'
main.c: In function 'Crossing_interrupt':
main.c:245: error: 'TCNT1' undeclared (first use in this function)
main.c:256: error: 'OCR1' undeclared (first use in this function)
main.c:257: error: 'TIFR' undeclared (first use in this function)
main.c: In function 'Degre_interrupt':
main.c:276: error: 'OCR1' undeclared (first use in this function)
main.c:276: error: 'TCNT1' undeclared (first use in this function)
main.c: In function 'Display':
main.c:296: error: 'PORTB' undeclared (first use in this function)
main.c: In function 'IR_interrupt':
main.c:359: error: 'ICR1' undeclared (first use in this function)
main.c: In function 'Ticker_interrupt':
main.c:399: error: 'TCNT0' undeclared (first use in this function)
make: *** [main.o] Error 1
Gast #1090953
Lesenswert?

also ich hab die fehlermeldungen mal kurz überflogen... und mir kommts 
fast so vor, als hättest du kein einziges include verwendet...

standard includes wie zb:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdlib.h>
.
.
.

und sicher noch irgendwelche speziellen

lg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren