Dag allemaal,
Wil iemand mij helpen met schrijven van een programma voor looplicht met 16f871 in assambly of C
In totaal 8 uitgangen
Ritme wordt aangestuurd door een puls van 1 tot 5Khz ,dus puls moet door 1000 gedeelt worden en de richting word aangegeven door een ander pen bij 1 rechts om en bij 0 links om
Met vriendelijke groet,
[Bericht gewijzigd door d.demirel op ]
Jammer dat niemand nog gereageerd heeft!
Ik kan je helaas niet helpen met het software gedeelte maar hardware wel.
Wat ik eventueel wel voor je kan betekenen is basic voor de atmel.
Ik heb al redelijk wat ervaring met de AT90S2313 en daarmee is dit wat jij wil denk ik ook wel mogelijk.
Hardware is er al, dus ik heb geen ander keuze dan 16f871
toch bedankt,
[Bericht gewijzigd door d.demirel op ]
BjornR
Geef mij maar de oude lay-out en opmaak. Voor 4 augustus 2010 gekend onder de nickname "Cracker" | Beginners: begin met het begin, niet met het einde. De weg ernaartoe is het belangrijkst.
had het PHP scripting geweest
dan no problem maar nadat ik alle PHP-functies kan ga ik aan de C-talen beginnen te leren.
Anders wou ik je graag helpen.
Het probleem wat je voorlegt is wel heel erg basic. Waar heb je het voor nodig? Opdracht voor school?
Wat je moet doen is de poort inlezen, delen door 1000, shift operatie toepassen, wegschrijven naar een poort. Dat zijn allemaal heel simpele operaties die je in elke manual van C of assembly zelf zou moeten kunnen vinden.
Daniel
BjornR
Geef mij maar de oude lay-out en opmaak. Voor 4 augustus 2010 gekend onder de nickname "Cracker" | Beginners: begin met het begin, niet met het einde. De weg ernaartoe is het belangrijkst.
[cynical]
Waarom zou je zelf een looplichtje gaan bouwen uit een microcontroller, als je niet eens een poging waagt zelf uit te zoeken hoe je 'm moet programmeren? Koop dan gewoon een velleman kitje of zo.
[/cynical]
Kijk eens op de website van Wouter van Ooien (www.voti.nl). Hij heeft de hogere programmeertaal JAL ontwikkeld, welke redelijk makkelijk te doorgronden moet zijn met een beetje kennis van microcontrollers en programmeren in het algemeen. En er staat een aantal voorbeelden op, o.a. in JAL. Compiler is ook te vinden op die site.
Daniel
Berry
A PIC-based MP3 player: www.apic-bmp.nl.tt | Intresse in techniek? www.djoamersfoort.nl
Erm, ik snap je punt niet helemaal, waarom zou je een looplicht met een PIC willen maken? Juist de enige reden is omdat het een goede oefening is. Anders kan je wel een 4017 of soortgelijk gebruiken. Waarom probeer je het niet zelf? Kan weinig mis gaan toch? Ik kan een hint geven in C
for(;;)
{
while(!RA0) {} // wacht tot RA0 een puls krijgt
PORTB = PORTB << 1; // bitshift protb
if(CARRY) // option & 2
RB0 = 1; // volgende led in reeks
}
Zoiets komt in de main van je C code te staan. Kan je makkelijk uitbreiden. ASM lijkt me hier ook niet heel lastig. Voor goede C tutorials zoek op google
Het is uiteindelijk geen looplicht, het ging mij om een begin te hebben met een functie van puls binnen halen en deze tellen en om de 1000 keer 1 plaat van de 8 uitgangen te schuiven
Het wordt uiteindelijk vrij complex geheel, maar mij lukt het niet om die pulzen op rb4 of rb5 ( interupt-on-change pin) binnen te halen
En nu heb ik ook een doel nauw uiteindelijk echt iets te maken met de PIC controller en C
Inderdaad is met conventioneel elektronica ook te realiseren maar het gaat mij om eendelijk te leren om gaan met PIC en C .
Groetjes Durmus,
Als het met die interupts niet werkt, zou je moeten beginnen zonder die interrupts. Gewoon continu die pinnen checken, en als er iets verandert in de status je gewenst actie uitvoeren. Als je code niet in een keer werkt moet je proberen het stap voor stap in 'hapklare' brokken te schrijven.
Werken met interrupts kan namelijk best verwarrend zijn, en is lang niet altijd nodig.
Daniel
Berry
A PIC-based MP3 player: www.apic-bmp.nl.tt | Intresse in techniek? www.djoamersfoort.nl
Als je wilt werken met interrupts hangt het van de C compiler af. Bij HI-Tech Picc gaat het zo ongeveer
void interrupt i_handler(void) {
// check welk interrupt het was
}
waar dan moet je eerst de interrupts op zetten. De ingewikkeldheid valt opzich wel mee, het is gewoon de datasheet goed lezen. Succes!