Gå til innhold

Skuggen

Medlemmer
  • Innlegg

    39
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av Skuggen

  1. Nå fikk jeg det til! JEJ

     

    .nolist
    .include "m128def.inc"
    .list
    
    init:         ldi r16, 0x00
     out ddra, r16
     ldi r16, 0xff
     out ddrb, r16
     clr r16
    
    prog:      in r16, pina
     out portb, r16
     rjmp prog

     

    Etter å ha tenkt meg om satte jeg hele port a på send(0x00) og hele part b på motta(0xff), så da når jeg trykket på SW1 sender jo denne 000001 til port b med sine respektive lamper :D Pretty fancy :D

    7521563[/snapback]

     

     

    Gratulerer! Ser ut som vi har nok en AVR-Frelst :D

     

    Gå ut og spre ordet, broder :thumbup:

     

    Hvis du vil ha et forslag til neste skritt:

    Finn ut hvordan PWM-modulen virker, så kan du dimme lysdiodene med knappene.

     

    Hilsen Øyvind

  2. Jeg sitter her med AVR studio og en STK500 og lurte på om noen kan hjelpe meg å lage et program som får den til å lyse når jeg trykker på knappene. Slik at når jeg trykker på SW0 så lyser LED0 osv :D Ville ha vært til stor hjelp siden jeg driver å jobber litt med forståelsen av STKen og sitter litt fast.

    7515298[/snapback]

     

    Hei!

     

    Det kunne vært nyttig med litt mer informasjon fra deg. Hvilken mikrocontroller du bruker og om du skriver mikroprogrammet ditt i C eller assembly er en bra start.

     

    Har ikke stk500 hjemme, men har brukt det en gang for en stund siden. Her er litt hjelp ut ifra det jeg kan huske:

     

    - Knapper og LEDs er i utgangspunktet ikke koblet til mikrocontrolleren.

    - For å koble til må du bruke ledningene som følger med STK

    - Se side 11 i userguide for stk500

     

    Forutsatt at LEDs og knapper er koblet riktig til portene på mikrocontrolleren må programmet ditt gjøre følgende:

     

    1. Definere pinnen du brukte til knappen som inngang (pinnen kan da avleses)

    2. Definere pinnen som er koblet til LED'en som utgang (pinnen kan da styres av/på)

    3. Programmet ditt må så starte en "uendelig" sløyfe som sjekker om knappen blir trykket

    4. Når knappen blir trykket så skrur du LED på hvis den var av og av hvis den var på (f.eks)

     

    NB! Signalet fra knappen kan være litt "stygt", dvs. hvis du trykker på knappen så vil signalet utløse flere endringer på LED før signalet har stabilisert seg (veldig fort)

     

    Dette er bare en grov skisse. Skriv hvilken mikrocontroller og hvilket språk du bruker, så kan jeg forklare litt nærmere hvis noe var uklart.

     

    Hilsen Øyvind

  3. Har allerede ATmega128

    7395955[/snapback]

     

    Jeg skrev kanskje litt uklart i det første innlegget mitt. For å bruke mikrocontrolleren din, så må du koble deg til den over programmeringsinngangene. For å gjøre dette må du enten bruke et utviklingskort (fra atmel eller andre, $$$), lodde den fast på et kort eller sette den i en sokkel. Min erfaring er at det er veldig vanskelig å finne en sokkel til denne controlleren. ATMega128 har 0.8 mm mellom hver pinne, så derfor mente jeg at du må være stø på hånda for å lodde den. Med mindre du har erfaring med SMD-lodding, så tror jeg med andre ord at du muligens ikke får brukt mikrocontrolleren din, jeg ville i alle fall ikke klart å lodde den. Derfor foreslo jeg å kjøpe en med 2.54mm mellom pinnene, slik at den ville passet inn på et hvilket som helst kretskort eller eksperimentbrett.

     

    Øyvind

  4. Usikker på hva jeg har....kjøpte den av en lærer på skolen min....har ikke drevet med mer en 1/2 års arbeid med assembly...men ble intersert i det

    7395296[/snapback]

     

    www.atmel.com finner du datablad til alle atmel-controllere. Selve programmeringen er omtrent lik på alle AtMegaene. Hvis du vil ha en mikrocontroller fra atmel med 2.54mm avstand mellom pinnene så kan du f.eks kjøpe deg en ATMega8, ATMega16 eller ATMega32 fra elfa. Dette er "standardcontrollere" som de fleste AVR-nybegynnere starter med (meg selv innkludert). Forskjellen på de tre er størrelsen på program- og dataminnet. For å styre et par lysdioder så klarer du deg lenge med en ATMega8.

     

    Øyvind

  5. Hei

     

    Jeg ønsker og kontrollere lyset på rommet mitt...og det burde gå an via en mikrokontroller...noen som har forslag til hvordan og hva utstyrmessig trenger jeg...tenkte å bruke LEDS....har en AVR ATmega128

    7333917[/snapback]

     

    Hei!

     

    Ta en titt på denne tråden. Der diskuteres akkurat noe lignende. Har du sokkel eller utviklingskort for ATMega128? Hvis ikke har du en case når den skal loddes ;) (med mindre du er veldig stø på hånda).

     

    Øyvind

  6. Skuggen: Får jeg kjøpt alt jeg trenger for eksempel hos ELFA? Den kontrolleren støtter vel at ulike knapper kan føre til ulik belysning osv.? Det er kanskje mer komplisért enn jeg først tenkte, men slikt liker jeg.

     

    Du får nok alt du trenger hos elfa. Dette er et forslag fra min side:

     

    -Mikrocontroller: ATMega8L (L versjonen klarer seg med 2,7V - 5,5V spenning)

    -Passende IC-sokkel (kan også loddes rett inn)

    -Batteriholder: f.eks med plass til 3 AA batterier (=4,5V med nye batterier)

    -Trykkbrytere

    -Lysdioder (pass på strømforbruk)

    -Eventuelt transistor(er) for å styre lysdioder

    -Kretskort for å bygge alt på

    -"pinner" for å koble til programmerer (husker ikke det norske navnet, bor i tyskland :D)

     

    Det var mitt forslag til hardwareliste. I prinsippet skulle du også hatt noen kondensatorer over strømforsyninga på mikrocontrolleren. Se AVR Hardware considerations for detaljer rundt dette.

     

    Det eneste som mangler da er programmereren. ELFA tilbyr denne her, men den er rimelig dyr. Det finnes "pirat"-versjoner av denne på nettet, men vet ikke om noen norske nettbutikker som selger disse (kanskje noen andre har en idé?). Jeg kjøpte en billig versjon på MyAVR.de for en god stund siden, men de selger ikke den enkle varianten nå lenger så vidt jeg kan se. Søk på AVR ISP på google, så finner du muligens noe. Som nevnt i en tidligere post er AVRfreaks en meget bra informasjonskilde.

     

    Et tips fra min side er å søke litt etter temaet AVR og ATMega på google. Det er skrevet utallige tutorials rundt AVR-serien til Atmel og disse hjelper deg å få et godt overblikk over funksjonene på mikrocontrolleren. Den kan nemlig gjøre mye mer enn å styre en lysdiode av og på ;). Hvis du f.eks setter deg inn i hvordan PWM fungerer, så kan du enkelt og greit dimme lyset av og på. Totalt unødvendig, men artig å lage.

     

     

    Øyvind

  7. Det høres litt spennende og "vanskelig" ut.

     

    Veldig vanskelig er det ikke, men som med alt annet må man som regel kjempe med innstillinger osv. for å få det til å virke første gangen. På siden AVRfreaks finner du bl.a. en introduksjon. Mikrocontroller.net er en bra side med masse informasjon og et veldig bra forum, men alt der er på tysk.

     

     

    20mA, det blir vel ikke så mange lysdiodene det?

    Det blir ganske nøyaktig 10 lysdioder hvis du finner noen som trekker 2mA ;). Mikrocontrolleren har typisk 20< utganger/innganger, og med 10 lysdioder på hver utgang skulle det være mulighet for å koble til ganske mange. Bruker du lysdioder som trekker mer strøm så kan du jo alltids bruke en transistor for å styre strømmen.

     

     

    Er dette noe som kan kobles til PC eller noe sånt?

    En mikrocontroller er en IC som inneholder en prosessor og et minne som inneholder mikroprogrammet ditt og eventuelle data. Porter som kan konfigureres som inngang eller utgang brukes til å kommunisere med omverdenen (f.eks via lysdioder og brytere). Noen av portene brukes til å koble mikrocontrolleren til en PC e.l. for å programmere controlleren med det programmet som du har skrevet i C og kompilert. For å gjennomføre en slik programmering trenger du en programmerer som kobles mellom parallell-/seriell-/usb-port og mikrocontrolleren.

     

    Du har med andre ord en programmerbar kontrollenhet som kan brukes til å styre så og si alt.

     

    Se også Wikipedia-Mikrocontroller

     

    C kan jeg forresten. ;)

    Det er en bra start. For å slå av og på lysene trengs ikke mange linjene med kode.

     

     

    Legger ved et lite bilde som eksempel. Håper informasjonen er til nytte.

     

     

    uciy7.jpg

  8. En annen mulighet er å bruke en mikrocontroller for å styre hvor lenge lysdiodene skal lyse. Hvis du finner noen low current lysdioder (ca 2mA), så kan du styre disse direkte fra en eller to utganger. Utgangene på f.eks Atmel sine AVR-Controllere tåler 20mA.

     

    Disse Mikrocontrollerne har også innebygde PWM-utganger som eventuelt kan brukes til å dimme lysdiodene. Atmel tilbyr gratis utviklingsprogram med simulator og C-Compiler, men du må ha en programmerer for å programmere Controlleren.

     

    Bare et lite "ikke-analogt" forslag fra min side. Er gjerne behjelpelig med spørsmål rundt bruk av AVR-mikrocontrollere.

     

     

    Øyvind

  9. Hvis du vil lære java ordentlig så kommer du nok desverre ikke unna å lese litt i en bok. Da jeg lærte meg Java så leste jeg en bok, og etter hvert kapittel prøvde jeg å forestille meg hva det jeg nettopp hadde lest kunne brukes til (bortsett fra å stå på eksamen ;) ).

     

    Prøv å forestille deg f.eks et enkelt spill og hvordan de forskjellige funksjonene til java kan brukes der.

     

    Hvorfor er det en fordel med objekter som arver egenskaper/metoder?

    Hvorfor er det lurt å lage interfacer?

    Hvorfor bruke forskjellige datastrukturer?

    Hvorfor bruker man rekursjon i stedet for en loop?

     

    En ting er å kunne et programmeringsspråk "flytende", en helt annen ting er å skrive gode, strukturerte og lett utvidbare programmer. Det lærer man seg gjennom bøker, web tutorials og prøving og feiling.

     

    Et godt opplæringsprogram som brukes på universitetet mitt er BlueJ. Har ikke prøvd det selv, men en kamerat har fortalt meg at han syntes det var veldig nyttig for å forstå konseptet bak objektorientert programmering.

     

    Lykke til!

     

    PS! Et must når man driver med java er å lære seg å bruke Java API. Lurer du på en funksjon, konstant eller klasse så står det der.

  10. må en ikke ha noe sånn som dette for at det skal komme opp?

    getContentPane().add(logo, BorderLayout.NORTH);

     

    Det fungerte verken med det eller uten.

    Men takk for hjelpen så langt.)

     

    Var kanskje litt kjapp der... Kopierte bare den koden du skrev. Her er litt modifisert kode som jeg har brukt selv og som funker hos meg. Regner med at du har satt layouten på hovedpanelet ditt til BorderLayout. Husk også at hvis du legger til to komponenter i samme del av BorderLayout (f.eks to JLabeler i SOUTH), så vil bare den siste vises.

     

    setLayout(new BorderLayout());
    JLabel lblBilde = new JLabel(new ImageIcon("bilde.gif"));
    add(lblBilde, BorderLayout.SOUTH);
    

     

    Koden ovenfor må selvfølgelig utføres på riktig Container.

     

    Kan også anbefale deg å lese swingtutorialen fra sun. Den finner du her.

  11. Image er ikke en Component. Sett bildet ditt inn i en JLabel og legg til JLabel'en i logo. Har ikke testa, men det burde funke slik:

     

    JPanel logo = new JPanel();
    
    //Ny linje
    JLabel lblBilde = new JLabel(new ImageIcon("bilde.gif"));
    
    Container Logo = getContentPane();
    logo.add(lblBilde);
    

  12. Hele algoritmen går ut på at du subtraherer B fra A så mange ganger som mulig. Når A er mindre enn B er du ferdig. C inneholder da det antallet ganger du har trukket B fra A, og A inneholder resten fra divisjonen.

     

    A = 17

    B = 5

     

    A/B:

     

    (1) A = 17 - 5 = 12

    (2) A = 12 - 5 = 7

    (3) A = 7 - 5 = 2

     

    C = 3 og rest = 2 (A)

     

     

     

    Det er flere måter å gjøre det på, her er en mulighet:

     

    .def A = R16         ; Deklarerer A
    .def B = R17         ; Deklarerer B
    .def C = R18         ; Deklarerer C
    
    ;21 og 5 er bare eksempelverdier
       ldi  A, 21     ; A = 21
       ldi  B, 5      ; B = 5
    
       clr  C         ; C = 0
    
    div_loop:
       sub  A, B           ; Subtraherer B fra A
       brcs	div_end        ; Ferdig hvis A-B er mindre enn 0 (Branch if carry set)
       inc  C              ; Høyner C med 1 hvis subtraksjonen gikk uten underflow
       rjmp	div_loop       ; Loop
    
    div_end:
       add  A, B           ; Legger til B igjen p.g.a. underflow
    
      ;Nå står svaret i C og resten i A
    

     

     

     

    Her er en PDF med alle AVR-kommandoer

  13. :D hehe...

     

    Seriøst, hvor avansert er den tutorialen? Så lenge jeg er omgitt av tålmodige tyskere så klarer jeg meg sånn passe som turist der :)

     

    Burde kanskje nevnt det, tutorialen er ikke en generell tutorial for AtMega, heller for å programmere Atmega'en i C. Den omhandler likevel mange temaer ganske grundig. Alle delene av tutorialen har eksempelkode som er rimelig forståelig også uten altfor store tyskkunskaper ;).

     

    Hvis man har fått satt opp AVR Studio med winAVR (laste ned og installere winAVR, AVR Studio 4.12 skal finne winAVR automatisk), så kan man gå rett til denne delen av tutorialen. Allerede i eksempel nr to (Schreiben eines I/O Registers) kan man få en LED til å lyse hvis man har en koblet til.

     

    Hvis man interesserer seg mer enn for bare selve programmeringen, så er også databladene fra Atmel veldig lærerike (og vanvittig laaange)

     

     

    Et par linker

    Ting man bør passe på når man designer hardware: link

    Alle AVR-mikrocontrollere: link

    Liste over alle AVR-mikrocontrollere med mulighet for sammenlikning link

     

    Enda en link på tysk... checkliste hvis noe ikke fungerer link

     

     

    Online ordbok norsk-tysk/tysk-norsk link

     

     

    Kan ellers legge til at ATMega'en er godt likt av mange for sitt lave strømforbruk (ATMega16L 1.1 mA i aktiv tilstand @ 1MHz)

  14. Vet ikke hvor interessant det er eller hvor stødig du er i tysk, men på mikrocontroller.net finner du en bra tutorial for å programmere AtMega i C. Siden har også et bra forum

     

    Kan også legge til at i den nyeste versjonen av AVR Studio 4 kan du skrive, kompilere og debugge i c. Ekstremt effektivt i forhold til å programmere i assembler.

     

    For andre som måtte være interesserte i å prøve ut en AtMega så kan jeg anbefale å kjøpe et byggesett fra www.myAVR.de. Her får man testbrett + programmerer en god del billigere enn merkevarene fra atmel, hvis jeg ikke tar helt feil (det hender jo...). Mikrocontrolleren er selvfølgelig original. Denne siden er også på tysk. Har selv bestilt derfra til norsk adresse. Betalte med paypal og porto var omtrent det samme som fra en norsk nettbutikk hvis jeg ikke husker feil.

     

    Jeg begynte med dette byggesettet til 18€. Det har innebygget programmerer, så programmering skjer med kun en vanlig LPT-kabel. Byggesettet har også en MAX232-chip (nevnt i tidligere post) og seriellkontakt.

     

    avr_board_g.jpg

  15. Jeg har enda ikke brukt programmet til å ringe med (annet enn å teste at det funka), men installasjon, registrering og kjøp av ringetid gikk smertefritt.

     

    Førsteinntrykket mitt av programmet var at det ikke så like "profesjonelt" ut som Skype, som forøvrig er min eneste sammenligning. Funksjonene så imidlertid ut til å være de samme.

     

    Bor selv i utlandet, og fant ut at Phonzo var en genial måte å skaffe seg et norsk nummer på, slik at folk hjemme kan ringe meg uten å betale en formue.

     

    Driver nå å sjekker ut mulighetene for å koble til en "IP-telefon" til Phonzo sånn at jeg slipper å sitte foran PC'en for å snakke.

×
×
  • Opprett ny...