- Akku Tests und Balkonkraftwerk Speicher         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 36

Thema: Anfänger in C sucht Tutorial-Empfehlung

  1. #21
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Anzeige

    E-Bike
    N´Abend, Huberg.G, hallo robocat,

    Hei - was habe ich für einen artigen Controller.

    Er meldet sich artig mit Namen (Typenbezeichnung) und ruft dann klar und deutlich - aber lest selbst:

    **** ATtiny2313 *****

    Hallo, Welt.


    Was so ein bisschen trigonal symmetrisches Siliziumdioxyd an der richtigen Stelle ausmacht . Na ja, er hat bisher noch nicht mehr geäussert - und es ist ja gut, dass er das nicht gleich mit 16 MHz macht .

    Danke Hubert.G für die Hinweise zu den Elko´s.

    Danke für die ganze, super Hilfe!
    Ciao sagt der JoeamBerg

  2. #22
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Da sieht man die Unterschiede, ich könnte jetzt sagen es funktioniert mit den internen Oszillator einwandfrei, tut es bei mir auch, aber man kann es nun mal nicht verallgemeinern. Bei Verwendung des UART ist ein Quarz, am besten ein Baudratenquarz die beste Lösung.
    Ich hoffe du hast weiterhin so viel Erfolg.

  3. #23
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Schönen Abend,

    nun habe ich vor Freude über die Funktion der RS232-Ausgabe (mit späterem Abkokeln des max232 UND des tiny2313 und Koma eines zweiten tiny mit lock1 und lock2) und anschliessendem Netzteilausfall am PC etwas übersehen.

    Schaltung der LED´s und Code "an/aus" entsprechen der RN-Control. Aber die LED geht bei mir sofort an und mit "setportbon(2)" aus - und danach kommt das "Hallo, Welt."
    Code:
    /* >> Diese ersten 2 Zeilen können zum Assemblieren entfernt werden (muss nicht)
      Sicherung vom 28nov07, 1734 nach Datei ..C1\hello-world\he-wo_x90.asm
     ===================================================================================
     ========== Beachte: printout aus AVRStudio geht (nur) bis col 85 ==================
      Target MCU        : ATtiny2313
      Target Hardware   : Servos auf PB5 und 6, LED auf PB4
      Target cpu-frequ. : 16 MHz, externer Quarzoszillator
     ===================================================================================
      *** Versionsgeschichte:
     ====================
      x91 28nov07 17:34  === Läuft mit 2-sec-Takt (LED), noch ohne Terminalaufruf 
      	#####>>>>> ABER : LED geht SOFORT an, obwohl Schaltung und Code wie in
    	RNControl 1.4 :(( 
      x90 24nov07 23:ff  === Läuft erst nach Einbau des Quarzes
      x10 23nov07 16:ff  Erster Aufbau, u.a. zum Test der Flash- und Experimentier-
      			Platine für tiny2313 mit RS232
      *** Aufgabenstellung (erweitert für x91): 
      Sende wiederholt "Hallo, Welt." über die RS232 UND LED auf PB2 anzünden.
      Abstand der Abläufe: 2 sec LED leuchten, Textausgabe und danach 2 sec Pause.
    	offen: Start dann, wenn Taste 1 gedrückt, läuft durch wenn gedrückt bleibt
    	später: einlesen 100 ==> Programm startet mit 1sec-Takt, evtl. Erweiterung
    		einlesen 200 ==> startet mit 2 sek-Takt; Einlesen über Terminal
      Autor: JWT 
      Läuft, ABER erst mit Quarz. Hilfe von Hubert.G und robocat
    	Portbelegung, Schaltung auszugsweise
                         VAP = LED an, wenn ddrb=1 + portb=0  
      Vcc ---------+-----t2313-Vcc                         
                   |                   +------+      rLED|\ |              
                   +-------------------+ 100R +----------| >+------+ 
                   |                   +------+          |/ |      |
                   |     t2313-PB2---------------------------------+ 
                   |                                                   
                   +-----------------------------------------------+        
                                                    Taste1 \       |      
                         t2313-PB4----------------+-------+ |------+      
                                       +------+   |                                            
                   +-------------------+ 10 K +---+                                           
                   |                   +------+                                           
                   |                                                        
     GND-----------+---------------------------------------GND     
     ===================================================================================
    										  */
    #include <stdlib.h> 
    #include <avr/io.h> 
    #include <avr/iotn2313.h>     //<<< das is ja wohl nix 
    
    //#define MCU = attiny2313 
    
    //   Mit Quarz 16 Mhz-CPU 
    #define F_CPU  16000000 
    #define BAUD 9600 
    #define UBRR (unsigned int)(F_CPU / BAUD / 16 - 0.5) 
    
    //   ### Portinitialisierung und waitms aus RNContr Demo C 
    //   *### Ports setzen auf HIGH/LOW  ### 
    
    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 möglich 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; 
      PORTB=0;
    //   for(uint8_t i=0; i<10; i++) 
    
    for(;;){ 
            
       setportboff(2); 
       waitms(2000); 
       setportbon(2); 
              
       /*###Text senden###*/ 
       sendUSART("\r\n\n\n"); //Sendet Kennung und Text. 
                // "\r" setze Cursor auf Zeilenanfang, 
                // "\n" beginnt dann die nächste Zeile 
       sendUSART("**** ATtiny2313 *****\r\n"); 
       sendUSART(" \r\n"); 
       sendUSART("Hallo, Welt.\r\n"); 
       sendUSART(" \r\n"); 
              
       waitms(2000); 
              
           } 
    }
    Und ich komm wirklich nicht darauf, was daran falsch sein sollte. Vielleicht könnte mal jemand bitte drüber gucken?
    Danke.
    Ciao sagt der JoeamBerg

  4. #24
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ich weiss auch nicht was daran falsch ist.
    Die Led ist gegen VCC geschalten, Ausgang µC ist 0, dann setzt du den Ausgang auf 1 und die Led geht aus. Ist doch OK so.
    Oder habe ich in deiner Ausführung etwas falsch verstanden.

  5. #25
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Hallo, Hubert.G
    ... Oder habe ich in deiner Ausführung etwas falsch verstanden.
    Nein, hast Du nicht - ICH habe, wenn überhaupt, falsch gedacht. Ich dachte eben (wie schon manchmal, leider) - wenn "Ausgang = 0" dann ist auch die LED aus , aber vielleicht stolper ich über diesen Fallstrick nicht mehr allzu oft. Ok, wenn hier "Ausgang = 0" dann ist er eine Senke und es fliesst Strom von Vcc zum Ausgang - und dann ist die LED eine Leuchte - blos ich bins eben nicht (immer).

    Meine Denkweise ist erst gültig, wenn ich die LED gegen GND schalte. Aber nun stell ich fest, dass sie nicht mehr so hell leuchtet

    Da habe ich also noch etwas dabei gelernt: Weil die "Null" am freien Ausgang bei mir nicht null Volt bedeutet - sondern etwa +2,1 - leuchtet die LED gegen Vcc heller als gegen GND . Und das Suche ich gerade in der Dokumentation - warum der Port nicht ganz auf Null geht.

    Danke jedenfalls für den geduldigen Kommentar
    Ciao sagt der JoeamBerg

  6. #26
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Bei meinem 2313 ist 0 am Ausgang auch 0V. Da muss bei dir ein Wurm drinnen sein.

  7. #27
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Zitat Zitat von Hubert.G
    Bei meinem 2313 ist 0 am Ausgang auch 0V. Da muss bei dir ein Wurm drinnen sein.
    Ach - eine schrecklich klare und wahre Analyse. Na ja, Du hattest zwar nicht WIRKLICH geschrieben: "... Da muss bei dir ein Wurm drinnen sein..." aber es könnte so gedeutet werden - und wäre auch wahr. Ich habe es heute sauber aufgebaut (na ja, das war es gestern schon auch - hab mir ja ne neue, hübsche Experimentier- und Flashplatine aufgebaut). Aber ich konnte das gestrige Ergebnis einfach nicht wiederholen. Dabei trinke ich nie beim Löten oder so. Es muss gestern irgendein seltsamer Kontakt da gewesen sein - auch das "halbe Leuchten" ist heute total weg, und die LED leuchtet gleich hell - ob gegen Vcc oder GND. Sorry für den falschen Alarm.

    FAZIT: Bei "0" am Ausgang ist auch bei meinem 2313 0V.
    Ciao sagt der JoeamBerg

  8. #28
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Hallo Hubert.G,

    Zitat Zitat von Hubert.G
    ... ein Wurm drinnen ...
    ein bisschen was zu meiner Entschuldigung: Es lag am Netzteil - ein prächtiges Teil für meinen Bedarf, klein und schick - das aus einem alten Industrierechner stammte. 30 W +5 V, je 1A bei +12 V und -12 V. Aber was ich nicht betrachtet hatte, war die Welligkeit - schauderhaft und eben absolut störend beim µC. Und ich hatte mich so über das Ding gefreut Nachträglich erinnere ich mich, dass einige Probleme auftraten [-o< seit ich diese Stromquelle gelegentlich benutzte.
    Ciao sagt der JoeamBerg

  9. #29
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Hei Hubert.G,

    vielleicht stolperst Du noch mal hier drüber. Ich hätte schon wieder (99, will aber klein anfangen) Fragen. Ich sehe nicht richtig durch die Befehle. Ok, ist sowieso klar . Aber im Ernst:

    Im Tutorial C in RNWissen (und im K&R - hat die Nikolaus-in gebracht) steht nur das printf als Ausgabe und das scanf... Frage: die Eingaberoutinen - so nach dem Muster "readUSART" oder "getUSART" muss ich mir dann selber schreiben!? Oder gibts dazu wieder so praktische "Spickzettel" - sprich libraries? Die sendUSART habe ich ja aus der rncontrol.h geklaut.

    Ich will nämlich jetzt Werte EINLESEN - als Zahl, nicht als Text/Ziffer (sollen als PWM-Sollwert dienen), und da fehlt mir einfach das Vokabular . Ich komme mir reichlich blind vor im Moment, sorry.

    Danke im Voraus,

    Nachtrag: Sorry, es steht ja im *2313_doc2543 - das hatte ich irgendwie übersehen
    Ciao sagt der JoeamBerg

  10. #30
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ich verwende gerne die UART-Lib von P.Fleury http://jump.to/fleury
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress