RGB-LED ansteuern und/oder ICs programmieren
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
RGB-LED ansteuern und/oder ICs programmieren
Heyho,
Ich habe schon seit Längerem vor, mit PB mal was Hardwaremäßiges anzustellen.
Für den Anfang würde mir schon reichen, eine RGB-LED anzusteuern.
Da ich auf diesem Gebiet keinerlei Erfahrung besitze, wollte ich mich mal an euch wenden. Kennt jemand von euch Tutorials, die dieses Thema behandeln?
Damit das Ganze auch ohne PC lauffähig ist, würde ich gerne ICs programmieren (Falls man die schon im ersten Teil braucht, einfach nicht beachten). Ich habe da noch 2 Atmega bla rumliegen und würde diese gerne benutzen, am Liebsten natürlich mit PB. Kann man IC-Programme mit PB schreiben?
Ich habe mir die Handbücher zu den ICs angeschaut, leider steht da nichts drin, außer dem Programmieren mit Assembler. Irgendwie kann man die auch mit C+ programmieren, wieso den dann auch nicht mit PB (Oder müsste man sich da so einen Wrapper programmieren?!)
Cheers, haut in die Tasten,
Chimorin
Ich habe schon seit Längerem vor, mit PB mal was Hardwaremäßiges anzustellen.
Für den Anfang würde mir schon reichen, eine RGB-LED anzusteuern.
Da ich auf diesem Gebiet keinerlei Erfahrung besitze, wollte ich mich mal an euch wenden. Kennt jemand von euch Tutorials, die dieses Thema behandeln?
Damit das Ganze auch ohne PC lauffähig ist, würde ich gerne ICs programmieren (Falls man die schon im ersten Teil braucht, einfach nicht beachten). Ich habe da noch 2 Atmega bla rumliegen und würde diese gerne benutzen, am Liebsten natürlich mit PB. Kann man IC-Programme mit PB schreiben?
Ich habe mir die Handbücher zu den ICs angeschaut, leider steht da nichts drin, außer dem Programmieren mit Assembler. Irgendwie kann man die auch mit C+ programmieren, wieso den dann auch nicht mit PB (Oder müsste man sich da so einen Wrapper programmieren?!)
Cheers, haut in die Tasten,
Chimorin
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: RGB-LED ansteuern und/oder ICs programmieren
Mit PB kannst du keine AVRs programmieren. Mit PB kann man nur für Windows, Linux und MacOS programmieren.
Am einfachsten kannst du AVRs mit C, C++ oder Bascom installieren. Dafür lädst du dir das AVR Studio herunter und legst los. Vorher brauchst du natürlich noch einen Programmieradapter und eine entsprechende Schaltung oder gleich ein fertiges Entwicklerboard für deinen Atmega. Ich programmiere die Dinger jetzt schon mehrere Jahre lang und kann dir theoretisch helfen. Aber für die Anfänge reicht es auch, einfach mal bei mikrocontroller.net rein zu klicken und sich die entsprechenden Beiträge im Wiki durchzulesen.
Wenn du eine reine RGB-LED hast, dann brauchst du auch ein passende Strombegrenzer-Schaltung oder einfache Widerstände, wenn du eine feste Spannung hast. Die PWM um die Helligkeit zu steuern kannst du vom Atmega selbst generieren lassen. Möchtest du mehr als eine RGB-LED ansteuern, dann empfiehlt sich ein externer PWM-Controller, der auch gleich noch den Strom steuert. Ich nutze dafür z.B. den WS2803.
Wenn du jetzt den Atmega mit PB steuern willst, gibt es zwei Möglichkeiten. Die einfachste ist über einen COM-Port. Die komplizierte über USB. Und die geht auch nur mit bestimmten Atmegas. Einfacher wird es dann mit der XMEGA-AU-Reihe. Aber bis du dahin kommst, solltest du lieber erst mal die Grundlagen lernen. Da findest du auch ausreichend Material im Netz.
Am einfachsten kannst du AVRs mit C, C++ oder Bascom installieren. Dafür lädst du dir das AVR Studio herunter und legst los. Vorher brauchst du natürlich noch einen Programmieradapter und eine entsprechende Schaltung oder gleich ein fertiges Entwicklerboard für deinen Atmega. Ich programmiere die Dinger jetzt schon mehrere Jahre lang und kann dir theoretisch helfen. Aber für die Anfänge reicht es auch, einfach mal bei mikrocontroller.net rein zu klicken und sich die entsprechenden Beiträge im Wiki durchzulesen.
Wenn du eine reine RGB-LED hast, dann brauchst du auch ein passende Strombegrenzer-Schaltung oder einfache Widerstände, wenn du eine feste Spannung hast. Die PWM um die Helligkeit zu steuern kannst du vom Atmega selbst generieren lassen. Möchtest du mehr als eine RGB-LED ansteuern, dann empfiehlt sich ein externer PWM-Controller, der auch gleich noch den Strom steuert. Ich nutze dafür z.B. den WS2803.
Wenn du jetzt den Atmega mit PB steuern willst, gibt es zwei Möglichkeiten. Die einfachste ist über einen COM-Port. Die komplizierte über USB. Und die geht auch nur mit bestimmten Atmegas. Einfacher wird es dann mit der XMEGA-AU-Reihe. Aber bis du dahin kommst, solltest du lieber erst mal die Grundlagen lernen. Da findest du auch ausreichend Material im Netz.
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: RGB-LED ansteuern und/oder ICs programmieren
Cool, danke für deine Antwort. Ich werde mir jetzt erst einmal das Wiki zu Gemúte führen und dann weitersehen.
Ein ganzes Entwicklerboard wäre dann sowas wie ein Arduinoboard? Oder gibt es da was, wo man nur noch die ICs reinstecken muss? Einerseits wäre das gut, andererseits... wenn ich nicht mal den Zusammenbau der Programmierschaltung verstehe, sollte ich gar nicht erst anfangen.
Auf dem Gebiet Elektrotechnik bin ich ein bisschen bewandert ( Technisches Gymnasium), das wird wohl für den Anfang reichen.
EDIT: Günstig sieht das ja nicht aus. Naja, mal sehen. Ein Arduino für 16Euro ist da unschlagbar, aber leider kann man die ICs ja nicht rausnehmen.
Ein ganzes Entwicklerboard wäre dann sowas wie ein Arduinoboard? Oder gibt es da was, wo man nur noch die ICs reinstecken muss? Einerseits wäre das gut, andererseits... wenn ich nicht mal den Zusammenbau der Programmierschaltung verstehe, sollte ich gar nicht erst anfangen.
Auf dem Gebiet Elektrotechnik bin ich ein bisschen bewandert ( Technisches Gymnasium), das wird wohl für den Anfang reichen.
EDIT: Günstig sieht das ja nicht aus. Naja, mal sehen. Ein Arduino für 16Euro ist da unschlagbar, aber leider kann man die ICs ja nicht rausnehmen.
-
- Beiträge: 266
- Registriert: 22.05.2013 20:35
- Computerausstattung: armseliger Laptop, mit wenig RAM und noch weniger CPU-Leistung. ...und die Grafikkarte.... ....naja.. da male ich doch lieber selber.
- Wohnort: nahe Wolfsburg
Re: RGB-LED ansteuern und/oder ICs programmieren
Ich weiß jetzt nicht wie fit du allgemein in ICs bist, aber Arduino-Boards sind sehr anfängerfreundlich.
Wenn du Arduino-Boards oder noch besser günstige "kompatible"-Boards suchst, dann kann ich die "Komputer.de" enpfehlen. Die ICs kannst du je nach Arduino-Board auch tauschen. Allerdings benötigen diese ICs einen speziellen Bootloader, den du dann erstmal brennen müsstest. Wenn du dir ein Board kaufst, dann ist es in der Regel überflüssig. ...und bei ca. 18 € pro Board kann man nichts verkehrt machen. (nimm Notfalls ein "Arduino Uno Rev3"; es ist zuverlässig und für Anfänger gut geeignet; ca. 25€)
Der Vorteil von Arduino ist an sich schon die Programmierung. Die Programmiersprache ist C und sehr stark für Anfänger vereinfacht.
z.B.:
Die IDE-Software gibt es bei Arduino.cc kostenlos.
....und mit AVR Studio wäre dieser Code etwas* komplizierter.
Die Programmierung geht bequem über USB-Kabel und ermöglicht auch eine serielle COM-Verbindung.
Ich habe schon oft PureBasic-Programme mit dem Arduino gekoppelt um damit Steuerungen zu realisieren. Ich denke ich könnte dir da weiterhelfen, wenn bedarf besteht. Am einfachsten geht es dann über eine serielle Verbindung (COM).
Ich programmiere zur Zeit eine Oszilloskop-Software mit PureBasic für den Arduino. Damit kann man immerhin Signale bis 20KHz messen
* "etwas" in Form von: ...ohne AVR-Handbuch weint man sich in den Schlaf und will nie wieder aufwachen. Da denke ich immer an die Programmiersprache "Brainfuck"
viele Grüße,
SBond
Wenn du Arduino-Boards oder noch besser günstige "kompatible"-Boards suchst, dann kann ich die "Komputer.de" enpfehlen. Die ICs kannst du je nach Arduino-Board auch tauschen. Allerdings benötigen diese ICs einen speziellen Bootloader, den du dann erstmal brennen müsstest. Wenn du dir ein Board kaufst, dann ist es in der Regel überflüssig. ...und bei ca. 18 € pro Board kann man nichts verkehrt machen. (nimm Notfalls ein "Arduino Uno Rev3"; es ist zuverlässig und für Anfänger gut geeignet; ca. 25€)
Der Vorteil von Arduino ist an sich schon die Programmierung. Die Programmiersprache ist C und sehr stark für Anfänger vereinfacht.
z.B.:
Code: Alles auswählen
int led = 13; //LED am digitalen I/O-Port 13
// diese Funktion wird einmalig beim Starten des Arduinos ausgeführt
void setup() {
pinMode(led, OUTPUT); // I/O-Port 13 soll ein Ausgang sein
}
// diese Funktion wird nach Ablauf immer erneut ausgeführt (eine Schleife wie 'Repeat: ForEver' in PureBasic)
void loop() {
digitalWrite(led, HIGH); // LED anschalten
delay(1000); // 1 sek warten
digitalWrite(led, LOW); // LED ausschalten
delay(1000); // 1 sek warten
}
....und mit AVR Studio wäre dieser Code etwas* komplizierter.
Die Programmierung geht bequem über USB-Kabel und ermöglicht auch eine serielle COM-Verbindung.
Ich habe schon oft PureBasic-Programme mit dem Arduino gekoppelt um damit Steuerungen zu realisieren. Ich denke ich könnte dir da weiterhelfen, wenn bedarf besteht. Am einfachsten geht es dann über eine serielle Verbindung (COM).
Ich programmiere zur Zeit eine Oszilloskop-Software mit PureBasic für den Arduino. Damit kann man immerhin Signale bis 20KHz messen
* "etwas" in Form von: ...ohne AVR-Handbuch weint man sich in den Schlaf und will nie wieder aufwachen. Da denke ich immer an die Programmiersprache "Brainfuck"
viele Grüße,
SBond
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: RGB-LED ansteuern und/oder ICs programmieren
Hey SBond,
danke für die Antwort. Das sieht doch schon mal toll aus.
Was mich eigentlich direkt davon abhält, ICs richtig zu programmieren, ist Assembler. Ich weiß nicht, in wie weit das noch zunimmt, aber
geht noch vom Aufwand her. Aber wenn das noch mehr werden sollte Oo
Wie findet man da denn überhaupt einen Fehler in einem Code mit ein paar Hundert ldi, out, in und den ganzen r´s?
Danke an euch Beide für die Hilfe, ich werde mir das dann mal überlegen (Die Preise an sich sind nicht zu hoch, eher ist der Schnupperpreis mit 80€ für so ein STK500 stolz) und eventuell dann in den nächsten Semesterferien (Sommerferien) loslegen.
danke für die Antwort. Das sieht doch schon mal toll aus.
Was mich eigentlich direkt davon abhält, ICs richtig zu programmieren, ist Assembler. Ich weiß nicht, in wie weit das noch zunimmt, aber
Code: Alles auswählen
.include "m8def.inc" ; Definitionsdatei für den Prozessortyp einbinden
ldi r16, 0xFF ; lade Arbeitsregister r16 mit der Konstanten 0xFF
out DDRB, r16 ; Inhalt von r16 ins IO-Register DDRB ausgeben
ldi r16, 0b11111100 ; 0b11111100 in r16 laden
out PORTB, r16 ; r16 ins IO-Register PORTB ausgeben
ende: rjmp ende ; Sprung zur Marke "ende" -> Endlosschleife
Wie findet man da denn überhaupt einen Fehler in einem Code mit ein paar Hundert ldi, out, in und den ganzen r´s?
Danke an euch Beide für die Hilfe, ich werde mir das dann mal überlegen (Die Preise an sich sind nicht zu hoch, eher ist der Schnupperpreis mit 80€ für so ein STK500 stolz) und eventuell dann in den nächsten Semesterferien (Sommerferien) loslegen.
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: RGB-LED ansteuern und/oder ICs programmieren
Du musst gar nichts in ASM programmieren. Du kannst dafür z.B. schönen C-Code nehmen.
Für Atmegas sieht der Code dann in etwa so aus:
Für ATXMega wäre der äquivalente Code dann:
Dann gibt es noch jede Menge Libraries, die bestimmte Funktionalitäten bieten um leichter damit programmieren zu können.
Für Atmegas sieht der Code dann in etwa so aus:
Code: Alles auswählen
#include <avr/io.h>
#include <util/timer.h>
;Datenrichtungsregister für PORT A
#define LED_DIR DDRA
;PORT A selbst
#define LED_PORT PORTA
;Pin für die LED an PORT A
#define LED_PIN 3
void main(int argc, char **argv) {
;Datenrichtung an PORT A und PIN 3 als Ausgang setzen
LED_DIR = _BV(LED_PIN)
while (1) {
;LED anschalten und dabei alle anderen Bits unverändert lassen
LED_PORT |= _BV(LED_PIN)
;1000 ms warten
_delay_ms(1000)
;LED ausschalten und dabei alle anderen Bits unverändert lassen
LED_PORT &= ~_BV(LED_PIN)
;1000 ms warten
_delay_ms(1000)
}
}
Code: Alles auswählen
#include <avr/io.h>
#include <util/timer.h>
;PORT A
#define LED_PORT PORTA
;Pin für die LED an PORT A
#define LED_PIN 3
void main(int argc, char **argv) {
;Datenrichtung an PORT A und PIN 3 als Ausgang setzen
LED_PORT.DIRSET = _BV(LED_PIN)
while (1) {
;LED anschalten und dabei alle anderen Bits unverändert lassen
LED_PORT.OUTSET = _BV(LED_PIN)
;1000 ms warten
_delay_ms(1000)
;LED ausschalten und dabei alle anderen Bits unverändert lassen
LED_PORT.OUTCLR = _BV(LED_PIN)
;1000 ms warten
_delay_ms(1000)
}
}
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: RGB-LED ansteuern und/oder ICs programmieren
Ich denke, dass es am Anfang mit Assembler doch einfacher ist (So wie das aussieht, ist der Teil mit LED an, warten und wieder aus so ziemlich identisch).
Geht es aber an Multiplikation, Division und solche Sachen, ist Assembler wohl nicht die richtige Wahl
Geht es aber an Multiplikation, Division und solche Sachen, ist Assembler wohl nicht die richtige Wahl
-
- Beiträge: 266
- Registriert: 22.05.2013 20:35
- Computerausstattung: armseliger Laptop, mit wenig RAM und noch weniger CPU-Leistung. ...und die Grafikkarte.... ....naja.. da male ich doch lieber selber.
- Wohnort: nahe Wolfsburg
Re: RGB-LED ansteuern und/oder ICs programmieren
...also ASM ist ja nun gar nicht anfängerfreundlich . Bevor ich damit anfange, spiele ich mit Barbie-Puppen
nimm C
nimm C
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e