-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Portierung von Software-UART auf ATTiny26

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685

    Portierung von Software-UART auf ATTiny26

    Anzeige

    Moin, nach langer Zeit hab ich mal wieder selbige, um mich meinem Robot zu widmen. Ich bin umgestiegen auf die Atmel-Serie und programmiere in C. Nun habe ich ein kleines Problem und hoffe, dass mich hier jemand erleuchten kann. Ich habe eine kleine Schaltung mit dem Tiny26 gebaut und wollte nun über den letzten freien Pin (PB1) seriell ein paar Daten an meinen PC senden. Auf der Suche nach einer Software-UART-Implementierung bin ich dann hierauf gestossen : http://temp.ph0rkeh.com/avr/projects/swusart.html
    Ich hab auch schon so einiges rausgefunden, allerdings find ich nix über dieses ominöse WGM01....
    Wenn ich probiere, das Beispiel so zu kompilieren, meckert der an allen Ecken und Enden, das legt sich aber, wenn ich z.B. aus TCCR0A TCCR1A bzw ...0B zu 1B mache, dabei hat der Tiny26 doch auch einen Timer0 oder nicht??? ICh bin völlig verwirrt.
    Kann mir da mal einer 'nen Tipp geben oder verraten, wie ich meinen ATTiny26 an meinen PC kriege? Vielen Dank schonmal!!
    Code:
    void uart_init(void)
    {
        cli();
    
    	
    	TCCR0A = (1 << WGM01); //CTC
    	TCCR0B = (1 << CS01); // perscaler of 8
    
    	
    	OCR0A = OSCRA;
    	OCR0B = OSCRA;
    
        TIFR = (1 << OCF0A); // set interrupt  Output Compare Flag 1A
    	SUART_TXD_DDR  |= (1 << SUART_TXD_BIT);
        SUART_TXD_PORT |= (1 << SUART_TXD_BIT);
        outframe = 0;
    }
    [/b][/code]

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    oh, ich bin vielleicht blind... kommando zurück, ich führe mir erstmal den Artikel vom RN-Wissen zu Gemüte, bei weiteren Fragen meld ich mich wieder....

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Okeee.... Also irgendwie scheint das mit dem T26 nicht so gut zu gehen, die Timer sind da wohl irgendwie anders.... Da werd ich wohl aus lauter Verzweiflung doch den ATMega8 nehmen oder die Daten über den Parallelport reinschaufeln mit 'nem zusätzlichen clocksignal oder so.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    Warum nimmst du nicht das Appnote AVR305:
    http://www.atmel.com/dyn/resources/p...ts/doc0952.pdf
    Hab ich zwar nur mit dem Tiny2313 getestet sollte aber mit dem Tiny26 auch funktionieren.

    Gruß,
    SIGINT

    P.S.: Bei kleinen Übertragungsraten hat das bei mir ohne Probleme mit dem internen Oszillator funktioniert.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Zitat Zitat von vklaffehn
    Okeee.... Also irgendwie scheint das mit dem T26 nicht so gut zu gehen, die Timer sind da wohl irgendwie anders...
    Jepp. Das Wiki-Beispiel hatte ich gemacht für einen ATmega8. Mit dem Handbuch an der Seite sollte es aber nich allzu schwierig sein, das Beispiel für einen ATtiny zu portieren.

    Falls Fragen zur M8-Implementierung sind, kannst du ja konkret nachfragen.
    Das Beispiel sieht die Verwendung einer FIFO vor und Implementiert für Sender und Empfänger; wenn du also nur einen simplen Sender brauchst wird der Code deutlich schrumpfen und übersichtlicher werden.

    Mit dem T26 bin ich nicht vertraut... anzupassen ist der Timer, der ja die Zeiten für die Bits erzeugt. Beim T26 ist Timer1 geeignet, konfiguriert über den OC1C im CTC-Mode. T26-Timer1 ist zwar nur ein 8-Bit-Timer, zusammen mit dem feinergranulierten Prescaler sollte er aber für nen Soft-UART taugen. Ob die PLL gewinnbringend eingesetzt werden kann überblick ich momentan nicht, bin wie gesagt nicht vertraut mit dem T26.
    Disclaimer: none. Sue me.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Moin!
    Danke für die Tipps, die Appnote hatte ich doch glatt übersehen, hatte nur die 307 entdeckt. Jetzt werde ich mal versuchen, das von Assembler nach C zu übersetzen, ich bitte schonmal, blöde Fragen meinerseits und geistige Inkompetenz zu entschuldigen, ich kämpfe zur Zeit mit einer zum Glück vollständig heilbaren Krebsart, allerdings nehme ich Schmerzmittel, also schwankt mein IQ zur Zeit etwas Gleich nochmal eine Frage : Wenn ich die UART_delay Funktion aus der Appnote in C umsetze, muß ich da was beachten, damit der Compiler die nicht einfach wegoptimiert? Oder kann ich die aus der delay.h vom AVR-GCC nehmen?

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    Setz das Appnote doch als Inline-ASM um... Atmel hat irgendwo den fertigen ASM Source.

    Gruss,
    SIGINT

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Hallo!
    Ich bin jetzt mal dabei, die Appnote per Inline ASM umzubauen, jetzt würde ich gern mal sehen, was WinAVR da für ein Asemblerlisting draus erzeugt, kann man irgendwo einstellen, wo er das speichern soll??
    Danke schonmal!!
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    http://www.roboternetz.de/wissen/ind...en_mit_avr-gcc

    Warum denn inline asm? Damit vergrößerst du die Hardwareabhänigkeit noch weiter....
    Disclaimer: none. Sue me.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Ah, danke!!
    Naja, ich werde wohl nur die Verzögerung umbauen, scheint zwar dasselbe zu sein wie in der delay.h vom AVR-GCC, aber ich machs wegen dem Lerneffekt. Und die Verzögerungsschleife müßte eigentlich auf allen AVR's laufen, ist ja nur 'lade register mit wert und zähl runter bis 0'. Und Assembler deswegen, weil das Timing ja ziemlich kritisch ist.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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