Dobrý den
jsem ještě vcelku začátečník s programováním avr a chtěl jsem se zeptat co to jsou a jak se používají konfigurační bity u mikroprocesorů (momentálně pracuji s atmega 8).
Předem děkuji všem za odpověď.
Dobrý den
jsem ještě vcelku začátečník s programováním avr a chtěl jsem se zeptat co to jsou a jak se používají konfigurační bity u mikroprocesorů (momentálně pracuji s atmega 8).
Předem děkuji všem za odpověď.
zdravím
Vím že už jsem tu dlouho nebyl ale chvíli jsem byl pryč a teď jsem se vrátil a mám stále problém se zobrazení dvouciferného čísla to dvou znacích sedmisegmentového led displeje udělal jsem zkušební program pouze na to zobrazení.
Tady je :
#include <avr/io.h>
#include <avr/pgmspace.h>
unsigned int zobrazit;
uint8_t PROGMEM znaky[] = {0xC0, 0x79, 0xA4, 0x30, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x40};
int main(){
DDRD=0b11111111;
DDRC=0b11111111;
while(1){
zobrazit = 71;
for (zobrazit=0 ; zobrazit<100 ; zobrazit++)
{
PORTD=znaky[(int)(zobrazit/10)];
PORTC=znaky[(int)(zobrazit%10)];
_delay_ms(1000)
}
}
return 0;
}
ten cyklus jsem kdesi našel ale nevím jestli je správně zapsán
Chtěl bych vás poprosit jestli by jste mi nepomohli s tím jak zobrazovat i dvouciferná čísla.
Všem předem děkuji za odpověď.
děkuji a mohu se ještě zeptat jak na ten druhý znak na portu c ?
takže jestli jsem správně pochopil tak by to mělo být takhle:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
volatile unsigned int namerane;
volatile unsigned int stred;
volatile unsigned int vysledek;
ISR (TIMER1_CAPT_vect){
namerane = TCNT1;
TCNT1 = 0;
}
int main(){
DDRB &= ~(1 << PB0);
PORTB |= (1 << PB0);
DDRD = 0x00000000;
DDRC = 0x00000000;
TCCR1B |= (1 << CS12) | (1 << CS10);
TIMSK |= (1 << TICIE1);
OSCCAL = 0xA5;
sei();
while(1){
if(namerane) {
stred = namerane/976;
vysledek = 30/stred;
uint8_t vysledek; uint8_t znaky[] = {0x79, 0x23, 0x67, 0x19, 0 x12, 0x02, 0x78,0x00, 0x1 0, 0x40};
PORTD = znaky[vysledek];
namerane = 0;
}
}
return 0;
}
ale jestli jsem to tedy pochopil správně tak tímto máme vyřešen pouze PORTD , jak tedy ještě dostat ty čísla i na ten druhý znak??
Zdravím potřeboval bych poradit ještě se zobrazením na tom led display zatím mám tohle:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
volatile unsigned int namerane;
volatile unsigned int stred;
volatile unsigned int vysledek;
ISR (TIMER1_CAPT_vect){
namerane = TCNT1;
TCNT1 = 0;
}
int main(){
unsigned char blik;
DDRB &= ~(1 << PB0);
PORTB |= (1 << PB0);
TCCR1B |= (1 << CS12) | (1 << CS10);
TIMSK |= (1 << TICIE1);
OSCCAL = 0xA5;
sei();
while(1){
if(namerane) {
stred = namerane/976;
vysledek = 30/stred;
tento vysledek bych potřeboval zobrazit
namerane = 0;
}
}
return 0;
}
s tím že zapojení jsem si "navrhnul" takhle:
doufám že z toho něco vyčtete
a číslice odpovídají těmto log. hodnotám pinů :
0b01111001; //1
0b00100100; //2
0b01100111; //3
0b00011001; //4
0b00010010; //5
0b00000010; //6
0b01111000; //7
0b00000000; //8
0b00010000; //9
0b01000000; //0
Jsem ješte začátečník takže budu moc vděčný za jakoukoli pomoc s kódem.
Všem děkuju za odpovědi, tak ja se ještě kouknu na ten aplication notes a zkusím se do toho pustit.
Zasláno z mobilního telefonu.
Dobrý den
Chtěl jsem se zeptat jestli někdo nemáte zkušenosti s nějakým jednoduchým tachometrem založeném na atmega se vstupem magnetického senzoru (hallova) a zobrazeným na 7segmentovém led display.
Za jakoukoli radu se zapojením i kódem všem děkuji.