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....
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!!
[/b][/code]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; }
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....
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.
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.
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.Zitat von vklaffehn
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.
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 etwasGleich 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?
Setz das Appnote doch als Inline-ASM um... Atmel hat irgendwo den fertigen ASM Source.
Gruss,
SIGINT
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
https://www.roboternetz.de/wissen/in...en_mit_avr-gcc
Warum denn inline asm? Damit vergrößerst du die Hardwareabhänigkeit noch weiter....
Disclaimer: none. Sue me.
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.
Lesezeichen