Sida 1 av 2

avr: använda xtal1 etc som i/o

Postat: 10 januari 2007, 14:15:22
av Micke_N
Hej, Jag har en ATmega88 och jag tänkte använda hela portb som utgångar, pb6 och pb7 ligger på samma pinnar som xtal1 och xtal 2. I databladet (s 74) finns det en tabell över "overriding signals for alternate functions in pb7..pb4". För pb7/xtal2 står det "/INTRC x /EXTCK + AS2", jag har satt AS2 biten, men hur ska jag göra för att uppfylla det första villkoret? M.a.o. vilken klocka ska jag använda om jag inte får använda intern RC osc. eller extern klocka, det känns som det kvarstående alternativet är en extern kristall men det känns ju inte aktuellt om jag ska använda pinnen till i/o?

/Micke

Postat: 10 januari 2007, 17:28:48
av peter555
Jag vet inte om det skiljer sig mellan din CPU och Tiny24 som jag provat på. Jag har endast satt DDR registret för att använda osc pinnarna som output

Re: avr: använda xtal1 etc som i/o

Postat: 10 januari 2007, 19:30:57
av Stinrew
Micke_N skrev:M.a.o. vilken klocka ska jag använda om jag inte får använda intern RC osc. eller extern klocka, det känns som det kvarstående alternativet är en extern kristall men det känns ju inte aktuellt om jag ska använda pinnen till i/o?

/Micke
Alltså du kan antingen köra den här uCn med "extern klocka". Det innebär att du har en kristall ansluten till PB6-7, eller så kör du med intern RC-oscillator och kan använda PB6-7 som vanliga I/O. Varför säger du att du INTE FÅR "använda intern RC osc."????

Postat: 10 januari 2007, 21:40:06
av Micke_N
Så här ser tabellen ut:
Bild

Som jag tolkar rutan längst upp betyder strecken ovanför EXTCK och INTRC ett logiskt "icke"? Menar du att jag ska ha både kristall och signal ut på pinnarna i såna fall (känns konstigt)?

Postat: 10 januari 2007, 22:57:55
av vfr
Jag tror han menar precis det han skriver: "Varför säger du att du INTE FÅR "använda intern RC osc."???? "

Det undrar jag också....

Vad är problemet med intern oscillator?

Postat: 11 januari 2007, 01:16:50
av JimmyAndersson
"Varför säger du att du INTE FÅR "använda intern RC osc."???? "

Ibland är folk lite väl snabba att överdriva med frågetecken och konstiga attityder så fort man undrar något. Ska det verkligen behöva vara såhär?


Micke_N: Rätt mig om jag har fel nu:
Du vill använda hela port b som utgångar och undrar därför vilken klocka du kan använda?

Postat: 11 januari 2007, 01:50:30
av Stinrew
Jag börjar med att be om ursäkt för att jag betonade "inte får" i mitt förra inlägg. Det var inte meningen att skrika, jag ville bara betona vad jag inte förstod.


Jag ANTAR att du vill använda dig av PB6-7 som I/O, för att få tillräckligt många anslutningar till något projekt med en mega88 som du pysslar med.

Då får du använda dig utav något av dom 2 lägena med intern oscillator(CKSEL 0b0010 eller 0b0011). Signalerna i den tabellen du visar i ditt senaste inlägg behöver du mest troligt inte bry dig om alls. Däremot behöver du initiera PB6-7 som in- eller utgångar, precis som dom övriga pinnarna i port-B-registret DDRB.

Postat: 11 januari 2007, 01:56:10
av JimmyAndersson
Men då är allt lugnt. :)

Jag har ingen erfarenhet av AVR, men jag förstod i princip. Micke_N förstår nog mer. :)

Postat: 11 januari 2007, 02:04:13
av Stinrew
Tack Jimmy! Bra att du säger till, så att man inte skrämmer bort nya forumister. Det var ju givetvis inte min mening. :oops:

Postat: 11 januari 2007, 08:53:16
av exile
Om man tar raden längst upp, PUOE = Pull-up Override Enable.
Delvis om den är sann kan du inte med mjukvara ändra den.

Jag hoppas att det förklarar en del saker ^^

Postat: 11 januari 2007, 12:04:58
av Micke_N
Tack för alla svar, ska testa CKSEL enligt Stinrew's tips och se vad som händer, jag sätter (redan) hela DDRB till utgång.

Jag tror jag läste någonstans i databladet att den interna oscillatorn var uppbyggd av en RC-krets och det var utifrån detta jag drog slutsatsen att det inte skulle fungera, eller åtminstone att allt blev motsägelsefullt. Man kanske inte borde läsa så mycket i databladet, blir mycket mindre information att blanda ihop då :roll:

Just nu vill då inte skrället programmera sig överhuvudtaget längre, efter lite trial and error med CKSEL har den hamnat i 128 kHz intern osc. med CKDIV 8 programmerad och dessutom med CLKPS3..0 till "1000" dvs ytterligare dividerad med 256 => långsamt (62,5 om jag räknat rätt)! Enligt databladet (kunde inte hålla mig från att läsa lite mer...) så är "Additional Delay from Reset" 14CK + 64 ms, dvs en mindre evighet, kan det vara detta som gör att programmeraren försöker skicka programmet innan Reset är klart eller något liknande?

Finns det någon inställning i avrdude som säger hur länge man ska vänta från det att Reset dragits låg tills programmeringen börjar? Använder icprog f.ö.

Postat: 11 januari 2007, 14:20:56
av Stinrew
När du programmerar flashen med vanlig lågspänning använder programmeraren ett ISP-interface. För att det ska fungera måste frekvensen på ISPn vara mindre än en fjärdedel av mikrokontrollerns arbetsfrekvens.

Postat: 11 januari 2007, 19:29:34
av Micke_N
Tack för det, hade jag glömt. Hittade "-i" i avrdude men det blev ingen omedelbar framgång. Jag funderar på om någon/några delay(er) kan vara för kort(a)? Lite mer trial-and-error (mest det sista :roll:)

Kod: Markera allt

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

Postat: 11 januari 2007, 20:17:02
av Micke_N
Jag kör följande rad:

Kod: Markera allt

avrdude -p m88 -P com1 -i 100000 -v -u -U lfuse:w:0x62:m
Får felet ovan hela tiden, :( någon som har en aning om varför? Reset dras låg när den ska och jag kan se att det verkligen händer något på mosi,miso,sck när den försöker nå programmet. Någon delay som är fel? I så fall vilken, jag tycker inte att avrdude.conf är särskilt lätt att begripa i detta fall eftersom man inte vet om det är ms eller us som ska anges i parametrarna.

Postat: 11 januari 2007, 21:04:08
av Stinrew
Vad är det för programmerare som du använder? STK500??