Hi Ich möchte den Attiny25 als SPI-Slave benutzen. Ich brauche aber gleichzeitig beide Highspeed-PWM Kanäle. D.h ich müsste mein 2. PWM an DO ausgeben. Da der Slave sowieso nur empfängt ist das auch kein Problem. Die Frage ist nur ob mir das SPI dazwischenfunken wird. Welche HW hat höhere Priorität: SPI oder PWM?
Müsste es nicht eigentlich reichen, wenn du ihn im Two-Wire mode betreibst? Dann ist DI (bzw. SDA) bidirektional und DO wird nicht verwendet.
Gast
#2291316
>Welche HW hat höhere Priorität: SPI oder PWM?
Probiers doch einfach aus.
Timmo H. schrieb: > Müsste es nicht eigentlich reichen, wenn du ihn im Two-Wire mode > betreibst? Dann ist DI (bzw. SDA) bidirektional und DO wird nicht > verwendet. Das Problem dabei ist, dass der andere Avr kein HW-I2C hat und softI2C zu lange dauert.
Samuel K. schrieb: > Das Problem dabei ist, dass der andere Avr kein HW-I2C hat und softI2C > zu lange dauert. Ja aber es geht hier doch um SPI. Und wenn du nur 2-Wire aktivierst arbeitet er doch quasi genauso mit dem Unterschied dass du SDA nur bei bedarf als Ausgang setzt. Damit wäre dein benötigter DO immer frei.
Timmo H. schrieb: > Ja aber es geht hier doch um SPI. Und wenn du nur 2-Wire aktivierst > arbeitet er doch quasi genauso mit dem Unterschied dass du SDA nur bei > bedarf als Ausgang setzt. > Damit wäre dein benötigter DO immer frei. Ok, da lag ich falsch. Trotzdem bin ich ziemlich verunsichert durch USIWM0/1: Ich müsste 10 auswählen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
Hier wird die ganze Zeit von Startsignal (im Sinne I2C/TWI) geredet. Ist das ganze wirklich nur per Software geregelt und nicht zwingend? Das hieße folgende Init würde reichen:
1 | |
2 | |
Gast
#2291474
>>Welche HW hat höhere Priorität: SPI oder PWM? > >Probiers doch einfach aus. Hast du das immer noch nicht gemacht? Das sind zehn Zeilen Code und das Thema könnte beendet sein.
holger schrieb: > Hast du das immer noch nicht gemacht? Das sind > zehn Zeilen Code und das Thema könnte beendet sein. Das wäre doch viel zu einfach ;) Hätte ich das Problem gehabt hätte ich erstmal 1 Minute Arbeit investiert um es einfach auszuprobieren, zumal es einen viel größeren Lerneffekt hat.
Timmo H. schrieb: > Das wäre doch viel zu einfach ;) Hätte ich das Problem gehabt hätte ich > erstmal 1 Minute Arbeit investiert um es einfach auszuprobieren, zumal > es einen viel größeren Lerneffekt hat. Ihr seid ja mal wieder lustig. Dich will ich das in einer Minute erstmal machen sehen. Und keine Sorge: Lerneffekt für mich wird es noch genug geben. Ich bin übrigens gerade dabei das Programm zu schreiben. Nur weiß ich nicht alle Register auswendig. Dazu kommen noch ein paar Unverständlichkeiten aus dem Datenblatt usw. z.B. Warum gibt es ein PWM und ein CTC bit. Anscheinend erfüllen beide aber dieselbe Funktion: Der Zähler wird beim Compare Match zurückgesetzt. Das ganze sollte zudem in Assembler geschrieben sein, da ich dem C-Compiler bei zeitkritischen Sachen nicht über den Weg traue und er seine Eigenheiten hat wie z.B Stackpointer initialisieren, was ich hier überhaupt nicht gebrauchen kann, da ich gerne einen 128Byte Buffer hätte.
Gast
#2291551
>Das ganze sollte zudem in >Assembler geschrieben sein, da ich dem C-Compiler bei zeitkritischen >Sachen nicht über den Weg traue und er seine Eigenheiten hat wie z.B >Stackpointer initialisieren, was ich hier überhaupt nicht gebrauchen >kann, da ich gerne einen 128Byte Buffer hätte. Du kannst hier ruhig noch weiter dummes Zeug labern. Die Zeit zum schreiben eines einfachen Testprogramms das nicht zeitkritisch ist ist schon längst abgelaufen. SPI Modul auf Slave initialisieren, muss ja keine Übertragung stattfinden. Nuffer? Scheißegal! PWM initialisieren. Nachsehen ob PWM aus Pin kommt, und fettig.Wo ist da das Problem?
Gast
#2291555
>Nuffer?
Upps. Muss das N nun unbedingt so dicht neben dem B sein;)
Samuel K. schrieb: > Ihr seid ja mal wieder lustig. Dich will ich das in einer Minute erstmal > machen sehen. Und keine Sorge: Lerneffekt für mich wird es noch genug > geben. Ich lass mir nicht so gerne dabei zugucken ;) Aber viel mehr als 1 Minute wirds nicht sein...sind doch nur ein paar Register/Bits die da mitspielen... selbst wenn es 30 Minuten bei dir gedauert hätte...19:43 (erster Post) und jetzt (22:51) hätte mit Sicherheit gereicht. Und bisher bist du halt noch kein Stück schlauer, was du aber beim selbst ausprobieren gewesen wärst. Sicherlich gibts ein paar Leute die schonmal das gleiche Problem hatten, nur schauen die halt nicht unbedingt jede Minute hier ins Forum.
holger schrieb: >>Das ganze sollte zudem in >>Assembler geschrieben sein, da ich dem C-Compiler bei zeitkritischen >>Sachen nicht über den Weg traue und er seine Eigenheiten hat wie z.B >>Stackpointer initialisieren, was ich hier überhaupt nicht gebrauchen >>kann, da ich gerne einen 128Byte Buffer hätte. > > Du kannst hier ruhig noch weiter dummes Zeug labern. > Die Zeit zum schreiben eines einfachen Testprogramms > das nicht zeitkritisch ist ist schon längst abgelaufen. Genauso kannst du dich mal ein bisschen zurückhalten und nicht gleich so genervt reagieren. Ist schließlich nicht dein Problem. Und Dummes Zeug war es bestimmt nicht! Da das ganze jetzt doch geklärt ist, werde ich nicht nur eine kleine Testsoftware schreiben, sondern gleich das vollständige Programm. Timmo H. schrieb: > Aber viel mehr als 1 Minute wirds nicht sein...sind doch nur ein paar > Register/Bits die da mitspielen... Bei mir ist das längste das Register nachschlagen - das kann schon mal mehrere Minuten gehen, wenn man sich einen ganzen Abschnitt im Datenblatt durchlesen muss.
Samuel K. schrieb: > Bei mir ist das längste das Register nachschlagen - das kann schon mal > mehrere Minuten gehen, wenn man sich einen ganzen Abschnitt im > Datenblatt durchlesen muss. Ist am Anfang immer so (auch bei mir), aber in fast 3 Stunden hätte man das schaffen können. Ist ja bei Tiny nur ne Hand voll Seiten und beim nächsten mal gehts ja auch schneller. SPI im TWI sind nur zwei Bits und PWM hast du ja schon...?!
Timmo H. schrieb: > Ist am Anfang immer so (auch bei mir), aber in fast 3 Stunden hätte man > das schaffen können. Ist ja bei Tiny nur ne Hand voll Seiten und beim > nächsten mal gehts ja auch schneller. SPI im TWI sind nur zwei Bits und > PWM hast du ja schon...?! Die Konfiguration hab ich schon länger (beim PWM sind es nur COMxx + PWM -bits), nur nicht getestet, da ich die Schaltung noch nicht aufgebaut habe. Mich verwirrt gerade eher das Feature "Data received interrupt" vom USI und die Tatsache, dass es nur 2 Interrupts gibt: USI_START und USI_OVF, wobei nur START in Frage kommt. Bei TWI wäre das ja schön und gut, denn da gibt es die Startcondition auch, nur bei SPI nicht. Außerdem heißt es Data received, die Startcondition kommt aber vor dem Empfangen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.