Porta kod från Arduino Uno till ATtiny85

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Xoffis
Inlägg: 303
Blev medlem: 31 maj 2014, 19:13:37
Ort: Ingelstad
Kontakt:

Porta kod från Arduino Uno till ATtiny85

Inlägg av Xoffis »

Jag har hittat kod på nätet för att lura stereon i bilen till att tro att man kör med en CD växlare så man kan ha AUX in utan att köra med en kasett adapter!

Men det känns som overkill att ha en hel UNO liggandes bakom stereon så tänkte porta koden till en tiny med ett eget litet kort

Men koden är skriven med "PortManipulation" vilket är helt nytt och okänt för mig! Och tydligen inte en funktion som tiny klarar av... :(

Kanske är det mer i koden som kommer strula, men just detta är det första IDE säger inte funkar, så en sak i taget =)

Som jag förstår det så använder de "PortManipulation" för att det är tidskänsligt så att använda PINMODE går för långsamt, går detta komma runt med attiny?

Här är första snutten IDE inte gillar

Kod: Markera allt

    DDRD &= ~(1<<MELBUS_DATA);
Tack på förhand =D
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32892
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av HUGGBÄVERN »

Ingen expert på Arduino, men en Atmega628P, eller vad den nu heter är ju marginellt större en en tiny.
FormerMazda
Inlägg: 6103
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av FormerMazda »

Ta en mindre arduino då?
En nano har ju typ samma prolle som uno om jag ser rätt? 328P vs 328 endast, vet inte om det påverkar detta projekt?

https://store.arduino.cc/products/arduino-uno-rev3
https://store.arduino.cc/products/arduino-nano
SeniorLemuren
Inlägg: 7823
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av SeniorLemuren »

Vist kan man manipulera portarna på en Atiny, men den har ju mindre antal portar så registren ser inte likadana ut. Kolla portregistret på Uno resp Atiny. Bifogat bild portreg. och portconfig fär Atiny.
Länk till ATtiny85 Datasheet
atiny port register.png
atiny pinkonfig.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26184
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av Icecap »

Om t.ex. DDRD inte är definierat kommer det ett kompileringsfel.
Samma med MELBUS_DATA.

Även om dessa är definierat till någon icke-existerande port.

Dessa är sannolikt definierat i någon .H-fil i originalprojektet.
Xoffis
Inlägg: 303
Blev medlem: 31 maj 2014, 19:13:37
Ort: Ingelstad
Kontakt:

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av Xoffis »

Projektet i sin grund kommer här ifrån!

https://gizmosnack.blogspot.com/2015/11 ... radio.html

Kanske är till och med Karl Hagström en som hänger här i forumet? =D

Men tänkte börja med koden som är moddad av Sebastian som finns här https://gist.github.com/klalle/1ae1bfec ... 492180565e

HUGGBÄVERN skrev: 30 april 2024, 15:50:21 Ingen expert på Arduino, men en Atmega628P, eller vad den nu heter är ju marginellt större en en tiny.
Tänkt mig ett eget litet PCB med saker jag har hemma och en DIP8 är betydligt mindre än en DIP28 =)
FormerMazda skrev: 30 april 2024, 15:56:12 Ta en mindre arduino då?
En nano har ju typ samma prolle som uno om jag ser rätt? 328P vs 328 endast, vet inte om det påverkar detta projekt?

https://store.arduino.cc/products/arduino-uno-rev3
https://store.arduino.cc/products/arduino-nano
Som sagt, vill göra eget litet PCB med delar jag har hemma, har ju 328 också, men blir ju större (å lite dyrare)
SeniorLemuren skrev: 30 april 2024, 16:11:30 Vist kan man manipulera portarna på en Atiny, men den har ju mindre antal portar så registren ser inte likadana ut. Kolla portregistret på Uno resp Atiny. Bifogat bild portreg. och portconfig fär Atiny.
Länk till ATtiny85 Datasheet
atiny port register.png
atiny pinkonfig.png
Detta skall jag kika på! kanske bara är att ändra lite då?
Användarvisningsbild
hawkan
Inlägg: 2663
Blev medlem: 14 augusti 2011, 10:27:40

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av hawkan »

Finns ju atmega328 pro mini, har gjort en del projekt med den.
Och nano, ungefär samma fast med usb-port.
Bild
Bild

Förslag är att du gör en pro mini version. Är du nöjd med funktionen och vill göra en attiny så har du
mycket hjälp av att kunna se hur signaler och data ska vara. När du portar till attinyn.
Mindmapper
Inlägg: 6458
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av Mindmapper »

Xoffis skrev: 30 april 2024, 15:11:53 Jag har hittat kod på nätet för att lura stereon i bilen till att tro att man kör med en CD växlare så man kan ha AUX in utan att köra med en kasett adapter!

Men det känns som overkill att ha en hel UNO liggandes bakom stereon så tänkte porta koden till en tiny med ett eget litet kort

