Jag tror precis jag råkade döda en Mega8... men när jag tänker efter så är det inte omöjligt att jag satte den på "external clock" (läs: ej "external ceramic crystal/resonator)....
Men vad fan är en extern klocka?
Typ 555:a? Finns det något sätt att fixa tillbaka så det blir rätt igen? Skulle eventuellt kunna programmera en annan AVR att generea en klockpuls om det nu är så
To drive the device from an external clock source, XTAL1 should be driven as shown in Figure 13. To run the device on an external clock, the CKSEL Fuses must be programmed to 0000. By programming the CKOPT Fuse, the user can enable an internal 36 pF capacitor between XTAL1 and GND.
Figure 13. External Clock Drive Configuration
(Figur 13 visar att man kopplar in klockan på XTAL1 och låter XTAL2 vara oinkopplad.)
Du kan driva den från en 555'a, eller dra en kort sladd från XTAL2 på en AVR som fungerar (med kristall/resonator)
När jag har dummat mig på motsvarande sätt så brukar jag använda en gammal kristall-oscillator som jag plockat av en uråldrigt graffakort. typ en sån här:
Fick en ny fräsch kristalloscilator (EXO3, 16MHz) med inbyggd divider av skolan igår. Funkade finfint att återuppliva den. Fasst nu är det något annat som krånglar, UART:en levde bara en minut. Nu skickar den junk Aja, säkert nån enkel miss jag gjort nånstans. Får ta det när jag kommer hem från skolan.
Hmm.. Jag har också uart problem.
Jag har skrivet en rutin som loopar tillbaka allt den får ifrån datorn.
I början fungerade den som den skulle men efter lite annat meck så börjar den loopa helskumma värden.
okej. har undersökt min lite mer. ibland loopar den korrekta värden och ibland inte, vet inte om det är nån bug i koden eller om det är något i hårdvaran. typ som om resonatorn skulle ändra frekvens lite för mycket (felkopplad!? ). har iofs ingen avstörningskonding på max232
+- 2% brukar vara ok att diffa i frekvens till en UART och så dåliga brukar inte ens resonatorer vara.
Ibland kan mottgaren missa att synka in rätt på startbiten om sändaren skickar en _kontinuerlig_ dataström, det kan underlätta om mna går över till 8N2 istället, fast det säkraste är att göra en paus på minst en teckentidslucka för att tvinga in dom i synk med varandra.
9600 8N1 är väl inte direkt mågot extremt? Lång? Nä en meter kanske!? Har ju alltid funkat förut. Inga Farliga hastigheter heller. Skickar väl bara några bytes hit och dit.
Den funkar... man bootar om.. den funkar inte.. man bootar om den några gånger till och så funkar den igen.. lite mysko det där. :/
Får nog ta en närmare titt och se om det är någon bygling eller något annat enkelt som jag missat.
Tur att jag fick liv i den iaf.. tjänade 80 spänn där
9600 i nån meter, nä det är inget att vara lessen på. Värre hade det varit om det var 230K i 25 meter med skräpkabel :-)
Om du bara skickar enstaka bytes och den kommer igång lite slumpmässigt efter ombootingar så skulle jag snarare börja leta i mjukvaran. Det låter som om du antingen missat att nollställa nån variabel eller att initiera alla register som behövs för uart'en. Kör du interruptstyrt?
EDIT:
Efter att ha sätt över mina interrupts och laggt till 2st 100nF kondingar på AVR och max232 (mellan vcc och gnd) så verkar det funka skitbra nu. Hade nog bara glömt pusha/popa några register i en interrupt tror jag.
/EDIT
Och så en interrupt för RXC som loopar tillbaka datan. Självklart väntar den med att loopa tills UART:en är redo för det.
Det konstigaste är ju att jag använder samma kod för att sparka igång UART på andra ställen, utan problem. Och den resten av koden är ju svår att misslyckas med.
Aja, skola nu igen, får se om jag hinner mecka lite ikväll med det.. Håller ju på skriva lite på min LED-display. Den börjar alltid på olika kolumner och håller inte själv koll på var den är :] Måste göra något åt det.