Atmega32 - STK500 --> A/D-omvandling, hur?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sagittarius83
Inlägg: 9
Blev medlem: 22 december 2008, 23:52:31
Ort: Södertälje
Kontakt:

Atmega32 - STK500 --> A/D-omvandling, hur?

Inlägg av sagittarius83 »

Hejsan!
Jag använder en Atmega32-microprocessor i en STK500-programeringskort.

Behöver hjälp med Analog/Digital-omvandling (A/D-converter)
Jag vill skriva en kod så att:
om man skickar in 2.5Volt från en spänningskälla så ska man få 01111111, (alltså alla dioderna lyser, utom en), och om man skickar in 5Volt så ska man få 11111111, alltså alla dioder lyser. Dioderna ska motsvara spänningen man skickar in.


Jag skulle vara mycket tacksam om jag kunde få hjälp för hur man gör, då jag är nybörjare :roll: ... :?:

Tack på förhand
Användarvisningsbild
gunne
Inlägg: 2088
Blev medlem: 17 juni 2004, 15:00:31
Ort: sthlm
Kontakt:

Inlägg av gunne »

Det är inte svårt. Börja med att läsa igenom ADC-avsnittet i manualen till Atmega32 är mitt tips.

Edit: La till länken. I princip är det bara att läsa av värdet med ADCn till en variabel och sen lägga ut den på den porten du har kopplat lysdioderna till.
sagittarius83
Inlägg: 9
Blev medlem: 22 december 2008, 23:52:31
Ort: Södertälje
Kontakt:

Inlägg av sagittarius83 »

ok... jag har läst delar i manualen och tittar nu på ADC-delen. Men menar du värdena i tabellen på sid 214 man ska läsa av.
Det borde räcka med att jag modifierar en enkel kod som får en diod och blinka...?! :oops:
Behöver tjag tänka på något annat?

Tack för tipsen gunne
Användarvisningsbild
gunne
Inlägg: 2088
Blev medlem: 17 juni 2004, 15:00:31
Ort: sthlm
Kontakt:

Inlägg av gunne »

Vet du hur man blinkar en lysdiod och förstår hur det fungerar?

Om jag minns rätt är dioderna på STK500 kopplade aktivt låga så att om du lägger ut 0x0F, binärt 0000 1111, så kommer de första fyra dioderna lysa och de sista fyra vara släckta. Labba runt lite med detta så att du vet vad du håller på med i allmänhet.

Du får läsa på för att ta reda på hur man initierar AD-omvandlaren och får resultat från den. Du kan ju söka på t.ex. google för att få info om hur man använder ADC:n.

Värdet som du får ut efter en AD-omvandling kommer i standardfallet variera mellan 0 (0x000, binärt 00 0000 0000) och 1024 (0x3FF, binärt 11 1111 1111) när spänningen varierar mellan 0 och +5V. Gör sedan en CASE- eller IF-sats som tänder lämpligt antal dioder vid olika värden.

T.ex:

Kod: Markera allt

if(!ad_result)
    PORTB = ~0x00;
elseif(ad_result > 0 && ad_result < (1024/8))
    PORTB = ~0x03;
elseif(ad_result >= (1024/8) && ad_result < (1024/7))
    PORTB = ~0x07;
...
Eller nåt sånt om jag tänker rätt.

Edit: Hittade lite länkar. Här och här.
sagittarius83
Inlägg: 9
Blev medlem: 22 december 2008, 23:52:31
Ort: Södertälje
Kontakt:

Inlägg av sagittarius83 »

OK.. gunne... det är precis som du säger... mm, jag har inga problem med att få dioder och blinka, jag förstår det mesta av det... Men nu ska försöka fördjupa mig mer...

tack för knuffen :D
Ha en bra fortsatt dag
Skriv svar