Hallo, der Arduino Code: #define ledPin1 2 #define ledPin2 3 #define ledPin3 4 #define ledPin4 5 int incomingByte; void setup() { Serial.begin(9600); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); } void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); if (incomingByte == '1') { digitalWrite(ledPin1, HIGH); } if (incomingByte == '2') { digitalWrite(ledPin2, HIGH); } if (incomingByte == '3') { digitalWrite(ledPin3, HIGH); } if (incomingByte == '4') { digitalWrite(ledPin4, HIGH); } if (incomingByte == '0') { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, LOW); } } } und der Pic code: #include <xc.h> #define _XTAL_FREQ 4000000 // Annahme eines 4 MHz Quarzoszillators, kann angepasst werden // Definieren der Pin-Nummern für die LEDs #define ledPin1 GP0 #define ledPin2 GP1 #define ledPin3 GP4 // Verwenden Sie GP4 für ledPin3, da GP2 bereits für die UART-Kommunikation belegt ist #define ledPin4 GP3 void main() { TRISIO = 0b00000000; // Alle GP-Pins als Ausgang konfigurieren GPIO = 0b00000000; // Alle GP-Pins auf LOW setzen // UART-Konfiguration TRISIO2 = 1; // GP2 (TX) als Eingang TRISIO5 = 0; // GP5 (RX) als Ausgang ANSEL = 0; // Alle analogen Funktionen deaktivieren // UART-Einstellungen (9600 Baud, 8-Bit-Daten, keine Parität) BRGH = 1; // Hochgeschwindigkeitsmodus aktivieren SPBRG = 25; // Baudraten-Register einstellen (entspricht 9600 Baud) while (1) { if (RCIF) { // Überprüfen, ob Daten empfangen wurden char receivedByte = RCREG; // Empfangene Daten lesen if (receivedByte == '1') { ledPin1 = 1; // LED 1 einschalten } else if (receivedByte == '2') { ledPin2 = 1; // LED 2 einschalten } else if (receivedByte == '3') { ledPin3 = 1; // LED 3 einschalten } else if (receivedByte == '4') { ledPin4 = 1; // LED 4 einschalten } else if (receivedByte == '0') { // Alle LEDs ausschalten ledPin1 = 0; ledPin2 = 0; ledPin3 = 0; ledPin4 = 0; } // Zurückmelden, ob die LED eingeschaltet oder ausgeschaltet ist if (ledPin1 == 1) { TXREG = '1'; } else { TXREG = '0'; } // Warten, bis die UART-Übertragung abgeschlossen ist while (!TXIF); } } } beim Pic kommt noch der USB to TTL hinzu. Pics und Adapter sind vorhanden. macht das ganze eigentlich Sinn?
Siggi schrieb: > macht das ganze eigentlich Sinn? Nein, dein Beitrag macht ohne jeden Kontext überhaupt keinen Sinn.
Siggi schrieb: > Pic12f683 statt Arduino Nano verwenden Du vergleichst Äpfel mit Birnen. Der Pic12f683 ist ein Mikrocontroller, der Arduino Nano ist ein Controllerboard. Wenn du den Arduino Code auf den PIC umsetzen willst, guckst du dir am besten auch die main() vom Arduino an. > beim Pic kommt noch der USB to TTL hinzu. Beim Arduino Nano ist der doch auch drauf. > TRISIO = 0b00000000; // Alle GP-Pins als Ausgang konfigurieren Mutig, mutig - je nach Hardware kann so etwas böse daneben gehen. Ganz schlechte Angewohnheit. Bist du sicher, dass deine unbekannte Library Zugriffe wie "ledPin1 = 1" als Bitzugriffe am GPIO umsetzt? Das würde mich wundern. Hinter GP0 ... GP4 verbergen sich wahrscheinlich einfach nur Zahlen für Bit-Nummern.
:
Bearbeitet durch User
Es sollte nur aus Kostengründen 3 mal zum Einsatz kommen. USB to TTL Adapter und Pics sind noch vorhanden. 3 Arduino Nano muss ich erst wieder kaufen.
Siggi schrieb: > 3 Arduino Nano muss ich erst wieder kaufen. Die kosten als Nachbau pro Stück 6€ und sind in 3 Tagen da. Beim PIC brauchst du außerdem auch noch die Hardware um deine Bauteile zusammen zu bringen. Wenn es dir nicht ein Herzensanliegen ist, das auf den PIC zu portieren, läuft das auf einen üblen Stundenlohn hinaus ;-) p.s. Die Sache mit den Bit-Field Zugriffen dürfte wohl funktionieren, auch wenn die Schreibweise arg kurz ist, so dass nicht sofort klar wird, was dahinter steckt.
:
Bearbeitet durch User
12F683 hat 8 Beine. 3Led + SIO ist Sportlich klein dafür das Kerlchen. MfG Michael
Ein > 12F683 hat 8 Beine. aber keinen HW-UART. Zugriffe darauf: > // UART-Einstellungen (9600 Baud, 8-Bit-Daten, keine Parität) > BRGH = 1; // Hochgeschwindigkeitsmodus aktivieren > SPBRG = 25; // Baudraten-Register einstellen (entspricht 9600 Baud) sind daher recht sinnfrei. > Die kosten als Nachbau pro Stück 6€ Ach doch schon so teuer. Aber naja, wenn es jemand nicht schafft, selber einen Controller auf eine Platine zu setzen, dann wird er wohl blechen muessen.
Motopick schrieb: > Ein >> 12F683 hat 8 Beine. > > aber keinen HW-UART. Aber der ATtiny412 (0,66€): https://www.reichelt.de/8-bit-attiny-avr-risc-mikrocontroller-4-kb-20-mhz-soic-8-attiny412-ssn-p335529.html?&trstct=pos_1&nbc=1
> Aber der ATtiny412 (0,66€)
Ganz schoen teuer fuer so einen Knirps.
Als 555-Ersatz waere mir das zu viel. Auch mit UART. :)
Wird der denn auch von der A*o-Umgebung bedient?
Ein 12F683 kann UART, und das erst recht bei langsamen
9600 bd in Software.
Aber mit "einfachem" Portieren wird das wohl nichts.
Man sollte gelegentlich auch mal einen Blick in die
Datenblaatter werfen.
Da wuerde man dann z.B. den 16F628 finden, der einen
HW-UART hat.
Edith:
Oder den 18F2550 mit USB...
:
Bearbeitet durch User
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.