mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik brauche hilfe BITTE programmierprofi gesucht


Autor: newbi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!
kann mir jemand ein programm für einen pic 16f627 schreiben?
Ich sende mit einem Programm daten auf die rs232 und möchte das der 
mikrocontroller darauf reagiert!

wenn von der rs232 schnittstelle z.b. ein "x" kommt soll der 
mikrocontroller einen ausgang auf high schalten bis ich mit einem "y" 
den ausgang zurück setze!
falls mir jemand helfen könnte wäre das super!!!

DANKE

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
newbi wrote:
> kann mir jemand ein programm für einen pic 16f627 schreiben?

Ne, PIC kann ich nicht.

Fürn AVR, z.B. ATtiny25 könnte ich das machen (in C mit AVR-GCC).


Peter

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeig mal deinen Schaltplan. Schon fertig?

Thomas

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:
> Fürn AVR, z.B. ATtiny25 könnte ich das machen (in C mit AVR-GCC).

Siehe Anhang.


Peter

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
newbi wrote:
> hallo!
> kann mir jemand ein programm für einen pic 16f627 schreiben?

Und in welcher Programmiersprache musst Du die Übung abgeben?
Assembler? C? (welcher Compiler?) Basic?

Autor: newbi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!
also ich häte auch einen atmega 8515 falls das besser geht zum 
programmieren!
kann ich da den code verwenden?
danke

Autor: newbi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!
also ich brauche das projekt nicht für die schule!
ich awürd nur einfach gerne per rs232 ein paar transistoren schalten die 
dann andere dinge schalten!
mfg

Autor: Kanone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mega 8515 is'n bissel wie mit Kanonen auf Spatzen schießen!
Aber das geht auch!

Autor: newbi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab hier einen sourcecode gefunden!
kann ich den für meinen atmega8515 benutzen?? oder muss etwas geändert 
werden das makefile hab ich auch!danke





#include <io.h>  // Wir brauchen Zugriff auf die I/O's des Controllers

#define F_CPU            6000000      /* 6Mhz */
#define UART_BAUD_RATE      9600      /* 9600 baud */

// Berechnung des Inhalts des UBBR-Registers
#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1)

// Datentypdefinitionen
typedef unsigned char  BYTE;
typedef unsigned short  WORD;



int main (void)
/*********************************************************************** 
*****
    Hier ist der Programmeinstiegspunkt.
*/
{
    /* UART Control Register laden. Wir verwenden (noch)
       keine Interrupts. Hier wollen wir nur empfangen, also wird
       nur das Receiver Enable Flag gesetzt. */
    outp ((1 << RXEN), UCR);

    /* Baudrate einstellen */
    outp ((BYTE) UART_BAUD_SELECT, UBRR);


    // Port B als Ausgang konfigurieren
    outp (0xff, DDRB);

    // Hier machen wir einmal etwas anderes zur Realisierung der
    // Endlosschleife. Wir setzen zu Beginn der Schleife ein Label.
    // Am Schleifenende springen wir direkt zu diesem Label.
    // Nicht schön, aber unheimlich schnell.
LOOP:
    // Prüfen, ob ein Zeichen empfangen wurde.

    if (inp (USR) & (1 << RXC)) {     // Bit RXC im USR gesetzt ?
        switch (inp (UDR)) {          // Datenregister auslesen
            case '1': // LED einschalten
                sbi (PORTB, PINB0);
                break;
            case '0': // LED ausschalten
                cbi (PORTB, PINB0);
                break;
            default:  // Bei allen anderen Zeichen nichts tun
                break;
    }
}

goto LOOP;

} /* end of main */

Autor: Neueinsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin auch derzeit dabei, die AVRs besser kennen zu lernen.

ganz kurz: __attribute__((_packed_)) bei dem Bitfeld. Was bewirkt das?

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde nicht in einem Loop prüfen, ob ein Zeichen empfangen wurde, 
sondern den Interrupt dazu verwenden.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
newbi wrote:
> hab hier einen sourcecode gefunden!
> kann ich den für meinen atmega8515 benutzen?? oder muss etwas geändert
> werden das makefile hab ich auch!danke

Sollte gehen.
Da sind aber einige uralte Macros drinn, die brauchen diese Zeile:
#include <compat/deprecated.h>

Außerdem brauchst Du noch nen MAX232 Pegelwandler.


Peter


P.S.:
Ein goto ist nicht ein Fitzelchen schneller als ein while(1) oder 
for(;;)
Eines stimmt aber, das "goto" ist C-Programmierern generell 
"unheimlich".

Autor: Kanone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mann ...  mega 8515 für eine so einfache Aufgabe, da kann mann
auch solche Sachen im Main-Loop machen!

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Konkret:
ISR (USART_RXC_vect)
{
 char x = UDR;     // Datenregister auslesen

 switch (x) {                      
             case '1': // LED einschalten
                PORTB |= (1 << PINB0);
                break;
            case '0': // LED ausschalten
                PORTB &= ~PINB0;
                break;
            default:  // Bei allen anderen Zeichen nichts tun
                break;
}

verwende wenn möglich keinen goto Befehl.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, kleiner Fehler:
PORTB &= ~PINB0;
sollte natürlich heissen:
PORTB &= ~(1<<PINB0);

Autor: Albrecht H. (alieninside)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
newbi wrote:
> hab hier einen sourcecode gefunden!
> kann ich den für meinen atmega8515 benutzen??

Möglicherweise, was spricht dagegen das einfach mal auszuprobieren?

> oder muss etwas geändert
> werden das makefile hab ich auch!danke
>
>
> ...

Der "gute" Peter Dannegger hat dir ja auch noch einen Code, 
(rs232_xy.zip) reingestellt, vermutlich die absolute Profilösung für 
dein kleines Problem, hast du da überhaupt schon mal reingeschaut?

Also wenn ich das nächste mal was programmieren muss, melde ich mich 
auch einfach als "newbi" an und warte darauf, dass Peter mir ein 
fertiges Zip reinstellt. Nichts für ungut.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Albrecht H. wrote:

> Der "gute" Peter Dannegger hat dir ja auch noch einen Code,
> (rs232_xy.zip) reingestellt, vermutlich die absolute Profilösung für
> dein kleines Problem, hast du da überhaupt schon mal reingeschaut?

Ja, das könnte wohl etwas zu übertrieben sein.
Software-UART mit Autobaud und FIFO muß ja nicht sein.
Mein ATtiny25 Code ist auch nicht so einfach auf den ATmega8515 
portierbar.

Der Code vom Posting 13:30 Uhr sollte es tun aufm ATmega8515.


> Also wenn ich das nächste mal was programmieren muss, melde ich mich
> auch einfach als "newbi" an und warte darauf, dass Peter mir ein
> fertiges Zip reinstellt. Nichts für ungut.

Der Code steht ja zu 99% so ähnlich schon in der Codesammlung.
Das Main kräftig zusammengestrichen, LCD-Code rausgehauen, fertig.


Peter

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Peter ich bin auch Newbie,
muss für mein Diplom Matlab Simulink-Teile auf einen ARM-Core meiner 
Wahl implentieren!

Code und Schaltplan bitte!

Danke fubu ^^

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter bitte um antwort^^.
Mein Diplom wartet nicht^^.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.