Also ich hab das Board zwar nicht, aber ich geh doch mal stark davon aus, dass es dazu einen Schaltplan gibt. Du musst einfach schauen an welchem Port und welchem Pin die LED angeschloßen ist und das kannst du dann ansprechen.
Hi,
ich hab gerade die Doku des rnbfra 1.1 und die vom atmega32 vor mir liegen. Ich will herausfinden, was ich machen muss, damit eines der 4 LEDs auf dem Board leuchtet. Ich bin allerdings leicht ratlos. Man müsste dazu doch herausfinden, wie die LEDs an den atmega32 angeschlossen sind und dann welches Register für diesen Anschluss verantwortlich ist. Stelle ich mir das so richtig vor?
Das Problem ist eben, dass ich keine Informationen darüber habe / finde wo die angeschlossen sind.
Wäre nett, wenn mir da jemand helfen kann, dann schaff ich das in Zukunft vielleicht / hoffentlich alleine.
mfg
jagdfalke
Also ich hab das Board zwar nicht, aber ich geh doch mal stark davon aus, dass es dazu einen Schaltplan gibt. Du musst einfach schauen an welchem Port und welchem Pin die LED angeschloßen ist und das kannst du dann ansprechen.
www.subms.de
Aktuell: Flaschcraft Funkboard - Informationssammlung
Wenn Du keinen Schaltplan finden solltest, kannst Du auch relativ leicht ausprobieren, auf welchem Port die LEDs sind.
Einfach ein kleines Programm schreiben:
Jetzt mußt Du einfach 4 Mal das programm in den AVR laden. nach jedem mal setzt Du ein anderes PORT-Register auf 0xFF. Wenn die LEDs leuchten, hast Du das richtige Register erwischt.Code:#include <avr/io.h> int main(void) { //erst mal alle PORTS als Ausgänge definieren DDRA = 0xFF; DDRB = 0xFF; DDRC = 0xFF; DDRD = 0xFF; //jetzt bei einem einzelnen Port alle Ausgänge auf 1 schalten //alle anderen bleiben aus PORTA = 0xFF; PORTB = 0x00; PORTC = 0x00; PORTD = 0x00; while(1) { } }
Es kann natürlich auch sein, dass die LEDs mit Low-Pegel eingeschaltet werden. Dann musst Du einfach darauf achten, wann die LEDs ausgehen...
Um Vernünftig mit dem Board zu arbeiten, ist allerdings eine Schaltplan beinahe lebenswichtig....
askazo
So einfach isses nicht, der Schaltplan ist doch einigermassen komplex.
Am besten gehst du mit den Beispielprogrammen vor. Da werden die einzelnen Komponenten in Betrieb genommen und da kann man am effektivsten erkennen, an welchen Strippen man jeweils ziehen muß
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Warum ist's nicht so einfach? So komplex kann der Schaltplan nicht sein, dass man die LEDs darauf nicht bis zum Port zurückverfolgen könnte...
Wenn's Beispielprogramme für das Board gibt - umso besser. Damit kann man am einfachsten rausfinden, was wo ist.
Also das Testprogramm hat keinen Einfluss auf die LEDs. Die haben die ganze Zeit geleuchtet, egal was ich gemacht habe.
Hier ist ein Beispielprogramm in Bascom aus dem ich habe nix rauslesen kann:
Mit diesem Schaltplan komm ich irgendwie nicht klar. Ich finde nicht mal den HauptprozessorCode:'################################################### 'Testprogramm 1 'fr 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' 'Aufgabe: 'Ausgabe ber PowerPort per I2C testen indem 'die vier Leds im lauflichtartig leuchten ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Const Writepowerport_adr = &H72 'I2C Adr PCF 2 Const Readpowerport_adr = &H73 'I2C Adr PCF 2 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim I As Byte $crystal = 8000000 'Quarzfrequenz Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 I2cinit I = 0 I2cdaten = 1 Do I2cdaten = I2cdaten * 2 If I2cdaten > 16 Then I2cdaten = 1 I2cstart I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken I2cwbyte I2cdaten 'Datenbyte an PCF I2cstop Incr I Waitms 100 Loop End![]()
![]()
Noch ne Frage zum Code:
Du sagst "alle Ports aus Ausgänge definieren" und schreibst z.B."DDRA = 0xFF;". Dann sollen wieder einzelne Ports auf 1 geschaltet werden. Dieses Mal ist ein Port aber "PORTA". Wie kommt man denn von "DDRA" auf "PORTA" ??? Du schreibst halt beide Male "Port", des iritiert mich irgendwie.
mfg
jagdfalke
Hm, wenn Du mir mal den Schaltplan zukommen lassen könntest, könnte ich vielleicht weiterhelfen. Im Bascom-Beispiel werden die LEDs per I2C-Bus angesprochen, aber das ist eigentlich schon wieder einen Schritt zu weit für den Anfang.
Zu den Registern: Zu jedem Port gehören 3 8-Bit-Register. Jedes Bit steht für einen Pin des Ports.
DDR: (Data Direction Register) Hier bestimmst Du, ob ein Pin als Eingang oder als Ausgang konfiguriert wird. Setzt Du ein Bit auf 1, ist der zugehörige Pin als Ausgang konfiguriert. Setzt Du ihn auf 0, ist's ein Eingang.
PORT: Dieses Register hat nur Auswirkungen auf die als Ausgang konfigurierten Pins. Schreibst Du eine 1 in ein Bit, führt der dazugehörige Ausgang logisch 1 (5V). Schreibst Du eine 0 rein, hat er logisch 0 (0V).
PIN: (Port In) Dieses Register dient zum Einlesen der als Eingang konfigurierten Pins. Legst Du 5V an einen Eingang, steht in dem zum Eingang gehörenden Bit eine 1. Legst Du 0V an, steht eine 0 drin.
askazo
Ahja, so langsam kommt etwas Klarheit in die Sache rein.
Der Schaltplan ist als Attachment angehängt.
mfg
jagdfalke
Hm, die LEDs können auf dem Bord tatsächlich nur über I2C-Bus angesteuert werden. Da ich mit I2C noch nicht gearbeitet habe, kann ich Dir da aus dem Stehgreif leider auch nicht weiterhelfen. Aber es gibt sicher genug Leute hier, die sich damit auskennen.
PS: Der Hauptprozessor ist auf dem Schaltplan gleich unter dem Coprozessor...
askazo
Danke für deine Mühe askazo. Dann warte ich mal auf andere Beiträge darüber.
Aber wenn I2C am Anfang zu schwer ist, mit was soll ich denn dann mal anfangen? Ich mein LEDs sind ja jetzt nicht gerade sehr anspruchsvoll. Auf welche Pins wirkt sich denn dein Code von oben überhaupt aus?
zum Schaltplan:
Yeah, ich hab den Controller jetzt auch gefunden
Schau dir mal PD0 und PD1 an. Da steht dich RX und TX daneben. Haben die nix mit UART zu tun? Oder hat UDR aus deinem Code garnix damit zu tun?
mfg
jagdfalke
Lesezeichen