Skip to content

Teknologiske eksperter i team

Sections
Personal tools
You are here: Home » Teknoblog » Mikrokontrollerens finurlige verden

Mikrokontrollerens finurlige verden Mikrokontrollerens finurlige verden

Document Actions
Submitted by stain. on 2005-03-19 12:55 PM. Mikrokontroller
Enda mer slit med mikrokontrolleren denne gang.

Onsdag 2005-03-16 samlet vi oss igjen, først på Kattelabben (som visstnok er for de tøffe guttene sammenliknet med Fiskelabben). Første problem var at Dag Håkon hadde glemt strømadapteren til mikrokontrolleren, så Stian måtte løpe og låne en tilsvarende adapter ifra IT-seksjonen.

De som arbeidet med kontrolleren denne dagen var Dag Håkon, Torbjørn og Stian. Hvis jeg husker rett. Egentlig var vel Erlend og Andreas også involvert når ting begynte å bli merkeligere.

Igjen kom vi bort i rare serieportproblemer. Vi prøvde å dumpe dataene ifra kameraet, og på merkelig vis så ble dette bare 1020 byte istedet for de ca 10.000 vi ventet. Alle iherdige forsøk på å dekode dette med programmer som Photoshop eller Gimp viste seg nyttesløse. I de tilfeller hvor man fikk et bilde ut dreide det seg om enkeltstående linjer som hadde en fin gradering.

Videre forsøk på å bare skrive ut "xxxxxxxx..." istedet for bildedata gav også litt rare resultater, her fikk man istedet "abcdefgh..." - litt merkelig. Mikrokontrolleren kan altså leve sitt eget liv. Det kunne i det hele tatt virke som om denne såkalte kompilatoren syntes det var helt OK å plassere flere variabler på samme minneområde, noe som førte til litt merkelig programflyt og enda rarere resultater.

Utover dagen satte vi oss på sanntidslabben, som var helt ledig. Her gjorde vi to oppdagelser. Den ene var at vi målte med oscilloskopet (mest for gøy) klokken på mikrokontrolleren. Istedet for 8 MHz var denne 3,71 MHz. En kamerat av Stian som var på labben kom bort og kunne bekrefte at det hele nok kjørte på 3,71 MHz. Vi sjekket også opp databladene på STK500 og STK501, og joda, ganske riktig. Dette 8 MHz-greiene må vi ha innbilt oss.

Dette førte til at alle utregninger for serieporthastighet var helt på syre. Ny kalkulasjoner ble utført, og nå ble seriekommunikasjonen klokkestabil. Ikke et tegn gikk tapt, og alt kom riktig frem. "Linjestøyen" var borte med en gang.

Det andre tipset kom da Stian spurte om disse "High memory address"-pinnene. Det var riktig at de skulle stå tilsluttet slik de stod nå, det var nemlig slik at man kunne velge å bruke disse som dataporter hvis man ikke hadde bruk for mer minne. Men den viktige detaljen var at man også måtte koble til "SRAM enable"-biten. Den hadde vi glemt!SRAMEN connected to GND

Ved å koble til den så det ut til at ting fungerte en god del bedre. Nå gikk både forsøk på å lagre "xxxx" og "abcdefg" (denne gang med vilje) i det utvidede minnet kjempefint. Dog må man selv fortsatt si char *image = 0x1100; - kompilatoren er fortsatt helt på syre hvis man prøver seg på noe så naivt som char image[10000];.

Det er fortsatt problemer, dog, denne gangen enda rarere. Når man bruker read_image() istedet for å bare lagre "x"-er eller alfabetet, så oppfører programmet seg merkelig. Enten henger det, eller så går det i evig loop hvor den hopper tilbake til "Initialiserer"-biten. Dette lukter at stacken er overskrevet eller noe sånt siden programflyten er helt på syre. Jeg vet ikke om dette er innstillinger i kompilatoren eller ikke.

Stian prøvde derfor såvidt å prøve å kompilere med avr-gcc istedet, men ble ikke ferdig med dette før dagen var slutt.

 

Powered by Plone

This site conforms to the following standards: