- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 36

Thema: Anfnger in C sucht Tutorial-Empfehlung

  1. #11
    Erfahrener Benutzer Robotik Visionr Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching O
    Beitrge
    6.220
    Anzeige

    Powerstation Test
    Hast du die LED gegen VCC oder GND geschaltet, wenn gegen VCC dann geht sie nur so kurz an das du es kaum siehst, zu RS232 bin ich noch nicht gekommen "MITTAGESSEN"

  2. #12
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beitrge
    935
    den port als ausgang setzen knnte helfen:
    Code:
    DDRB = (1 << PB2);  // Pin PB2 als ausgang
    gruesse

  3. #13
    Erfahrener Benutzer Robotik Visionr Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgu
    Beitrge
    8.698
    Hallo Hubert.G

    hoffentlich hats geschmeckt . Danke schon mal jetzt fr Deine Mhe.

    Ich habe das natrlich in Assembler getestet (mit demselben Aufbau ) - weil ich mir nicht ber den Weg traue:
    Code:
    ;===================================================================================
    ;* Schaltung ZU Test "erstes C-Programm" ###>>> t2313, auszugsweise         
    ;                                                                  
    ; Vcc -----------t2313-----+------------Vcc                        
    ;                          |                                       
    ;                          |   +------+   rLED|\ |                
    ;                          +---+ 100R +-------| >+---+             
    ;                              +------+       |/ |   |             
    ;                                                    |             
    ;                t2313-PB1=pin13---------------------+             
    ;                                                                  
    ;                                                                  
    ; GND-------------------------------------------------GND          
    ;                                                                  
    ;===================================================================================
    ; Speicherbelegung
    ;r16 Mehrzweck, high-Byte in Pausen "pause_an", "pause_aus", "led_ende" u..
    ;
    ;===================================================================================
    ; Deklarationen und Konstanten fr den Praeprozessor
    #define	a	r16	;Kurzbezeichung fr Allzweckregister r16
    ;
    ;===================================================================================
    
    #include "tn2313def.inc"
    
    ; Interrupthandler-Tabelle (aus AT2313_doc2535.pdf, Seite 42)
    ;	Address		Code	Labels		;Comments
    .org	0x0000	rjmp	reset		;Reset Handler
    
    .org	0x0001 	reti	; INT0		;External Interrupt0 Handler
    .org	0x0002	reti	; INT1		;External Interrupt1 Handler
    .org	0x0003	reti	; TIM1_CAPT	;Timer1 Capture Handler
    .org	0x0004	reti	; TIM1_COMPA	;Timer1 CompareA Handler
    .org	0x0005	reti	; TIM1_OVF	;Timer1 Overflow Handler
    .org	0x0006	reti	; TIM0_OVF	;Timer0 Overflow Handler
    .org	0x0007	reti	; USART0_RXC	;USART0	rX Complete Handler
    .org	0x0008	reti	; USART0_DRE	;USART0,UDR Empty Handler
    .org	0x0009	reti	; USART0_TXC	;USART0 TX Complete Handler
    .org	0x000A	reti	; ANA_COMP	;Analog Comparator Handler
    .org	0x000B	reti	; PCINT		;Pin Change Interrupt
    .org	0x000C	reti	; TIMER1_COMPB	;Timer1 Compare B Handler
    .org	0x000D	reti	;IRS fr Timer0 CompareA Handler (t2313)
    .org	0x000E	reti	; TIMER0_COMPB	;Timer0 Compare B Handler
    .org	0x000F	reti	; USI_START		;USI Start Handler
    .org	0x0010	reti	; USI_OVERFLOW	;USI Overflow Handler
    .org	0x0011	reti	; EE_READY		;EEPROM Ready Handler
    .org	0x0012	reti	; WDT_OVERFLOW	;Watchdog Overflow Handler
    ;
    ;===================================================================================
    ; Hauptprogramm
    ;===================================================================================
    ;
    reset:		;=== Generelle Initialisierung
    		; Zuerst RAMEND und Stack definieren;
    	ldi	a,RAMEND	;Ram Ende des tiny2313
    	out	SPL,a	;Stack Pointer tiny2313 setzen
    ;
    anfang:		;=== Nur ein Dummy-Hauptprogramm mit einer leeren Schleife
    ;
    	rcall  	mc_init		;Initialisiere den Mikrocontroller
    ;
    	sbi	portb,2
    ;
    anfang2:
    	rjmp	anfang2
    ;		
    ;===================================================================================
    ; Prozeduren
    ;===================================================================================
    ;
    ;
    ;===================================================================================
    ; Initialisierungprozeduren, fr C, ADC und Timer-ISR
    ;===================================================================================
    ;
    mc_init:	;=== Initialisiere Mikrocontroller
    		;ALLE Register initialisieren hier := pull-ups einschalten
    ;
    	ldi	a,0b11111111	;
    				;Datenrichtung "Ausgnge" fr ports 0 - 7
    	out	ddrb,a	
    	ldi	a,0b00000000
    	out	portb,a		;  ports aus-(=) oder ein(1)schalten;  low = sink
    	ret	;=====----->>>>>
    ;
    ;===================================================================================
    ; Interrupt-Service-Routine
    ;===================================================================================
    ;
    ;===================================================================================
    ; Ende des Quellcodes
    ;===================================================================================
    .. da geht die Leuchte an - und bleibt es auch.
    Ciao sagt der JoeamBerg

  4. #14
    Erfahrener Benutzer Robotik Visionr Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching O
    Beitrge
    6.220
    Dieser Code luft bei mir:
    Code:
    /*
    ===========================================================
    Aufgabe:
    
    Sende "Hallo Welt" ber die RS232   UND
    LED auf PB2 anznden
    
    Autor: JWT
    ===========================================================
    */
    
    #include <stdlib.h>
    #include <avr/io.h>
    /*   #include <avr/iotn2313.h>     <<< das is ja wohl nix   */
    
    //#define MCU = attiny2313
    
    //   ### NEIN ### Mit Quarz 16 Mhz-CPU
    //   Interner Oszillator, 8 MHz
    #define F_CPU  8000000
    #define BAUD 9600 
    #define UBRR (unsigned int)(F_CPU / BAUD / 16 - 0.5)
    
    
    //   ### Portinitialisierung und waitms aus RNContr Demo C
    
    //   *### Ports setzen ###
    //   Ports auf HIGH/LOW setzen
    
    static inline void setportbon(const uint8_t n)
    {PORTB |= (1<<n);}   //set PORTB.n high
    static inline void setportboff(const uint8_t n)
    {PORTB &= ~(1<<n);}   //set PORTB.n low
    
    /*### Programm pausieren lassen ###*/
    /*Pausenwert ist nur experimentell !*/
    
    void waitms(uint16_t ms)
    {
       for(; ms>0; ms--)
       {
          uint16_t __c = 4000;
          __asm__ volatile (
             "1: sbiw %0,1" "\n\t"
             "brne 1b"
             : "=w" (__c)
             : "0" (__c)
          );
       }
    }
    
    
    
    // ------------------------------------------------------------------
    //   Dieser Codeschnipsel hnlich 2313-doc, S 121
    
    void USART_Init( unsigned int baud )
    
    {
    /* Set baud rate */
    UBRRH = (unsigned char)(baud>>8);
    UBRRL = (unsigned char)baud;
    /* Enable receiver and transmitter */
    UCSRB = (1<<RXEN)|(1<<TXEN);
    /* Set frame format: 8data, 2stop bit */
    UCSRC = (3<<UCSZ0);
    }
    
    // ------------------------------------------------------------------
    void sendchar(unsigned char c)
    {
       while(!(UCSRA & (1<<UDRE))) //Warten, bis Senden mglich ist
       {
       }
       
       UDR = c; //schreibt das Zeichen aus 'c' auf die Schnittstelle
    }
    
    // ------------------------------------------------------------------
    void sendUSART(char *s) //*s funktiniert wie eine Art Array - auch bei
             // einem String werden die Zeichen (char)
             // einzeln ausgelesen - und auf die
             // Sendeschnittstelle bertragen
    {
       while(*s)
       {
       sendchar(*s);
       s++;
       }
    }
    
    // ------------------------------------------------------------------
    /*### Hauptschleife ###*/
    int main(void)
    {
      USART_Init(UBRR);      //USART initialisieren
      DDRB=0xff;
    //   for(uint8_t i=0; i<10; i++)
    
    for(;;){
       
       setportboff(2);
       waitms(150);
       setportbon(2);
       
    
    
    
     
    
       /*###Text senden###*/
    
       sendUSART("\r\n\n\n"); //Sendet Kenung und Text.
                // "\r" setze Cursor auf Zeilenanfang,
                // "\n" beginnt dann die nchste Zeile
       sendUSART("**** ATtiny2313 *****\r\n");
       sendUSART(" \r\n");
       sendUSART("Hallo, Welt.\r\n");
       sendUSART(" \r\n");
    } 
    }
    Wie schon erwhnt PORTB als Ausgang definieren und den UART richtig einstellen, du hast die Baudrate in den UBRRL und H geschrieben.

    Edit: Ich habe auf 1Stopbit gendert

  5. #15
    Erfahrener Benutzer Robotik Visionr Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgu
    Beitrge
    8.698
    Erstmal vielen Dank. Ich "muss noch was tun" - und gehe es spter ausprobieren, korrigieren und Fehlerdiskussion

    Danke
    Ciao sagt der JoeamBerg

  6. #16
    Erfahrener Benutzer Robotik Visionr Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgu
    Beitrge
    8.698
    Hallo Hubert.G, hei robocat,

    nochmals vielen Dank, Euch beiden. Ich habe den Code von Hubert.G 1:1 bernommen: Die LED blinkt - das Hyperterminal zeigt GARNIX an - der RS232-Monitor in DASYLab (ein kleiner Verwandter von LabView) zeigt folgenden Text:

    Aufgenommen mit einem RS232-Monitor (DASYLab)

    <LF>**** iny2313 **** Welt.<CR><LF>
    <CR><LF>
    <CR><LF>

    <LF>
    <LF>**** ATi<CR><LF>

    <LF>
    <LF>**** ATtiny2313 ***** allo, Welt.<CR><LF>
    <CR><LF>

    andere Sequenz (spter) bei gleicher Hardware

    <LF>
    <LF>**** Դy2313 ****<CR><LF>

    <LF>
    <LF>**** 213 *****C<CR><LF>

    <LF>
    <LF>**** 2313 ***** <CR><LF>

    <LF>
    <LF>**** ATiny2313 *****

    Da ich als elektro(schaltungs)technisches Wickelkind die ganze Schaltung mit dem MAX232 selbst aufgebaut habe (angelehnt an hiesige Threads und RN-Control) knnte es an der Elektronik liegen. Der Oskar (leider kein DSO ) zeigt bei der RN-Control +/- 8V an, bei meinem Oevre -9V und zwei positive "Spuren" irgendwo in der Nhe von +3 bzw +8 V (siehe Bild).

    Nach Umlten des Elko von max232_2 nach Vcc kam dann das:


    **** ATiny2313 *****

    Hallo, Welt.



    

    aber nur ein Mal.

    Nun sind die Schaltvorschlge zum max232 natrlich nicht eindeutig. Das Beispiel https://www.roboternetz.de/wissen/im...schaltplan.gif
    zeigt mir beim max232_2 einen Elko der mit dem (-)-Anschluss nach Vcc geht ?? Die Bestckung an 1, 2, 3, 4, 5 und 6 sieht 4,7 mF vor. Dagegen sind bei den Thread von pmaler, bzw. bei http://www.pherzog.de/streifenrastermega32/ am max232 22 mF gesetzt, der max232_2 geht mit (+) nach Vcc. Ich hatte mich an der Streifenrasterplatine orientiert, meine Bauteile sind nach dieser Stckliste. Das Datenblatt zu dem von mir verwendeten MAX 232 CPE http://www.reichelt.de/?;ACTION=7;LA...5caa274be49a9d sieht aber andere Kapazitten vor .

    Mein Signalausgang am 2313 sieht recht gut aus, sauber zwischen 0V und +5V. Dieses Spannungsplateau bei +3V nach dem max232 sollte also irgendwo zwischen 2313 und RS232-Stecker passieren . Der Oskar zeigt die Pegel bei der RN-Control sauber und eindeutig zwischen -8V und +8V.

    Ich muss mir die Hardware mal durch den Kopf gehen lassen.

    Das Dmmste ist, dass ich mir diese Schnittstelle fr die Erprobung von Teilprojekten in den Kopf gesetzt hatte - spter sollte ich dann I2C nehmen (dann gibts wohl neue Probleme).
    Miniaturansichten angehngter Grafiken Miniaturansichten angehngter Grafiken klein80_img_1395.jpg  
    Ciao sagt der JoeamBerg

  7. #17
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beitrge
    935
    hi joe,
    der elko an pin 2 vom max muss mit (-) an die 5V versorgung. und der an pin 6 mit (+) auf masse. das liegt daran, dass -10V gegenber 0V negativer sind, und die 5V negativer als +10V. im zweifelsfall ins datenblatt gucken http://www.ortodoxism.ro/datasheets/...220-MAX249.pdf. die elkos sind normalerweise nicht kritisch, bei mir hat bisher alles zwischen 1F und 4,7F klaglos dienst getan.

    windows verwendet normal \r\n als zeilenumbruch, manche programme (dasylab?) wollen aber nur ein \n.

    gruesse von der katz

  8. #18
    Erfahrener Benutzer Robotik Visionr Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching O
    Beitrge
    6.220
    Hast du im Hyperterminal auf 1Stopbit gendert, sonst kann noch sein das die Frequenz den internen Oszillator nicht stimmt. Die ist etwas Spannungs- und Temperaturabhngig.
    Bei mir luft es auch im Hyperterminal einwandfrei.
    Ob diese beiden Elkos gegen + oder - geschalten sind ist egal solange die Spannungsfestigkeit stimmt.

  9. #19
    Erfahrener Benutzer Robotik Visionr Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgu
    Beitrge
    8.698
    Schnen Abend, Hubert.G

    Zitat Zitat von Hubert.G
    ... auf 1Stopbit gendert ...
    Ja, 1, 1 1/2 und 2. Was man halt so tut, wenn man nix Genaues nicht weiss.

    Zitat Zitat von Hubert.G
    ... das die Frequenz den internen Oszillator nicht stimmt ...
    Da bin ich grad dran. Bei meinem tiny13 hatte ich mit einer (Assembler-) Soft-RS232 mit dem internen Oszillator GELEGENTLICH mal einen Treffer . Aber ich hab die Sachen zusammengesucht und lte mir die notwendigen Kondensatoren rein und stecke einen Quarz dazu. Steht sowieso auf der Liste.

    Zitat Zitat von Hubert.G
    ... Ob diese beiden Elkos gegen + oder - geschalten sind ist egal solange die Spannungsfestigkeit stimmt.
    Ohhh - danke.
    Ciao sagt der JoeamBerg

  10. #20
    Erfahrener Benutzer Robotik Visionr Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching O
    Beitrge
    6.220
    Nachtrag zu den Elkos, die Polaritt gehrt natrlich schon eingehalten, die ndert sich nicht.
    Mit den Kapazitten von 47 bist du bei einem MAX232 gut dabei. Meist gengt 1 oder sogar 0,1, da ist allerdings ein Blick ins Datenblatt angesagt und dabei genau auf die Bezeichnung achten.

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •  

Labornetzteil AliExpress