Men koden är skriven med "PortManipulation" vilket är helt nytt och okänt för mig! Och tydligen inte en funktion som tiny klarar av... :(

Kanske är det mer i koden som kommer strula, men just detta är det första IDE säger inte funkar, så en sak i taget =)

Som jag förstår det så använder de "PortManipulation" för att det är tidskänsligt så att använda PINMODE går för långsamt, går detta komma runt med attiny?

Här är första snutten IDE inte gillar

Kod: Markera allt

    DDRD &= ~(1<<MELBUS_DATA);
Tack på förhand =D
Som skrivits tidigare är registren inte lika.
Tiny UART lär också vara väldigt olika de större typerna.
Det blir väldigt stor skillnad i att använda UART och skifta över 8 bitar i taget eller att bitbanga.
Har inte tittat efter så noga men antar att programmet använder UART för kommunikationen mellan CD växlare och radion.
Användarvisningsbild
hawkan
Inlägg: 2663
Blev medlem: 14 augusti 2011, 10:27:40

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av hawkan »

Nej den använder inte uart, men det är rätt på så vis att det är stort sett omöjligt att lösa detta utan hela koden, iaf såpass att man förstår meningen av vad den ska göra.
Det finns två olika två-rader

Kod: Markera allt

DDRD &= ~(1<<MELBUS_DATA);
PORTD |= (1<<MELBUS_DATA);
    
PORTD &= (~(1<<MELBUS_DATA));
DDRD |= (1<<MELBUS_DATA);
    
    
MELBUS_DATA är pinne 4, den är normalt INPUT_PULLUP. Men tydligen är det så att i vissa fall efter man mottagit data
så ska pinnen sättas aktivt låg. Det är vad raderna gör (tror jag). Sedan återställer den. Gissar jag för jag orkade inte följa exakt.
DDRD är riktningsregister för PORTD, pinne 0-7. DDRD-raden ändrar från input till output på pinne 4, eller tvärtom.
PORTD-är pin-status för pinne 0-7. Den antingen sätter hög eller låg på pinne 4.

Så vad som behövs är motsvarande funktion för attiny.
Iofs undrar jag varför det inte går med pinMode och digitalWrite, det är inte speciellt mycket overhead i de funktionerna.
Se här för atmega https://github.com/arduino/ArduinoCore- ... _digital.c
Första försöket med attiny borde vara att använda pinMode och digitalWrite istället.

https://docs.arduino.cc/retired/hacking ... ipulation/
Användarvisningsbild
hawkan
Inlägg: 2663
Blev medlem: 14 augusti 2011, 10:27:40

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av hawkan »

Och om man pusslar med tidigare bild om register, så ser man att det bara finns en port på attiny85 portB.
Riktningsregistret verkar ha samma funktion och heter då DDRB.
PORTD vs PORTB och PINB är något annorlunda, men varför inte bara byta PORTD till PORTB? Kanske det funkar?
Annars får du titta in i funktionen av PORTB speciellt pullup-resistor om det är vad du vill ha.
Datablad är nödvändigt https://ww1.microchip.com/downloads/en/ ... asheet.pdf
Xoffis
Inlägg: 303
Blev medlem: 31 maj 2014, 19:13:37
Ort: Ingelstad
Kontakt:

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av Xoffis »

Ändrade alla D i dessa DDRD och PORTD till DDRB och PORTB då allt på tinyn ligger under B enligt Lemurens finfina bild!

Så nu verkar alla problem bara borta gällande det, men nu kom nästa (precis som jag trodde)

Nu gnäller den över

EIMSK och EIFR

:/

Arduino IDE föreslår att jag skall använda "GIMSK" istället för "EIMSK" och "TIFR" istället för "EIFR" och ja, då kompileras allt bra, men vad är skillnaden?
SeniorLemuren
Inlägg: 7823
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av SeniorLemuren »

Ja, det är ju samma där. registren år olika. se bilder.
arduino eimsk reg.png
arduino gimsk reg.png
Länk till hur det funkar
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Xoffis
Inlägg: 303
Blev medlem: 31 maj 2014, 19:13:37
Ort: Ingelstad
Kontakt:

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av Xoffis »

OK! Så då va IDEs tips rätt då!

Tackar för all hjälp! Nu skall vi se om det lirar också!

Lånat en radio av en polare så jag slipper riva ur min bil innan man vet! =)
SeniorLemuren
Inlägg: 7823
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av SeniorLemuren »

Lägg märke till att bitarna som används inte är samma på Uno och Atiny och att det bara finns interupt 0 på Atiny men interupt 0 och 1 på Uno. Läs mer här.
Användarvisningsbild
hawkan
Inlägg: 2663
Blev medlem: 14 augusti 2011, 10:27:40

Re: Porta kod från Arduino Uno till ATtiny85

Inlägg av hawkan »

Ja det går inte att göra detta utan att förstå vad som händer och hur man uppnår det med registren på attinyn.
Det går inte att bara byta en beteckning mot en annan. Med slumpen kan det stämma, men räkna inte med det.
Skriv svar