Was ist die schnellste Methode um eine LED mit einem MEGA8 anzusteuern? Ich hatte da mal ne Seite, aber ich find die nicht mehr und google spuckt auch nichts brauchbares aus. Könnt ihr mir eine Methode empfehlen? Schaltplan oder ASM Code? Hoffe ihr wisst Antwort, Danke Flo
Schnell aufbauen und programmieren - in Minuten oder schnell einschalten - in Nanosekunden ?
>Was ist die schnellste Methode um eine LED mit einem MEGA8 anzusteuern? LED plus Vorwiderstand. Pin einschalten. LED leuchtet.
Schnell einschalten. Die Zeit zum Programmieren ist nicht so wichtig. Also die schnellste Möglichkeit ne LED an und aus zu bekommen.
GND ---> Pin8 vom M8 Pin22 vom M8 ---> Vorwiderstand Vorwiderstand ---> LED LED ---> VCC schneller und einfacher gehts nicht und man muss nichtmal programmieren.
Ich denke mal du willst etwas in der Art. cbi portb,0 löscht Bit0 im I/O Register von PortB, Ausgang B0=Masse sbi portb,0 setzt Bit0 im I/O Register von PortB, Ausgang B0=Betriebsspannung
[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
@Uwe Was muss man jetzt noch drumherum schreiben und wie bekommt man die LED wieder aus? Oder ist die jetzt noch gar nicht an PS: Wenn ich nen Mega8 hab werd ich das Tutorial durcharbeiten, klappt ohne aber nicht.
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
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
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.
@ Flo (Gast) >Um ne PropClock Wie fein. >Aber jetzt bitte keine Tipps wie "Schau da und da", "Oder dort". Nöö. Klemm die LEDs einfach mit Vorwiderstand an den AVR und los gehts. Ist schnell genug. >vorgefertigten Sachen nehmen. Sind 8Mhz in Ordnung? Locker. Ein AVR ist doch kein PIC ;-) MFG Falk
"...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
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
@ 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
"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
Ist Eagle, war in Supply, Danke. Hab alles angepasst stimmt es jetzt? Danke Flo
@Uwe Ich dachte, ich ermittle die Umdrehungen wenn ich alles zusammengebaut hab und überprüfe mim IC wie oft der Hall Sensor in einer Minute schliesst?
So, angepasst... Muss ich an Pin 3,4,5,6 überhaupt was anschliessen oder Stimmt das so?
... 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
@ Flo (Gast) >angepasst... Muss ich an Pin 3,4,5,6 überhaupt was anschliessen LOGISCH! Das ist die Stromversorgung! oder >Stimmt das so? Nöö. Die Kondensatoren müssen parallel zu GND/Vcc angeschlossen werden! MFG Falk
Passt es jetzt so oder müssen an die unteren Pins auch noch Kondensatoren? Flo
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
@ 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.
Und was muss an CD+ dran?? das bleibt frei oder? Danke PS: Das mit Der Suche hab ich gewusst, nur nicht das mit dem *... Flo
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)
@ 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
Hoffentlich kommst du mit der Mechanik besser klar, ansonsten ruf besser schonmal den Notarzt, für den Fall das dir das Ding ins Gesicht springt.
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?
bzgl AUtorouter ich mein nur die Anwendung, mit der man das Layout erstellen kann Danke Flo
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
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.
was muss ich zum beispiel bei device eintragen? Danke Flo PS: Poste gleich ide Fehlermeldung
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.